Re: オートナビブロックをカスタマイズしてパンくずを作成して第2階層から表示したい

2012年6月12日 at 3:42

# concrete5 バージョン
5.5.1

以下topic_path.phpという名前でconcrete/blocks/autonav/view.phpを利用したパンくずのテンプレートを作成中なのですが、
英語ページを作成する場合に template/index.php/english以下のタイトルをパンくず表示させたいと考えています。englishページ他、第2階層から表示させる方法がわかりかねてます。使用中のテンプレートまるごと貼り付けますので、分かる方いらっしゃいましたらご教授お願い致します。

defined('C5_EXECUTE') or die("Access Denied.");
$controller = new AutonavBlockController;
$controller->orderBy = 'display_asc';
$controller->displayPages = 'top';
$controller->displayPagesCID = 0;
$controller->displayPagesIncludeSelf = 0;
$controller->displaySubPages = 'relevant_breadcrumb';
$controller->displaySubPageLevels = 'enough';
$controller->displaySubPageLevelsNum = 0;
$controller->displayUnavailablePages = 0;

$aBlocks = $controller->generateNav();
$containsPages = false;

$nh = Loader::helper('navigation');

//this will create an array of parent cIDs
$inspectC=$c;
$selectedPathCIDs=array( $inspectC->getCollectionID() );
$parentCIDnotZero=true;
while($parentCIDnotZero){
$cParentID=$inspectC->cParentID;
if(!intval($cParentID)){
$parentCIDnotZero=false;
}else{
$selectedPathCIDs[]=$cParentID;
$inspectC=Page::getById($cParentID);
}
}

foreach($aBlocks as $ni) {
$_c = $ni->getCollectionObject();
if (!$_c->getCollectionAttributeValue('exclude_nav')) {


$target = $ni->getTarget();
if ($target != '') {
$target = 'target="' . $target . '"';
}


$thisLevel = $ni->getLevel();

$pageLink = false;

if ($_c->getCollectionAttributeValue('')) {
$subPage = $_c->getFirstChild();
if ($subPage instanceof Page) {
$pageLink = $nh->getLinkToCollection($subPage);
}
}

if (!$pageLink) {
$pageLink = $ni->getURL();
}

if ($i == 0) {

} else {
$title = sprintf('<span class="add_arrow">%s</span>', $ni->getName());
}

if ($c->getCollectionID() == $_c->getCollectionID()) {
echo $title;
} else {
echo('<a href="' . $pageLink . '" ' . $target . ' >' . $title . '</a>');
}
$lastLevel = $thisLevel;
$i++;


}
}

タグ:

Re: Re: オートナビブロックをカスタマイズしてパンくずを作成して第2階層から表示したい

2012年6月12日 at 5:20
「オートナビ」ブロックの設定で[表示開始レベル]を「階層レベル2」にすれば、第2階層のenglishから表示されます。英語ページはページタイプを分けておくと管理しやすいかもしれませんね。

ちなみに、多言語サイトを作るなら Internationalization というアドオンもありますが、私は使ったことが無いです…。
 

Re: Re: オートナビブロックをカスタマイズしてパンくずを作成して第2階層から表示したい

2012年6月19日 at 5:58
返答ありがとうございました!(返信遅くなってすみません)

英語ページのパンくずで、日本語のホームのパンくずを消すまではできたのですが、英語ページのHomeパンくずリストの▶が消せなくて悩んでいたのですが、CSSで右側に表示に変更して、現在値のパンくずにリストを表示させない方法で解決できました。