Авторизация

Выводим случайную статью в UMI CMS с помощью usel в tpl

Задача: Требуется вывести на главной странице одну случайную (random) статью из раздела со статьями. Чтобы при перезагрузке страницы выводились всегда разные статьи. Система управления: UMI.CMS. Шаблонизатор TPL.

Для выполнения этой задачи воспользуемся так называемым протоколом usel ( подробней о нём можно прочитать в документации ), с помощью него можно совершать выборки страниц и объектов из базы данных. Среди прочих параметров описанных в мануале у него есть параметр сортировки sort где можно задать случайную сортировку элементов/страниц.

Приступим к написанию шаблонов usel и tpl для вывода статей. Для начала создадим в папке usels файл с именем: get_random_page.xml и запишем в него:

<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="news" method="item" />
<category depth="1">{1}</category>
</target>
<sort>rand()</sort>
<limit page="0">1</limit>
</selection>

Если в краце описать что он делает, то, сначала мы сообщаем usel, что нам надо вытащить из базы просто страницы (<target result="pages">), затем говорим что эти страницы должны относится к типу новости и быть простыми страничками ( <type module="news" method="item" /> ) есть ещё в модуле новости рубрики или как их можно называть ленты или разделы, суть от этого не меняется, тогда бы мы их искали так: <type module="news" method="rubric" />. Дальше "говорим" что категория/раздел к которому должны относится страницы должен быть равен {1} с максимальной вложенностью 1 ( depth="1" ). Вместо {1} мы можем написать сюда любой id или просто url раздела (подробней можно почитать тут). Потом идёт <sort>rand()</sort> который говорит что нужно выводить страницы произвольно и <limit page="0">1</limit> говорит вывести один элемент/страницу.

Всё, выборка готова. дальше настраиваем вывод.

Чтобы обратится к usel шаблону get_random_page.xml из tpl нам понадобится "макрос" % data doSelection()%, вызывать его будем так: % data doSelection(default, get_random_page,21)% его нужно будет вставить в шаблон самого сайта который находится в папке tpls/content, в моём случае это был tpls/content/index.tpl

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург || Антон Панченко ]