【问题标题】:PHP Header Include Navigation Menu IssuesPHP 标头包含导航菜单问题
【发布时间】:2011-12-07 19:30:16
【问题描述】:

我正在使用 PHP 包含来输入我的标题,其中当然包含我的导航菜单。

导航菜单部分的“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' 上面。

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

我哪里错了?

【问题讨论】:

  • 您总是在循环中通过条件 $item == "Home" 一次,因此将始终设置类。所以你需要改变/扩大你的条件
  • 你能发布输出的 HTML 吗?

标签: php html if-statement include foreach


【解决方案1】:

您的 foreach 循环将始终将“Home”的 $class 放置为“current-menu-ancestor”,假设这就是使其突出显示的原因。您可能想要执行以下操作:

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

【讨论】:

    【解决方案2】:

    尝试使用

    if($title == "Home")
    

    而不是

    if($item == "Home")
    

    你离得太近了!

    【讨论】:

    • 这不会正确突出除Home 之外的任何导航项。它将为 all 提供 current-menu-ancestor parent 类,因为它发生在 foreach 中
    • 我之前试过这个,它突出显示了上面评论的所有内容。干杯。如果您想到其他任何事情,请告诉我。这就是我尝试 elseif 的原因
    • 这再次突出了所有这些。另外,出于 seo 的原因,我希望标题在未来比家更重要
    【解决方案3】:
    $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>";
    }
    

    是正确的代码。这只是您的条件逻辑中的一个小错误。

    【讨论】:

      猜你喜欢
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多