Установить класс для элемента в PHP include () - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть идентичное горизонтальное меню в верхней части всех моих страниц, которое я добавляю с помощью оператора PHP include (). В моей таблице стилей я хочу иметь класс, в котором, если пользователь находится на определенной странице, пункт меню, соответствующий этой странице, будет иметь другой цвет. Итак, более или менее:

# menu { цвет фона: синий; }

# menu .active { цвет фона: зеленый; }

Но, поскольку меню происходит из PHP include, оно всегда одинаково. Как я могу написать PHP или JavaScript, который добавляет class = "active" в соответствующий пункт меню для каждой страницы?

1 Ответ

3 голосов
/ 11 апреля 2010

Когда вы include() файл, включенный файл имеет доступ ко всем переменным в области в том месте, где он включается. Вы можете легко установить переменную, чтобы сказать, какой пункт меню должен быть активным. Базовым примером может быть что-то вроде этого:

firstpage.php

<?php

$chosenMenu = 'page1';
include('menu.php');

menu.php

<div id="menu">
<?php
$menuItems = array(
    'page1'=>'firstpage.php',
    'page2'=>'secondpage.php',
    'page3'=>'lolcats.php'
);
foreach($menuItems as $key => $value) {
    echo '<a href="'.$value.'"';
    if (isset($chosenMenu) && $chosenMenu == $key) echo ' class="active"';
    echo '>';
}
?>
</div>

С этим стилем вы можете просто установить переменную $chosenMenu перед включением файла меню, и вы можете управлять им оттуда.

...