我使用PHP include来输入我的标题,当然,它包含我的导航菜单。
导航菜单部分的'header.php'代码如下:
$nav = array("Home","About","Portfolio","Products","Services","Contact");
foreach($nav as $item)
{
$class = '';
$href = $item;
if($item == "Home")
{
$class = 'class="current-menu-ancestor parent"';
$href = 'index';
}elseif($item == $title){
$class = 'class="current-menu-ancestor parent"';
}
echo "<li $class><a href='$href.php'>$item</a></li>";
}
对不起,如果它有点乱。
它从相关页面获取$title
,将在页面上显示的示例代码为:
$title = "Home";
include("header.php");
现在一切似乎工作正常,正确的导航菜单项在那里,它们都链接到正确的位置等,'home'实际上是'index.php'而不是'home.php',如'header中编码的那样。 php'上面。
当在“主页”页面上时,“主页”导航菜单项会突出显示,因为它应指示用户在该页面上,但是,当我转到任何其他页面时,例如'关于'页面,它突出显示'关于'导航菜单项以及'主页'导航菜单项。
我哪里错了?
答案 0 :(得分:3)
你的foreach循环将始终将“Home”的$ class设置为“current-menu-ancestor”,假设是突出显示的内容..你可能想要做以下的事情:< / p>
foreach($nav as $item)
{
$class = '';
$href = $item;
if($item == "Home")
{
// $class = 'class="current-menu-ancestor parent"'; Get rid of this
$href = 'index';
}
if($item == $title) // Change this to if instead of elseif
{
$class = 'class="current-menu-ancestor parent"';
}
echo "<li $class><a href='$href.php'>$item</a></li>";
}
答案 1 :(得分:1)
尝试使用
if($title == "Home")
而不是
if($item == "Home")
你太近了!
答案 2 :(得分:1)
$nav = array("Home","About","Portfolio","Products","Services","Contact");
foreach($nav as $item){
$class = '';
$href = $item;
if ($item == "Home") {
$href = 'index';
}
if ($item == $title) {
$class = 'class="current-menu-ancestor parent"';
}
echo "<li $class><a href='$href.php'>$item</a></li>";
}
是否是正确的代码。这只是条件逻辑中的一个小混淆。