насчет usel... в последнее время многие говорят о том, что он не так прост как хотелось бы, надо как-то прояснять этот момент, так как механизм очень мощный и прекрасный.
насчет варианта фильтровать список средствами xslt. Этот метод прекрасен в плане экономии ресурсов, но нужно понимать его суть и понимать где и как он сработает
то есть, в вашем случае он не поможет, так как вам надо отфильтровать среди всех элементов, выводимых в меню те, у которых есть галочка в поле с именем
secondaryНебольшое пояснение:
Например, хочу вывести меню, я запрашиваю его макросом
<xsl:apply-templates select="document('udata://content/menu/0/2')/udata" mode="vertical_menu"/>
для начала посмотрим, что нам возвращает система при таком запросе, введем в адресной строке http://мойсайт/udata://content/menu/0/2/
-----------------------------------------------------------------------------------------
не забывайте, что у вас может быть отключен протокол usel, про то, почему вы не видите результатов в браузере, читайте в документации http://help-dev.umi-cms.ru/chapter.XSLTTemplates.usel.html в самом начале раздел "Замечание".
а также вы увидите xml структуру далеко не в каждом браузере, я работаю в mozilla и в нем показывается xml документ корректно, а вот в internet explorer например, показывает только текст, без тегов-----------------------------------------------------------------------------------------
<udata module="content" method="menu" generation-time="0.036790">
<items>
<item id="7" link="/" name="Главная" xlink:href="upage://7">Главная</item>
<item id="9" link="/news/" name="Новости" xlink:href="upage://9">Новости</item>
<item id="11" link="/price-list/" name="Прайс" xlink:href="upage://11">Прайс</item>
<item id="90" link="/vacancy/" name="Вакансии" xlink:href="upage://90">Вакансии</item>
<item id="95" link="/partners/" name="Монтажные работы" xlink:href="upage://95">Монтажные работы</item>
<item id="290" link="/contacts/" name="Контакты" xlink:href="upage://290">Контакты</item>
</items>
</udata>
<!-- This page generated in 0.083 secs -->
как мы видим в результате нет информации о том поставлена галочка
secondary или нет, это мы можем узнать только запросив информацию о каждом конкретном объекте. Например, так http://мойсайт/upage://9/ мы получим доступ к параметрам новостей (страницы с id = 9) .
Но это не экономно (ведь проще сделать выборку средствами php, наш пресловутый usel, а не перебирать все элементы меню, подгружая все их параметры).
А вот если бы у нас стояла задача вывести из этого списка элемент с id=9, то это, пожалуйста.
тогда мы бы могли сделать такой шаблон
<xsl:template match="udata[@module = 'content' and @method = 'menu']" mode="vertical_menu">
<ul>
<xsl:apply-templates select="items/item" mode="vertical_menu"/>
</ul>
</xsl:template>
<!-- шаблон для пункта Верт.меню -->
<xsl:template match="item[@id=9]" mode="vertical_menu">
<li>
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
</li>
</xsl:template>
Но тут есть маленькое но, в шаблоне <xsl:template match="udata[@module = 'content' and @method = 'menu']" mode="vertical_menu"> мы вызывали <xsl:apply-templates select="items/item" mode="vertical_menu"/>
то есть мы сделали выборку всех item из результата, Вопрос в том, что шаблон для вывода результата мы задали только для элемента с id=9, а что будет с остальными? Они тоже будут обрабатываться, но ненайдя шаблон для себя не как себя не отобразят. Но чтобы еще сэкономить ресурсов, лучше задать ограничение на вывод элементов в первом шаблоне, то есть так:
<xsl:template match="udata[@module = 'content' and @method = 'menu']" mode="vertical_menu">
<ul>
<xsl:apply-templates select="items/item[@id=9]" mode="vertical_menu"/>
</ul>
</xsl:template>
<!-- шаблон для пункта Верт.меню -->
<xsl:template match="item" mode="vertical_menu">
<li>
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
</li>
</xsl:template>
Ну, что-то я уже стал углубляться)
Подведем итог:В вашем случае (вывод элементов меню с галочкой secondary), не удастся воспользоваться этим фокусом (<xsl:template match="result[//property[@name='my_property]]">) не нагрузив систему сильнее, чем при usel запросе, но в других случаях это может значительно облегчить вашу жизнь)