Дополнительное меню в UMI CMS с помощью usel

Для вывода главного меню в 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')" />
Теги: Umi
Новости