UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: niakriss от 20 Октября 2012, 10:29:43

Название: вопрос по меню.
Отправлено: niakriss от 20 Октября 2012, 10:29:43
здравствуйте. у меня меню состоит из разделов каталога. но вывожу я их через content/menu. можно ли как то сделать, чтобы подразделы, в которых нет объектов каталога не выводились в меню. т.е. надо как то сделать проверку на дочернии элементы. может кто сталкивался?
Название: Re:вопрос по меню.
Отправлено: Rodogor от 21 Октября 2012, 13:59:33
Как вариант - свой кастом, а так можно и на xslt разрулить весьма красиво. Я кастом делал, не могу вспомнить где :)

На xslt нужно так:
1. Выполняем content/menu. Получаем ID  разделов
2. Выполняем catalog/getObjectsList/notemplate/(ID_раздела меню)/100500/0 - получаем объекты каталога.
3. Нам нужно проверить есть ли в разделе объекты. Конкретно getObjectsList возвращает total - "Общее количество объектов в указанном разделе." В других случаях можно через count()


Итого:

вызываем меню:
<xsl:apply-templates select="document('udata://content/menu/')/udata/items/item" mode="menu_catalog"/>

Описываем шаблон для обработки результата вызова макросов
<xsl:template match="item" mode="menu_catalog">
<xsl:variable name="total" select="document(concat('udata://catalog/getObjectsList/notemplate/(',@id,')/100500/0'))/udata/total"/>

<xsl:if test="$total &gt; 0">
<li><a href="@link"><xsl:value-of select="."/></a></li>
</xsl:if>
</xsl:template>

Код не проверял, писал так
Название: Re:вопрос по меню.
Отправлено: niakriss от 22 Октября 2012, 09:52:39
спасибо огромное)) добавила еще одно условие для категорий и все заработало на отлично)