Выделение активного пункта меню на php

Рейтинг: 0Ответов: 2Опубликовано: 12.11.2014

Привет, не могу разобраться, как можно выделить активный пункт меню.

<ul class="menu">
    <li><a href="<?=PATH?>">Главная</a></li>
         <?php if($pages): ?>
               <?php foreach($pages as $item): ?>
                       <li><a href="?view=page&amp;page_id=  <?=$item['page_id']?>"><?=$item['title']?></a></li>
               <?php endforeach; ?>
         <?php endif; ?>

</ul>

Помогите, пожалуйста. :)

Ответы

▲ 1

Ух-х, ну на PHP это никто не делает, обычно это работа "фронтэнда". В данном случае это можно "набыд***одить" следующим образом. Пишите CSS класс, например, active, который должен менять выбранный элемент (как выделенный). Далее получаете индикатор текущего page_id, и применяем для него класс active:

<li <?= if($_GET['page_id']==$item['page_id']) echo ='class="active"'; ?>><a href="?view=page&amp;page_id=<?=$item['page_id']?>"><?=$item['title']?></a></li>

Но уж очень это по-страшному выглядит, используйте в самом крайнем случае, если нет возможности изучить JS, jquery, прочее.

▲ 1

Обычно я делаю конструкцию, в которой сравнивается текущий урл страницы с ссылкой на эту страницу, если делать на чистом php, то в вашем случае можно вот так:

<?php 
    $active = ($_SERVER['REQUEST_URI'] == '?view=page&amp;page_id='.$item['page_id']) ? ' class="active"' : '';
    foreach($pages as $item) {
       echo '<li'.$active.'>';
       echo '<a href="?view=page&amp;page_id='.$item['page_id'].'">'.$item['title'].'</a>';
       echo '</li>';
    }
 ?>

И соотвественно в css добавляете:

.active a {
  background: green;
}