Для вывода главного меню в umi служит макрос "content menu()", но довольно часто возникает ситуация в создании дополнительного меню, а может даже и нескольких меню. Не проблема скажете вы, дополнительное меню можно вывести просто статично в шаблоне сайта, но что если нам надо меню редактируемое из админки? С помощью usel мы можем создать несколько дополнительных меню без особых проблем.
Итак, для начала чтобы иметь возможность вызывать usel из адресной строки как и другие макросы, необходимо настроить разрешения в config.ini в секции [streams] нам надо указать параметр,
usel.http.allow = "1"
Перед созданием непосредственно usel, нам необходимо создать в админке поля, в которых мы будем отмечать страницы, которые надо отображать в дополнительном меню. Например нам надо разместить дополнительное меню в футере, для этого заходим в "шаблоны данных", находим там пункт "Разделы сайта", находим необходимый раздел, например "Страница контента" и добавляем в нее поле со след параметрами название - "Отображать в меню в футере" идентификатор - show_footer (именно по нему мы будет проводить выборку) тип - "кнопка-флажок" Такие же поля если нужно добавляем в раздел "лента новостей", "раздел каталога" и т. д.
Также для usel нам понадобятся id разделов в которые мы добавили поля, их можно увидеть в адресной строке при редактировании(когда добавляем поля), например http://site/admin/data/type_edit/31/ - 31 это id типа страница контента, и т. д.
Ниже приведен код usel с комментариями
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target expected-result="pages">
<type id="31" />
<type id="55" />
</target>
<property name="show_footer" value="1" />
<limit page="0">8</limit>
</selection>
Я думаю с данного кода все понятно в тегах "type" перечисляем все id разделов которые мы ищем, в property имя поля, которые мы ищем и указываем что значение должно быть равно "1", т е отмечена галочка в админке, limit количество выводимых страниц...
файл usel сохраняем под любым именем с расширением xml - "menu_footer.xml", копируем в папку /templates/themename/usels/ или просто в папку /usels/
Для просмотра в адресной строке используем http://site/usel://menu_footer
<?xml version="1.0" encoding="utf-8"?>
<xsl:apply-templates select="document('usel://menu_footer')" />
Если у нас несколько дополнительных меню, чтобы на каждое не создавать свой файл, изменим немного этот чтобы в выводе мы могли передавать имя поля как параметр и соответственно вызывать разные меню из одного usel, меняем следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target expected-result="pages">
<type id="31" />
<type id="55" />
</target>
<property name="{1}" value="1" />
<limit page="0">8</limit>
</selection>
и соответственно вызов будет следующим:
<?xml version="1.0" encoding="utf-8"?>
<xsl:apply-templates select="document('usel://menu_footer/show_footer')" />