如何添加课程' active'在包含菜单的菜单锚点上用PHP

时间:2018-02-02 23:39:13

标签: php jquery include

我的情况: 我有几个页面,如home.phpabout.phpgallery.php ... 在所有这些页面中,我包含带有php的锚点的菜单。所以菜单不在页面中。在所有页面中,我都有一行:include('includes/menu.php'); 我想要实现的目标:如果url是mydomain.com /gallery.php,菜单中的锚点应该有一个额外的类"active",所以我可以设置不同的样式(当前页面打开)。

我用jquery尝试过: 我给了所有主持人一个类"clickable",如下所示:

<ul class="main-menu">
     <li><a class="clickable" href="index.php">Home</a></li>
     <li><a class="clickable" href="gallery.php">Gallery</a></li>                        
     <li><a class="clickable" href="openingtimes.php">Openingtimes</a></li>
 </ul>

并加载此jquery代码:

$(document).ready(function()
{
   $(function() {                       //run when the DOM is ready
      $(".clickable").click(function() { 
      $(this).addClass("active");      //add the class to the clicked  element
      });
   });
});

但是出现的问题是:当点击主播时,让我们说gallery.php,它会获得课程&#34;有效&#39;很快,但gallery.php正在加载,菜单再次通过PHP包含。当然,这只有在你停留在同一页面时才有效。

在加载特定页面时,如果使用这种情况使锚点处于活动状态,我能做些什么? 也许阅读网址,然后在这个网址的基础上添加一个类到锚?

1 个答案:

答案 0 :(得分:2)

使用$_SERVER['PHP_SELF']$_SERVER['REQUEST_URI']

尝试使用:

<ul class="main-menu">
    <li><a class="clickable <?php if($_SERVER['PHP_SELF'] == '/index.php') { echo "active"; } ?>" href="index.php">Home</a></li>
    <li><a class="clickable <?php if($_SERVER['PHP_SELF'] == '/gallery.php') { echo "active"; } ?>" href="gallery.php">Gallery</a></li>
    <li><a class="clickable <?php if($_SERVER['PHP_SELF'] == '/openingtimes.php') { echo "active"; } ?>" href="openingtimes.php">Openingtimes</a></li>
</ul>

还要确保文件是否在另一个目录中以添加名称ex。 if($_SERVER['PHP_SELF'] == '/folder/index.php')

文档:http://php.net/manual/en/reserved.variables.server.php