2011-01-12 4 views
4

私はWordpressテンプレート上にメニューを作成しており、現在のページを検出して強調表示するためのメニューが必要です。だから、例えば、私のメニューは次のとおりです。phpを使用してページファイル名を検出していますか?

<li><a href="index.php" class="current">Home</a></li> 
<li><a href="about.php">About</a></li> 

ユーザーがについてのページにあるのであれば、私は1つが、「現在のクラスを=」持っていることを望みます。これはどのように可能ですか? $_SERVER['PHP_SELF']の使用は可能ですか?私はPHPコーディングでゼロ知識を持っているので、親切にすべての返信を確認していただければ幸いです。

答えて

11

このような小さなスニペットを使用します。訪問者がabout.phpの場合、$basenameaboutに等しくなります。

$basename = substr(strtolower(basename($_SERVER['PHP_SELF'])),0,strlen(basename($_SERVER['PHP_SELF']))-4); 

HTMLは次のようなものです。関心の外

<li><a href="index.php"<?php if ($basename == 'index') echo ' class="current"'; ?>>Home</a></li> 
<li><a href="about.php"<?php if ($basename == 'about') echo ' class="current"'; ?>>About</a></li> 
+0

優秀、あなたはhtmlコードで$ basenameをどのように使用するのか教えてください。私が言及したように、PHPに関する知識とその使い方は文字通りゼロです。 – alexander

+0

が更新されました。希望が役立ちます。 – Dutchie432

+1

はい。そこには1つから多くの引用符がありましたが、これはうまくいきました:) – alexander

0

フォームのようなものを使用することができます:

<li><a href="index.php"<?php if($_SERVER['PHP_SELF'] == 'index.php') echo ' class="current"'); ?>>Home</a></li> 
<li><a href="about.php"<?php if($_SERVER['PHP_SELF'] == 'about.php') echo ' class="current"'); ?>>About</a></li> 

あなたはおそらく機能に上記を取り入れたいと思うでしょう、と述べました。

さらに、先に進む前に、PHPマニュアルのgetting started sectionを読むことをお勧めします。それは、賢明に費やされる時間です。

+0

、なぜ私はあなたの例が動作するかどうかの関数に組み込む必要があるでしょうか? – alexander

+0

また、 'PHP_SELF'] == 'index.php'はindex.php?random ...というURLを検出しますか? – alexander

+0

@alexander 1.これを関数に含める必要はありません。ちょうどいいところであり、将来の改善のための中心的な場所を提供します。 2. PHP_SELFは現在実行中のスクリプトのファイル名なので、クエリ文字列argsは含まれません。 –

1
$myPage = $_SERVER['PHP_SELF']; 
<li><a href="index.php" class="<?echo ($myPage == 'index.php'?'current':'')?>">Home</a></li> 
<li><a href="about.php" class="<?echo ($myPage == 'about.php'?'current':'')?>">About</a></li> 
関連する問題