phpでパンくずリスト自動生成(ディレクトリ名とファイル名):メモ

悩み
悩み

ちゃんと参考となるコードはあるのにphp素人だと悩んでしまったので、メモとして。

phpでパンくずの参考コードは簡単に見つかるかと思ったのですがそうでもなく、自分で組むこともできないため難儀しました。

それだけ初歩なのだと思いますが、初歩の情報ほど見つけにくい傾向があるので結構困ることが多いです。

特にコード関連は記号ばかりで、検索してもノイズの割合が非常に大きい印象です。基礎から学ぶ場合は書籍などの方が調べやすいかもしれません。

構築環境
PHP5.2

目的

今回の目的は、phpでパンくずを自動生成する方法です。WordPressなどのCMSには関連しません。

よくあるパターンとしては、事前にディレクトリ構成やファイル名などを設定し、それを動的に書き出す方法が多い印象です。

しかし、これですとページ追加の度に設定も追加せねばならず、自動化というよりは半自動化といった感じでした。

今回実現したかったのはコードを読み込むだけでパンくず自動的に表示する方法です。

phpでパンくず自動生成

phpで動的にパンくずを作る方法は下記のサイトで公開されていました。

  • [PHP]パンくずリスト完成 (http://www.ecdaa.com/2013/05/php_8810.html)
    [追記:2019.8.22]上記の参考ページの消失を確認。

が、参考コードをそままコピペしても使えません。応用が利かないのがphp初心者たる所以ですね…。
結論から言えば上記サイトの説明文を読めばわかる話ではあるのですが、何度も読みつつ試してようやく以下のコードで動きました。


<?php
$currentPath = $_SERVER['REQUEST_URI'];
$filePath = "<a href='/'>TOP</a>";

$separatedPath = explode("/",$currentPath);
$separatedPath = array_filter($separatedPath,"strlen");
$separatedPath = array_values($separatedPath);
$url="";
foreach($separatedPath as $p){
$url .= "/".$p;

$filePath .= " > "."<a href=".$url.">".$p."</a>";
}
?>

$urlをhrefに入れ込めばいいだけであり、何ら難しいことも無かったという結果です。

なお、表示方法は以下のコードを表示したい箇所に書くだけです。


<?php echo $filePath; ?>

わずかにカスタム

上記のままだとaタグがそのまま並ぶだけなので、パンくずの外側にdivを付けた形にしてみました。


<?php
$currentPath = $_SERVER['REQUEST_URI'];
$filePath = "<a href='/'>TOP</a>";

$separatedPath = explode("/",$currentPath);
$separatedPath = array_filter($separatedPath,"strlen");
$separatedPath = array_values($separatedPath);
$url="";
foreach($separatedPath as $p){
$url .= "/".$p;

$filePath .= " > "."<a href=".$url.">".$p."</a>";
}
$breadcrumb = "<div id='breadcrumb'>".$filePath."</div>";
?>

表示用のコードは以下の通り


<?php echo $breadcrumb; ?>

結び

参考コードがあるとなんとなくわかるような気がするのですが、0から作ることが未だにできないのが痛いですね…。

しかし、現状ではディレクトリ名とファイル名しかとれません。ページのタイトルを取得してアンカーに設定できないと実用には向きませんね。

34人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄