Выделение текущего раздела в меню

Статус
В этой теме нельзя размещать новые ответы.

zetaap

Постоялец
Регистрация
8 Мар 2008
Сообщения
83
Реакции
11
Возникла следующая проблемка.

Есть меню вида:

*Главная *Размещение *Изготовление *Контакты

В коде:
PHP:
<a href="index.php" class="sn">ГЛАВНАЯ</a>

.sn a { color: #ffffff }

.snb a { color:#000000 }

Вобщем как сделать чтоб если мы находимся на страничке index.php , был класс snb , иначе sn


Облазил весь форум ничего путного не нашёл...
 
Как вариант использование JavaScript, но это не хорошая идея, т.к. не у всех будет работать. Если у вас сайт на какой-либо CMS, то там скорее всего уже реализованно отслеживание активного пункта меню, остается только подправить шаблон вывода. Ну или если у вас нету CMS то можно на чистом PHP, как написал uNknownMark, только можно покороче:
PHP:
<a href="index.php" class="<?=$_SERVER['REQUEST_URI']=="/index.php"?"snb":"sn";?>">Главная</a>
 
  • Нравится
Реакции: UDAV
CoooLLer, первый раз такое написание if else вижу) Это давно работает?)))
Нагрузка на сервер одинаковая, или тут меньше?
 
ну псоледние 2-3 года, как я по чуть-чуть кодю на пхп, это работает. Нагрузка думаю одинаковая, оператор то по сути один и тот же, просто написание краткое. Просто очень удобно в таком виде писать, когда надо выводить один из 2х вариантов.
 
Вообще-то есть специальное свойство active которое при активной странице выполняет прописаное свойство.
HTML:
<a href="/index.php" class="sn">ГЛАВНАЯ</a>
.sn a { color: #ffffff; }
.sn a:active { color:#000000;}
и т.д.
 
int++
Ага. и при обновлении странички она сбрасывается) Т.ею. при переходе на новую страничку, ссылка не подсвечивается. Этот метод можно использовать для якорей.
 
zetaap, вот еще вариант, но более громоздкий чем у uNknownMark.
PHP:
<?php
$path = $_SERVER['PHP_SELF'];
$file = basename($path, ".php");
?>
<a href="index.php" class="<?php if ($file == "index") {echo "current";}else{echo "normal";} ?>">Главная</a>
<a href="about.php" class="<?php if ($file == "about") {echo "current";}else{echo "normal";} ?>">О сайте</a>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху