phpでパンくずリストを自動的に生成できるようなプログラムを作成しましたので説明します。
かなりシンプルです。
ホーム > 和食
↓のメニューリストをクリックしてください。
ページタイトル | path |
---|---|
ホーム | /index.php |
和食 | /wa/index.php |
麺 | /wa/men/index.php |
うどん | /wa/men/udon.php |
そば | /wa/men/soba/index.php |
ざるそば | /wa/men/soba/zaru.php |
韃靼そば | /wa/men/soba/dattan.php |
<? // メニューリスト $_menu = array( "/index.php" => "ホーム", "/wa/index.php" => "和食", "/wa/men/index.php" => "麺", "/wa/men/udon.php" => "うどん", "/wa/men/soba/index.php" => "そば", "/wa/men/soba/zaru.php" => "ざるそば", "/wa/men/soba/dattan.php" => "韃靼そば", ); // 現在のページのパス 例)/wa/men/soba/zaru.php $path = $_SERVER["PHP_SELF"]; // urlの書き換えなどしてる場合は下記のように現在のページのパスを取得 #$parse_url = parse_url($_SERVER["REQUEST_URI"]); #$path = $parse_url["path"]; // ディレクトリで区切って配列に格納 例)array( "" , "wa" , "men" , "soba" , "zaru.php" ) $array_path = explode("/",$path); $tmp1 = ""; foreach($array_path as $val){ // 末尾に / をつける 例)null ⇒ / 例) wa ⇒ wa/ // 前データと連結 例)/ + wa/ ⇒ /wa/ $tmp1 .= "{$val}/"; // 末尾に index.php をつける 例)/wa/ ⇒ /wa/index.php $tmp2 = "{$tmp1}index.php"; // ファイル名が連続する場合は /index.php を削除 例) zaru.php/index.php ⇒ zaru.php $tmp2 = str_replace(".php/index.php",".php",$tmp2); // パスとページタイトルを配列に格納 $breadcrumns[$tmp2] = $_menu[$tmp2]; } // パンクズ出力 ?><p> <?foreach($breadcrumns as $key => $val){?> <?=($path==$key)?$val:"<a href=\"{$key}\">{$val}</a> > "?> <?}?> </p>
下記のように関数化しても良いと思います。
<? // パンくずを生成する関数 function breadCrumns($path,$_menu){ $array_path = explode("/",$path); foreach($array_path as $val){ @$tmp1 .= "{$val}/"; $tmp2 = str_replace(".php/index.php",".php","{$tmp1}index.php"); $breadcrumns[$tmp2] = $_menu[$tmp2]; } return $breadcrumns; } ?>
Copyright(C) systemexpress.co.jp All Rights Reserved. Author Takayuki Yukawa