2

私はこのようなメニューを持っています:

<div id="blahblah" style="blahblah">
<a href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a>
<a href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a>
<a href="http://domain.com/folder/gallery"><img style="blahblah" src="blahblahblahblah"></a>
<a href="http://domain.com/folder/dontknow"><img style="blahblah" src="blahblahblahblah"></a>
</div>

現在表示しているページにclass="current"を自動的に追加するものが欲しいです。リンク(上記のコードでわかるように)はdomain.com/folder/biographyまたはdomain.com/のようなものです。 folder / contacts、つまり.php/.htmlなどはありません。

私は試してみました:

<div id="blahblah" style="blahblah">
<a <?php if (strpos($_SERVER['PHP_SELF'], 'biography')) echo 'class="current"';?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a>
<a <?php if (strpos($_SERVER['PHP_SELF'], 'contacts')) echo 'class="current"';?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a>
...
...
</div>

しかし、それは機能しません... stropsを使用した解決策は実行可能のようです、おそらく私はそれを間違っています..:P

4

3 に答える 3

3

あなたがすべき:

  1. strpos()withの結果を確認してください!== false
  2. $_SERVER['REQUEST_URI']ではなく使用し$_SERVER['PHP_SELF']ます。
  3. 関数内にコードをラップします。

このようなもの:

<?php
function get_current($name) {
  if (strpos($_SERVER['REQUEST_URI'], $name) !== false)
    echo 'class="current"';
}
?>

<div id="blahblah" style="blahblah">
  <a <?php get_current('biography') ?> href="http://domain.com/folder/biography"><img style="blahblah" src="blahblahblahblah"></a>
  <a <?php get_current('contacts') ?> href="http://domain.com/folder/contacts"><img style="blahblah" src="blahblahblahblah"></a>
  ...
  ...
</div>
于 2012-06-04T16:35:49.260 に答える
1

の代わりにstrpos()、これを試すことができます:

<?php $current = basename($path, ".php"); ?>

<a href="blahblah"<?php if ($current == 'biographies') echo ' class="current"'; ?> />

$current拡張子を除いた現在のファイルの名前です.php

于 2012-06-04T16:33:42.280 に答える
1

位置が0の場合、PHPではFALSEと評価されます。特に戻り値、つまり>=0を確認する必要があります。

于 2012-06-04T16:25:39.990 に答える