dポイントプレゼントキャンペーン実施中!

コーポレイトサイト(htmlによる静的なサイト)で
ヘッダーナビなど共通部分をPHP includeしてみたのですが
ナビゲーションの現在地をページ毎に切り替える方法はあるのでしょうか?
ご存じでしたら是非教えてください。
例えば以下のソース

<例>
# index.html
<?php include("include.php"); ?>

# include.php
<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>

index.htmlにアクセスした時は、ホームのみ<strong>ホーム</strong>、
service.html時は、サービスのみ<strong>サービス</strong>、
company.html時は、会社概要のみ<strong>会社概要</strong>、
contact.htmlは、お問い合わせのみ<strong>お問い合わせ</strong>、
と現在地を切り替えたいです。
何か条件によって切り替えるシンプルな方法があると助かります。

phpは素人なので意味不明な事を言っていたらすみません、
よろしくお願いいたします。

A 回答 (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);

この回答への補足

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

度々すみませんが、宜しければ教えてください。

補足日時:2012/06/18 21:15
    • good
    • 0

補足拝見しました。

置換前の状態が今ひとつよく分からないのですが、実際のinclude.phpでは <a href="index.html">ホーム</a>だけではなく、 
<a href="../aaa/bbb/index.html">○○○</a>
<a href="http://domain.com/aaa/bbb/">△△△△</a>
など、いろいろな書式が混ざっている、ということでしょうか?

様々な階層に同名ファイルもあるようなら、この方法は面倒でダメですね。
リンクをすべてhttp://~の絶対パスで統一できませんか?
それなら現在のURLを置換するだけなので簡単ですが…。
    • good
    • 0
この回答へのお礼

JaneDueさんありがとうございます。
説明不足ですみません。
実際のinclude.phpでは絶対パスのみです。
もし案件によって相対パスなどがあった場合に出来るのかなと思っただけでした。
include.phpに関しては今後も絶対パスで統一するようにします。

ホント助かりました、
ありがとうございます。

お礼日時:2012/06/19 13:49

先ほど回答した者です。


パンくずのことですね。

先の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 } ?>
    • good
    • 0
この回答へのお礼

休日に返信いただきありがとうございます。
パンくずではなく、ナビゲーションのことなのですが
パンくずもstrongにしたかったので良かったです。
この方法を試して見ます。

お礼日時:2012/06/18 21:01

対象ファイルの文字列をチェックして、その時に現在地(TITLEのことですかね?)を動的に変更すればどうでしょうか?



ex.
<strong><?php echo $genzaichi; ?></strong>

参考
http://d.hatena.ne.jp/notintrade/20071213/119755 …

この回答への補足

回答をありがとうございます。
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>

補足日時:2012/06/17 12:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!