突出显示导航中的活动页面

时间:2013-05-30 00:32:03

标签: php html navigation

我正在尝试找到一个使用PHP而不是jQuery的解决方案,在以下HTML标记中将“活动”类插入当前页面的相应超链接中:

<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做到这一点吗?

2 个答案:

答案 0 :(得分:2)

您需要拥有一个变量/函数,其中包含您希望在菜单中使用/区分的当前URI的确切部分。如果你“某种程度上”不能拥有它,那么解析$_SERVER['REQUEST_URI']是一种方法。因此,它将取决于您的URI的结构,或者最后提到的变量甚至可以工作,取决于。

假设您有一个函数currentPage(),它返回当前实际的URI的一部分,您可以使用以下

<?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>

答案 1 :(得分:0)

<a class="<?php
     echo ($_SERVER['REQUEST_URI']=="/about"?"active":"inactive");
?>" href="/about">
    About 
</a>