【问题标题】:Highlight active page in navigation在导航中突出显示活动页面
【发布时间】:2013-05-30 08:53:59
【问题描述】:

我正在尝试找到一种解决方案,使用 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 应用类 &lt;a class="active" href="/about"&gt;About&lt;/a&gt;

有没有一种简单的方法可以用 PHP 做到这一点?

【问题讨论】:

  • 取决于您是否有一些 MVC 或任何软件来构建路径模式。

标签: php html navigation


【解决方案1】:

您需要有一个变量/函数,其中包含您希望在菜单中使用/区分的当前 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>

【讨论】:

  • 方法 #2 将是要走的路。
【解决方案2】:
<a class="<?php
     echo ($_SERVER['REQUEST_URI']=="/about"?"active":"inactive");
?>" href="/about">
    About 
</a>

【讨论】:

  • 非活动类是否必要?如果所有超链接都是相对的,不包括域,我会输入什么?
猜你喜欢
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多