UMIhelp

Разработка сайта на UMI.CMS => Шаблоны PHP => Тема начата: pandus от 20 Августа 2017, 21:39:43

Название: Как узать активный пункт в menu draw?
Отправлено: pandus от 20 Августа 2017, 21:39:43
Пытаюсь в menu draw на php узнать активный пункт меню и ничего не получается.
Как я понял из документации узнать активный пункт элемента меню можно по параметру attribute:status, пытаюсь перебрать массив и ничего не получается ???.
В шаблоне menu draw пишу следующее :
<ul>
<?php foreach($variables['nodes:item'] as $item): ?>
    <li class="<?=$item['attribute:status']?>">
        <a href="<?=$item['attribute:link']?>"><?=$item['node:text']?></a>
    </li>
<?php endforeach; ?>
</ul>

Меню выводится но активный пункт меню не выделяется классом active, в чём может быть причина?
Название: Re: Как узать активный пункт в menu draw?
Отправлено: admin от 20 Августа 2017, 21:49:55
Либо по каким-то причинам в $variables у соответствующего пункта (item) не стоит этот статус, либо при выводе он не выводится.

Для начала, проверьте что у вас в этом массиве данных $variables (просто выведите всю переменную в конечный html, который формируется у вас в этом шаблоне).

Название: Re: Как узать активный пункт в menu draw?
Отправлено: pandus от 20 Августа 2017, 22:01:55
Странно, отключил кэш заработало.
При включении "Кэширование макросов и протоколов для XSLT и PHP шаблонизаторов" активируется всегда первый пункт меню.  :-X
Название: Re: Как узать активный пункт в menu draw?
Отправлено: admin от 21 Августа 2017, 07:34:29
Как раз не странно  ;).
Когда у вас включено "Кэширование макросов и протоколов для XSLT и PHP шаблонизаторов", то система запоминает первый вызов макроса, который скорее всего был на главной странице. Вот вы и видели результат того первого вызова, в котором status не тот, который вы ожидали.