Заголовок PHP включает проблемы с меню навигации - PullRequest
0 голосов
/ 14 октября 2011

Я использую 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 'выше.

Находясь на «домашней» странице, элемент навигационного меню «домашней» страницы подсвечивается, что должно указывать на то, что пользователь находится на этой странице, однако, когда я перехожу на любую другую страницу, скажем, например, « страница about, она выделяет пункт меню about, а также пункт nav home.

Куда я иду не так?

Ответы [ 3 ]

3 голосов
/ 14 октября 2011

Ваш цикл foreach будет всегда помещать класс $ для "Home" как "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>";
}
1 голос
/ 14 октября 2011
$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>";
}

Это правильный код.Это была просто небольшая путаница в вашей условной логике.

1 голос
/ 14 октября 2011

Попробуйте использовать

if($title == "Home")

вместо

if($item == "Home")

Вы были так близко!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...