PHP标题包括导航菜单问题

PHP标题包括导航菜单问题,php,html,if-statement,include,foreach,Php,Html,If Statement,Include,Foreach,我使用一个PHP include来输入我的标题,当然,它包含了我的导航菜单 导航菜单部分的“header.php”代码如下: $nav = array("Home","About","Portfolio","Products","Services","Contact"); foreach($nav as $item) { $class = ''; $href = $item; if($item == "Home") { $class

我使用一个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>";
}
现在一切似乎都很好,正确的导航菜单项就在那里,它们都链接到正确的位置等等,“home”实际上是“index.php”,而不是上面“header.php”中编码的“home.php”

当在“主页”上时,“主页”导航菜单项会高亮显示,因为它应该指示用户在该页面上,但是,当我转到任何其他页面(例如“关于”页面)时,它会高亮显示“关于”导航菜单项和“主页”导航菜单项

我哪里出错了?

尝试使用

if($title == "Home")
而不是

if($item == "Home")
你太接近了

尝试使用

if($title == "Home")
而不是

if($item == "Home")

你太接近了

您的foreach循环将始终将“Home”的$class作为“当前菜单祖先”放置,假设这就是它突出显示的原因。。您可能需要执行以下操作:

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>";
}
foreach($nav作为$item)
{
$class='';
$href=$item;
如果($item==“Home”)
{
//$class='class=“当前菜单祖先父项”';去掉这个
$href='index';
}
if($item==$title)//将其更改为if而不是elseif
{
$class='class=“当前菜单祖先父项”';
}
回声“”;
}

您的foreach循环将始终将“Home”的$class作为“当前菜单祖先”放置,假设这就是它突出显示的原因。。您可能需要执行以下操作:

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>";
}
foreach($nav作为$item)
{
$class='';
$href=$item;
如果($item==“Home”)
{
//$class='class=“当前菜单祖先父项”';去掉这个
$href='index';
}
if($item==$title)//将其更改为if而不是elseif
{
$class='class=“当前菜单祖先父项”';
}
回声“”;
}
$nav=array(“主页”、“关于”、“投资组合”、“产品”、“服务”、“联系人”);
foreach(资产净值为$item){
$class='';
$href=$item;
如果($item==“Home”){
$href='index';
}
如果($item==$title){
$class='class=“当前菜单祖先父项”';
}
回声“”;
}
是正确的代码。这只是你的条件逻辑有点混乱。

$nav=array(“Home”、“About”、“Portfolio”、“Products”、“Services”、“Contact”); foreach(资产净值为$item){ $class=''; $href=$item; 如果($item==“Home”){ $href='index'; } 如果($item==$title){ $class='class=“当前菜单祖先父项”'; } 回声“”; }
是正确的代码。这只是你的条件逻辑有点混乱。

这不会正确地突出显示除
Home
之外的任何导航项目。它将给它们所有的类
当前菜单祖先父类
,因为它出现在foreachI中。我以前尝试过这个,它突出显示了所有的类,如上所述。干杯,tho。如果你还有别的想法,请告诉我。这就是我为什么要尝试其他方法的原因再次强调了所有这些方法。另外,由于seo原因,我希望标题在将来比主页更重要。这将不会正确突出显示除
主页
之外的任何导航项目。它将给它们所有的类
当前菜单祖先父类
,因为它出现在foreachI中。我以前尝试过这个,它突出显示了所有的类,如上所述。干杯,tho。如果你还有别的想法,请告诉我。这就是我为什么要尝试其他方法的原因再次强调了所有这些方法。另外,我希望标题在将来比首页更重要,因为seo原因您总是在循环中传递一次条件$item==“home”,所以类将始终被设置。因此,您需要更改/扩展您的条件。您可以发布输出HTML吗?您总是在循环中传递一次条件$item==“Home”,所以类将始终被设置。因此,您需要更改/扩展您的条件。您可以发布输出HTML吗?