所以我已经搜索了一个小时试图找到答案,也尝试了各种方法,包括这个
我试图包括我的页面,随着导航。但是在正确的页面上,我需要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接近这个东西
<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 -可以做下一步:
- 为"your-include-nav.php"中的每个
<li>
元素指定ID或不同的CLASS。 - 在每个页面的
<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";
}