PHP使用include设置页面上的活动链接


PHP set active link on page using includes

所以我已经搜索了一个小时试图找到答案,也尝试了各种方法,包括这个

我试图包括我的页面,随着导航。但是在正确的页面上,我需要list-item有一个类active。导航在header.php中,目前看起来像这样:

<nav>
    <ul>
      <li class="active"> <a href="/">Home</a> </li>
      <li> <a href="#">Apps</a> </li>
      <li> <a href="#">Forums</a> </li>
    </ul>
  </nav>

首先,我不知道如果JS(jQuery)会更好,或者如果PHP是更好。如果能成功,这两个都不重要。

我也是一个PHP新手,正在努力学习。

最简单(希望)的方法是什么?所以我不需要修改很多代码就可以输入导航class="active"

假设您有一个$page变量(其中包含您当前所在页面的名称):

  <nav>
    <ul>
      <li class="<?php echo ($page == "home" ? "active" : "")?>"> <a href="/">Home</a> </li>
      <li class="<?php echo ($page == "apps" ? "active" : "")?>"> <a href="#">Apps</a> </li>
      <li class="<?php echo ($page == "forums" ? "active" : "")?>"> <a href="#">Forums</a> </li>
    </ul>
  </nav>

这里有一个简单的方法,您不需要添加任何其他变量

<li class="<?php echo ($_SERVER['PHP_SELF'] == "/index.php" ? "active" : "");?>">
<a href="index.php">Start</a>
</li>
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/about.php" ? "active" : "");?>">
<a href="about.php">About</a>
</li>
<li class="<?php echo ($_SERVER['PHP_SELF'] == "/practices.php" ? "active" : "");?>">
<a href="practices.php">Practices</a>
</li>

$_SERVER之前添加basename功能。我希望它能起作用。

echo (basename($_SERVER['PHP_SELF']) == 'yourPageName' ?'active' : " ");

在页眉处使用:

<?php $loc = this.location; ?>

然后在每个链接处添加:

<?php(this.href == $loc) ? echo 'class="active"' : '' ?>

在index.php页面中定义变量$page="index.php",对于其他页面,根据页面名称更改变量值

<li class="<?php echo ($page == "index.php" ? "active" : "")?>">
    <a href="index.php">Home</a>
</li>
<li class="<?php echo ($page == "about.php" ? "active" : "")?>">
    <a href="about.php">About</a>
</li>
<li class="<?php echo ($page == "service.php" ? "active" : "")?>">
    <a href="service.php">Services</a>
</li>
<li class="<?php echo ($page == "contact.php" ? "active" : "")?>">
    <a href="contact.php">Contact</a>
</li>
$page_url = $_SERVER['QUERY_STRING'];
$s = explode("&",$page_url);
//print $s[0];
$page = $s[0];
function createTopNav($page)
{
    $pages = array(
        array(
            'name'=>'Feeder',
            'link'=>'page=feeder'
        ),
        array(
            'name'=>'Services',
            'link'=>'page=services'
        ),
        array(
            'name'=>'Development',
            'link'=>'page=development'
        ),
        array(
            'name'=>'Design',
            'link'=>'page=design'
        ),
    );
    $res = "";
    foreach($pages as $key=>$val)
    {
        if($val['link']==$page)
        {
            $res.= "<a class='"active'" href='"?"
            .$val['link'].
            "'">"
            .$val['name'].
            "</a>";
        }
        else
        {
            $res.= "<a class='"'" href='"?"
            .$val['link'].
            "'" >"
            .$val['name'].
            "</a>";
    }
    }
    $res.="";
    return $res;
}
echo createTopNav($page);

如果您使用查询字符串exmaple.com?page_id=Apps来传递页面id,则可以使用php接近这个东西

$page_id = $_REQUEST['page_id'];
 <ul>
          <li class="<?php echo ($page_id == "Home" ? "active" : "");?>">
 <a href="/">Home</a>
          </li>
          <li class="<?php echo ($page_id == "Apps" ? "active" : "");?>">
 <a href="#">Apps</a>
          </li>
          <li class="<?php echo ($page_id == "Forums" ? "active" : ""); ?>">
 <a href="#">Forums</a>
          </li>
        </ul>

如果你不想使用jQuery或PHP -可以做下一步:

  1. 为"your-include-nav.php"中的每个<li>元素指定ID或不同的CLASS。
  2. 在每个页面的<head>部分用CSS定义"active"样式。

添加basename函数。我希望它能起作用。

    $home = "  ";
    $about = " ";
    $service = " ";
    $team = " ";
    $contact = " ";
    $cond = " ";
    if (isset($_GET['contact'])) {
        $contact = "active";
        # code...
    } elseif (isset($_GET['about'])) {
        $about = "active";
    } elseif (isset($_GET['service'])) {
        $service = "active";
    } elseif (isset($_GET['team'])) {
        $team = "active";
    } elseif (isset($_GET['cond'])) {
        $cond = "active";
    } else {
        $home = "active";
    }