PHP标头包含导航菜单问题

时间:2011-10-14 14:17:26

标签: 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 = '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'上面。

当在“主页”页面上时,“主页”导航菜单项会突出显示,因为它应指示用户在该页面上,但是,当我转到任何其他页面时,例如'关于'页面,它突出显示'关于'导航菜单项以及'主页'导航菜单项。

我哪里错了?

3 个答案:

答案 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>";
}

是否是正确的代码。这只是条件逻辑中的一个小混淆。