所以我搜索SO一小时试图找到答案,并尝试了各种方法,including this
我正在尝试包含我的网页以及导航。但是在正确的页面上,我需要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"
答案 0 :(得分:30)
Asumming你有一个$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>
答案 1 :(得分:8)
这是一种简单的方法,您无需添加任何其他变量
<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>
答案 2 :(得分:0)
如果您使用查询字符串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>
答案 3 :(得分:0)
在页面标题处使用:
<?php $loc = this.location; ?>
然后在每个链接添加:
<?php(this.href == $loc) ? echo 'class="active"' : '' ?>
答案 4 :(得分:0)
如果您不想使用jQuery或PHP,可以做下一步:
<li>
元素提供ID或不同的CLASS。<head>
部分使用CSS的样式。答案 5 :(得分:0)
在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>
答案 6 :(得分:0)
在basename
之前添加$_SERVER
函数。我希望它能起作用。
echo (basename($_SERVER['PHP_SELF']) == 'yourPageName' ?'active' : " ");
答案 7 :(得分:0)
$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);