在页面或子页面上使用PHP将活动类添加到导航链接?

时间:2014-04-27 23:50:01

标签: javascript php jquery html css

我在这个网站和网络上看到了很多这类问题,但我找不到我想要做的具体答案。我不想使用JS,我希望尽可能少地使用它,但如果我必须使用它。

我希望使用PHP在该页面打开时向导航链接添加活动类,或者打开下拉菜单(我所指的子页面)中的页面。这是我的代码。

在我的所有页面中,我都“包含”了以下内容:

<?php include('includes/header.php'); ?>

作为该页面的一部分,我有以下内容:

<ul class="firstbar">
    <li class="item"><a href="index.php">Home</a></li>
    <li class="item has-dropdown">
        <a href="about.php">About Us</a>
        <ul class="dropdown">
        <li><a href="about.php#about">G2 Drivers</a></li>
        <li><a href="about.php#locations">Locations</a></li>
        <li><a href="about.php#instructors">Instructors</a></li>
        </ul>
    </li>
    <li class="item has-dropdown">
        <a href="services.php">Services</a>
        <ul class="dropdown">
        <li><label>In-car</label></li>
        <li><a href="services/defensivedriving.php">Defensive Driving</a></li>
        <li><a href="services/incarlessons.php">In-car Lessons</a></li>
        <li class="divider"></li>
        <li><label>In-class</label></li>
        <li><a href="services/curriculum.php">Curriculum</a></li>
        </ul>
    </li>
</ul>

您可以在这里查看测试网址:www.mrobertsdesign.ca/g2drivers/(活动类已经可用,但不确定如何添加它)

需要将活动类添加到锚链接标记之前的列表项标记中,如下所示:

    <li class="active item"><a href="index.php">Home</a></li>

about.php页面有一个下拉菜单,但它只与该页面的某些部分进行哈希链接。但对于像services.php这样的页面,它有一个下拉到不同的页面,我希望'Services'列表项标签也有活动类,所以没有什么不同。如下所示:

    <li class="active item has-dropdown">
        <a href="services.php">Services</a>
        <ul class="dropdown">
        <li><label>In-car</label></li>
        <li><a href="services/defensivedriving.php">Defensive Driving</a></li>
        <li><a href="services/incarlessons.php">In-car Lessons</a></li>
        <li class="divider"></li>
        <li><label>In-class</label></li>
        <li><a href="services/curriculum.php">Curriculum</a></li>
        </ul>
    </li>

到目前为止我在查看的任何问题中都找不到的事情是,如果当前在下拉菜单中的某个页面上有一个问题,那么大多数问题似乎都没有包括下拉菜单的想法,代码通常包括查找当前页面等,所以到目前为止我无法使用它来解决这个问题。

感谢所有帮助!谢谢!


@ 1andsock回答了下面问题的前半部分,但我有几个页面位于不同的文件夹中并且具有相同的名称,因此脚本在这些情况下不起作用。对于任何想要看一眼并希望帮助我的人来说,这将是非常棒的=)

Add class="active" to active page using PHP

这是一篇与我刚刚看到的类似的文章,它似乎回答了我正在寻找的东西,但它有一个“无效”类,我只是希望它是'活跃的'或者只是没有显示活动。

2 个答案:

答案 0 :(得分:2)

我没有测试过这个,但为什么你不能这样做:

<?php
  $current_page = basename($_SERVER['PHP_SELF']);
?>

然后:

<li class="<?php if ($current_page == "index.php"){ echo "active "; }?> item"><a href="index.php">Home</a></li>

表示普通链接,并且:

<li class="<?php if ($current_page == "index.php"){ echo "active "; }?> item has-dropdown">
    <a href="about.php">About Us</a>

有关下拉列表的链接吗?

答案 1 :(得分:1)

如果您正在使用会话,则可以设置当前页面会话变量并在页面上使用它:

在每页上:

session_start();
$_SESSION['current_page'] = 'this_page';

然后在您的菜单页面上:

<li class="<?php if ($_SESSION['current_page'] == 'this_page'){ echo 'active '; }?> item"><a href="index.php">Home</a></li>