1

次の HTML マークアップで、jQuery ではなく PHP を使用して、現在のページの対応するハイパーリンクに「アクティブな」クラスを挿入するソリューションを見つけようとしています。

<nav class="menu">
<ul>
<li><a href="/">Index</a></li>
<li><a href="/email">Email</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>

ページ上のユーザー/about、PHP はクラスを適用します<a class="active" href="/about">About</a>

PHPでこれを行う簡単な方法はありますか?

4

2 に答える 2

2

メニューで使用/区別したい現在のURIの正確な部分を含む変数/関数が必要になります。「どういうわけか」それができない場合は、解析$_SERVER['REQUEST_URI']する方法があります。したがって、それはURIの構造に依存するか、最後に述べた変数が機能するかどうかによって異なります。

現在実際のURIの一部を返す関数があると仮定するとcurrentPage()、次のように進むことができます

<?php
// $currentPage = currentPage();
// $currentPage = preg_replace([.............]); // ???
// $currentPage = "about"; // ?????
?>

したがって、$currentPage今ではさまざまなアプローチでそれを行うことができます。

<ul>
<li><a <?php if ($currentPage === "") print('class="active"');?> href="/">Index</a></li>
<li><a <?php if ($currentPage === "email") print('class="active"');?> href="/email">Email</a></li>
<li><a <?php if ($currentPage === "about") print('class="active"');?> href="/about">About</a></li>
</ul>

また

<ul>
<?php
$pages = array('' => 'Index','email' =>'Email','about'=>'About');
foreach ($pages as $page => $title) {
?>
    <li><a <?php if ($curretPage === $page) print('class="active"');?> href="<?php print('/'.$page);?>"><?php print($title);?></a></li>
<?php
}
?>
</ul>
于 2013-05-30T00:48:38.443 に答える
0
<a class="<?php
     echo ($_SERVER['REQUEST_URI']=="/about"?"active":"inactive");
?>" href="/about">
    About 
</a>
于 2013-05-30T00:40:09.757 に答える