Есть в UMI CMS такая штука, как doSelection. Она позволяет делать произвольные выборки из базы umi.
В качестве примера покажу, как вывести объекты каталога в случайном порядке. В моем примере это будут случайные "места отдыха".
Создаем файл запроса usels/rand_places.xml
<?xml version="1.0" encoding="UTF-8"?>
<selection>
<target expected-result="pages">
<type id="772" />
<category depth="10">/places/</category>
</target>
<sort>rand()</sort>
<limit page="0">{1}</limit>
</selection>
Данный запрос делает выборку из раздела сайта http://site/places/ с глубиной вложенности 10, всех объектов типа 772. Данные сортируем в случайном порядке, количество выводимых элементов передается в первом параметре.Полное описание формата usel можно найти тут http://help-dev.umi-cms.ru/chapter.XSLTTemplates.usel.html
Далее пишем шаблон: tpls/data/usel/rand_places.tpl
<?php
$FORMS = Array();
$FORMS['elements_block'] = <<<END
<div class="catalog_block">
%items%
</div>
END;
$FORMS['elements_block_line'] = <<<END
<div><a href="%link%">%name%</a></div>
<div>%anons%</div>
END;
?>
http://help-dev.umi-cms.ru/data.doSelection.html
и вызываем макрос так:
%data doSelection('rand_places', 'rand_places', 3)%
rand_places - это имена наших файлов: шаблона и выборки usel (у меня они называются одинаково) 3 - это параметр №1, который у нас означает количество выводимых элементов.
Как видим, разрабатывать под юми стало значительно легче, но не все так хорошо работает как хотелось бы (в лучших традициях юми :)). Функция бажная, есть некоторые ограничения, например нельзя делать выборку по владельцу объекта.
Вот если бы разработчики UMI сами бы пользовались своим usel и стандартизировали бы шаблоны вывода всех макросов через него... эх.. мечты мечты...
Ну почему же мечты, напишите нам как это должно работать на ящик partner@umisoft.ru с пометкой "Для Антона". Мы сайты не делаем и потому, в проектирование всей системы руководствуемся исключительно пожеланиями наших пользователей и партнеров.
ОтветитьУдалитьP.s. Уберите, пожалуйста, ваш пост про ключ.
А как вывести определенное поле страницы с помощью этого макроса? Например поле тегов. По умолчанию его с помощью getproperty вывести нельзя, а с помощью этого макроса вроде можно
ОтветитьУдалить