CakePHPで静的なページ(静的とは限らないけど)を作っていてわりと悩むのがパンくずリストの作り方。パンくずリストってページの下層の方のリンクになれば完全に個別ですけど、トップページへのリンクの部分なんて、どのページでも一緒じゃないですか。
だから僕の場合はelementsにpankuzu.ctpみたいなファイルを作って常にそれをrenderElementするようにしてるんですよ。あとはスイッチ文を使って、コントローラーごとに表示を分けるような感じで。
<?php
     switch($this->params['controller']) {
          case 'users':
               $name = 'ユーザー情報';
               break;
          case 'contacts':
               $name = 'お問い合わせ';
               break;
          case 'company':
               $name = '会社概要';
               break;
     }
     if($this->params['action'] != 'index') {
          $link = $html->link($name, '/'.$this->params['controller'].'/').' > ';
     } else {
          $link = ' ';
     }
     echo $html->link('トップ', '/home/').' > '.$link;
?>まあ、大雑把に書くとこんな感じですね。これなら、たとえば会社概要のページを作っているコントローラーがあるとして(上の場合でいうcompany)、そこに会社概要(アクションはindex)とスタッフ情報(アクションはstaff)があるとしたらだったら
// company/index/の場合
<?php echo $this->renderElement('pankuzu') ?>
// company/staff/の場合
<?php echo $this->renderElement('pankuzu') ?>スタッフ情報こんな風に書けば、ページに表示されるのはそれぞれ、
トップ > 会社概要
まあ、基本PHP部分しかないからvendorsとかの方が良いのかもしれないけど? とりあえずはこんな感じでいつも対処してます。
してますが、でもこれ、上記くらいの感じならそれなりにさっぱりまとめられるんですが、アクションのさらに下層のページがいくつもあったり(スタッフ情報の下に個別スタッフの紹介ページがあってさらにその下に何かしらのページがあるとか)、indexじゃないページでも表示されるパンくずリストが トップ > 該当のページ だけだったりとかすると、意外とソースが汚くなります。まあ、僕の書き方の問題もあるんですけど。
分かりやすくコンパクトにまとめるためにわざわざelements以下にファイルを作ってるのだから、あまりごちゃごちゃしたソースになっても仕方ないしぃ……。
何か上手いパンくずリストの書き方って、ないもんですかねぇ。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。
 
        

 
                         
                                 
                         
                                 
                         
                                 
                         
                                 
                             
                            