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


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 }

以上