LINUX.ORG.RU

Стилизация активного элемента в yii cmenu

 , ,


0

1

Как яйке в стандартном меню выводить элемент с урлом текущей страницы с добавлением класса active? Важный момент, меню я вывожу автоматически генерируемое, а не вручную прописанное с конкретными адресами...

<?php foreach ($this->params['items'] as $item): ?>
<?php if ($item['visible']): ?>
<li class="menu__item">
<?= CHtml::link(CHtml::encode($item['label']), $item['url'], ['class' => 'menu__link']); ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
Вот в нем и нужно вывести пункт урл в котором совпадает со страницей на которой сейчас находимся, с добавкой ему класса active. Не пойму как это сделать, гугл находит решения только для меню, которые не генерятся, а вручную жестко прописаны, например: http://www.yiiframework.com/forum/index.php/topic/12640-styling-cmenu-links/



Последнее исправление: shiva (всего исправлений: 1)

БУДУЩИМ ПОКОЛЕНИЯМ НЕОСИЛЯТОРОВ
Решение оказалось довольно простым:

<?php
foreach ($this->params['items'] as $item) {
    if ($item['visible']) {
        
        //подсвечивание активного пункта
        if (Yii::app()->request->url === CHtml::encode($item['url'])) {
        echo '<li class="menu__item active">'.
        CHtml::link(CHtml::encode($item['label']), $item['url'], ['class' => 'menu__link']).
        '</li>';
        }
        else {
            echo '<li class="menu__item">'.
            CHtml::link(CHtml::encode($item['label']), $item['url'], ['class' => 'menu__link']).
            '</li>';
        }
    }
}
?>

shiva
() автор топика
Ответ на: комментарий от shiva

Может в два раза короче?

<?php foreach ($this->params['items'] as $item) { ?>
    <?php if (!$item['visible']) continue ?>
    <li class="menu__item<?php Yii::app()->request->url === CHtml::encode($item['url']) ? ' active' : '' ?>">
      <?= CHtml::link(CHtml::encode($item['label']), $item['url'], ['class' => 'menu__link']) ?>
    </li>
<?php } ?>

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.