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

Тема в разделе "Веб-дизайн", создана пользователем zetaap, 20 фев 2010.

Статус темы:
Закрыта.
Модераторы: zek24
  1. zetaap

    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


    Облазил весь форум ничего путного не нашёл...
     
  2. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Как вариант
    PHP:
    <?php
    if ($_SERVER['REQUEST_URI']=='/index.php') echo '<a href="index.php" class="snb">Главная</a>';
    else echo 
    '<a href="index.php" class="sn">Главная</a>';
    ?>
     
    zetaap нравится это.
  3. maslenov

    maslenov Прохожие

    А есть еще способы?
     
  4. CoooLLer

    CoooLLer Писатель

    Регистр.:
    8 июн 2009
    Сообщения:
    8
    Симпатии:
    2
    Как вариант использование JavaScript, но это не хорошая идея, т.к. не у всех будет работать. Если у вас сайт на какой-либо CMS, то там скорее всего уже реализованно отслеживание активного пункта меню, остается только подправить шаблон вывода. Ну или если у вас нету CMS то можно на чистом PHP, как написал uNknownMark, только можно покороче:
    PHP:
    <a href="index.php" class="<?=$_SERVER['REQUEST_URI']=="/index.php"?"snb":"sn";?>">Главная</a>
     
    UDAV нравится это.
  5. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    780
    Симпатии:
    153
    CoooLLer, первый раз такое написание if else вижу) Это давно работает?)))
    Нагрузка на сервер одинаковая, или тут меньше?
     
  6. CoooLLer

    CoooLLer Писатель

    Регистр.:
    8 июн 2009
    Сообщения:
    8
    Симпатии:
    2
    ну псоледние 2-3 года, как я по чуть-чуть кодю на пхп, это работает. Нагрузка думаю одинаковая, оператор то по сути один и тот же, просто написание краткое. Просто очень удобно в таком виде писать, когда надо выводить один из 2х вариантов.
     
  7. int++

    int++ Писатель

    Регистр.:
    26 янв 2010
    Сообщения:
    6
    Симпатии:
    2
    Вообще-то есть специальное свойство active которое при активной странице выполняет прописаное свойство.
    HTML:
    
    <a href="/index.php" class="sn">ГЛАВНАЯ</a>
    .sn a { color: #ffffff; }
    .sn a:active { color:#000000;}
    и т.д.
     
  8. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    780
    Симпатии:
    153
    int++
    Ага. и при обновлении странички она сбрасывается) Т.ею. при переходе на новую страничку, ссылка не подсвечивается. Этот метод можно использовать для якорей.
     
  9. sCrypt

    sCrypt Создатель

    Регистр.:
    11 авг 2008
    Сообщения:
    23
    Симпатии:
    12
    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>
     
Статус темы:
Закрыта.