7月
13
2010
CakePHPの標準機能でパンくず
投稿者: admin, カテゴリ: CakePHP, tags: CakePHP投稿日: 2010.07.13 - 15:27
更新日: 2010.07.13 - 16:02
パンくずリストはユーザビリティにも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 :
http://blog.widget-info.net/2009/12/panlist/
※CakePHP1.1ではNG、1.2で使えるゾという記事があったので、1.3.2でやってみた
※本投稿は参考文献からの引用を含みます
エントリ (RSS)