- ベストアンサー
PHPを使用してコーポレイトサイトのナビゲーションの現在地を切り替える方法
- コーポレイトサイトでPHPを使用してナビゲーションの現在地を切り替えたい場合、include文を使用して共通のナビゲーションを読み込むことができます。
- 各ページのナビゲーション項目には条件分岐を追加し、現在のページと一致する場合には<strong>strong</strong>タグを使用して内容を強調表示することができます。
- この方法を使用すれば、index.htmlにアクセスした場合は<strong>ホーム</strong>、service.htmlにアクセスした場合は<strong>サービス</strong>、company.htmlにアクセスした場合は<strong>会社概要</strong>、contact.htmlにアクセスした場合は<strong>お問い合わせ</strong>と、それぞれのページごとに現在地を切り替えることができます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
単に共通のナビ欄からリンクを外したいだけですよね? いろいろな方法がありますが、素人ということで見た目に分かりやすい置換ではどうでしょう。 =====include.php====== <?php //変数に一旦全部入れる。 $line = <<<EOF <ul> <li><a href="index.html">ホーム</a></li> <li><a href="service.html">サービス</a></li> <li><a href="company.html">会社概要</a></li> <li><a href="contact.html">お問い合わせ</a></li> </ul> EOF; //実行中のページ名を取得 $current_page = basename( $_SERVER['PHP_SELF']); //置換前の部分を設定 $reg = "#<li><a href=\"$current_page\">(.+)</a></li>#i"; //置換して出力 echo preg_replace($reg,"<li><strong>$1</strong></li>",$line);
その他の回答 (3)
- JaneDue
- ベストアンサー率75% (263/350)
補足拝見しました。置換前の状態が今ひとつよく分からないのですが、実際のinclude.phpでは <a href="index.html">ホーム</a>だけではなく、 <a href="../aaa/bbb/index.html">○○○</a> <a href="http://domain.com/aaa/bbb/">△△△△</a> など、いろいろな書式が混ざっている、ということでしょうか? 様々な階層に同名ファイルもあるようなら、この方法は面倒でダメですね。 リンクをすべてhttp://~の絶対パスで統一できませんか? それなら現在のURLを置換するだけなので簡単ですが…。
お礼
JaneDueさんありがとうございます。 説明不足ですみません。 実際のinclude.phpでは絶対パスのみです。 もし案件によって相対パスなどがあった場合に出来るのかなと思っただけでした。 include.phpに関しては今後も絶対パスで統一するようにします。 ホント助かりました、 ありがとうございます。
- jojo_
- ベストアンサー率20% (2/10)
先ほど回答した者です。 パンくずのことですね。 先のURLを取得して以下のようにやってみるのはどうでしょう? (if文で分岐させて表示内容を変える方法です) ※実験していないので適宜書き換えて下さい // ここでURLを変数に格納して。。。例えば $file <?php if ($file === "index.html"){ ?> // indexの時は<strong>タグ <ul> <li><strong>ホーム</strong></li> <?php }else{ ?> // indexの時ではない時<a>タグ <ul> <li><a>ホーム</a></li> ← ※現在地 <?php } ?>
お礼
休日に返信いただきありがとうございます。 パンくずではなく、ナビゲーションのことなのですが パンくずもstrongにしたかったので良かったです。 この方法を試して見ます。
- jojo_
- ベストアンサー率20% (2/10)
対象ファイルの文字列をチェックして、その時に現在地(TITLEのことですかね?)を動的に変更すればどうでしょうか? ex. <strong><?php echo $genzaichi; ?></strong> 参考 http://d.hatena.ne.jp/notintrade/20071213/1197557773
補足
回答をありがとうございます。 jojo_さんすみません、私の説明が悪かったです。 可能でしたら再度教えて頂けないでしょうか? 以下のようにincludeした時に、<a>タグを<strong>に変更したいです。 <例> <?php include("include.php"); ?> # index.html(ホーム) <ul> <li><strong>ホーム</strong></li> ← ※現在地 <li><a href="service.html">サービス</a></li> <li><a href="company.html">会社概要</a></li> <li><a href="contact.html">お問い合わせ</a></li> </ul> # service.html(サービス) <ul> <li><a href="index.html">ホーム</a></li> <li><strong>サービス</strong></li> ← ※現在地 <li><a href="company.html">会社概要</a></li> <li><a href="contact.html">お問い合わせ</a></li> </ul> # company.html(会社概要) <ul> <li><a href="index.html">ホーム</a></li> <li><a href="service.html">サービス</a></li> <li><strong>会社概要</strong></li> ← ※現在地 <li><a href="contact.html">お問い合わせ</a></li> </ul> # contact.html(お問い合わせ) <ul> <li><a href="index.html">ホーム</a></li> <li><a href="service.html">サービス</a></li> <li><a href="company.html">会社概要</a></li> <li><strong>お問い合わせ</strong></li> ← ※現在地 </ul>
補足
JaneDueさんありがとうございます。 試したら一発でstrongに変換されちょっと感動しました(>_<) <a href="index.html">ホーム</a>はstrongになったのですが、 以下のようなパスだとstrongになりませんでした。 ../aaa/bbb/index.html /aaa/bbb/index.html http://domain.com/aaa/bbb/ http://domain.com/aaa/bbb/index.html 度々すみませんが、宜しければ教えてください。