LoginSignup
2
1

More than 5 years have passed since last update.

concrete5 多言語サイトで使えるパンくず用オートナビカスタムテンプレートサンプル

Last updated at Posted at 2016-03-17

concrete5 でパンくずを表示させるときは、オートナビブロックのパンくず (breacrumb.php) なカスタムテンプレートを使います。

しかし、concrete5 の多言語機能を使うと、各言語のトップページが第1階層に下がってしまうため、パンくずの設定をトップではなくて、第2階層化表示させるという設定にすると、どうしても、各言語のトップページが表示されなくなってしまいます。

ちょっと強引ですが、オートナビブロックのパンくずのカスタムテンプレートを改造して、多言語サイトな concrete5 サイトでのパンくずもきちっと各言語のトップページが表示されるカスタマイズをお教えします。

下記のサンプルコードを
自分のサイトの HTML に合わせるよう修正し、
breadcrumb.php という名前で、

/application/blocks/autonav/templates/breadcrumb.php

に保存してみてください。

filename=breadcrumb.php
<?php defined('C5_EXECUTE') or die("Access Denied.");

$navItems = $controller->getNavItems(true); // Ignore exclude from nav
$c = Page::getCurrentPage();

switch($controller->displayPages) {
    case 'current':
        $cParentID = $controller->cParentID;
        if ($cParentID < 1) {
            $cParentID = 1;
        }
        break;
    case 'top':
        // top level actually has ID 1 as its parent, since the home page is effectively alone at the top
        $cParentID = 1;
        break;
    case 'above':
        $cParentID = $controller->getParentParentID();
        break;
    case 'below':
        $cParentID = $controller->cID;
        break;
    case 'second_level':
        $cParentID = $controller->getParentAtLevel(2);
        break;
    case 'third_level':
        $cParentID = $controller->getParentAtLevel(3);
        break;
    case 'custom':
        $cParentID = $controller->displayPagesCID;
        break;
    default:
        $cParentID = 1;
        break;
}

$cParent = Page::getByID($cParentID);
if (count($navItems) > 0) { ?>
    <div class="breadcrumb">
        <ul>
            <li><a href="<?php echo $cParent->getCollectionLink();?>"><?php echo h($cParent->getCollectionName()); ?></a></li>
            <?php
                foreach ($navItems as $ni) {
                    if ($ni->isCurrent) {
                        echo '<li><span class="active">' . $ni->name . '</span></li>';
                    } else {
                        echo '<li><a href="' . $ni->url . '" target="' . $ni->target . '">' . $ni->name . '</a></li>';
                    }
                }
            ?>
        </ul>
    </div>
<?php  
} else if (is_object($c) && $c->isEditMode()) { ?>
    <div class="ccm-edit-mode-disabled-item"><?php echo t('Empty Auto-Nav Block.')?></div>
<?php }

以上

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1