パンくずリストはユーザビリティにもSEOにもたぶん良いだろう。
単体で実現する
「 TOP > hoge2 > hoge 」という結果を得るためには、単にviewに次のように記述すれば良い。ただし、addする順番には注意すること。
$html->addCrumb('hoge2', array('controller'=>'hoge2'));
$html->addCrumb('hoge', array('controller'=>'hoge'));
echo $html->getCrumbs(' > ', 'TOP');
汎用性を高める
単体と同じ結果を得るとしても汎用的に使えるようにする場合は次のようにする。
- 任意の変数(配列)を展開してパンくずを作成し返却する element を作る
- view に element を追加する
- controller もしくは view で任意の変数に配列を渡す
スポンサードリンク
elements/breadcrumb.ctp
<?php
foreach($breadcrumb as $val) {
$option = (isset($val['option'])) ? $val['option'] : array();
$link = (isset($val['link'])) ? $val['link'] : null;
$html->addCrumb($val['name'], $link, $option);
}
if(!isset($separator)) $separator = " > ";
if(!isset($top)) $top = 'Home';
echo $html->getCrumbs($separator, $top);
?>
view で行う場合
$breadcrumb = array(
array("name" => "hoge2" , "link" => "/hoge2"),
array("name" => "hoge" , "link" => "/hoge" ),
);
echo $this->element('breadcrumb', array("breadcrumb" => $breadcrumb));
controller で行う場合のcontroller
$breadcrumb = array(
array("name" => "hoge2" , "link" => "/hoge2"),
array("name" => "hoge" , "link" => "/hoge" ),
);
$this->set('breadcrumb', $breadcrumb);
controller で行う場合の view
echo $this->element('breadcrumb', array("breadcrumb" => $breadcrumb));
参考文献
- CakePHPでパンくずリストを表示するサンプル YARETOKO「ヤレトコ」メインブログ :
http://mick.blog16.jp/index.php/main/2008/07/23/cakephp_breadcrumbs - CakePHP パンくずリストについて | WIDGET-INFO :
CakePHP パンくずリストについてさて、今回はCakePHPのパンくずリストについてです。パンくずリストはご存知の方は多いかと思います。ただプログラムを組むとなると、無駄に時間をかけたくはない
※CakePHP1.1ではNG、1.2で使えるゾという記事があったので、1.3.2でやってみた
※本投稿は参考文献からの引用を含みます


コメント