Примеры использования макроса data doSelection

Материал из Umicms
Версия от 20:44, 4 июня 2013; Mad grant (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Макрос data doSelection использует два шаблона, xml-шаблон определяет условия выборки объектов или элементов(страниц), tpl-шаблон отвечает за вывод найденных элементов, за их визуальное представление.

1. Выборка трех случайных объектов из какого-либо раздела, с полной глубиной вложенности. Xml-шаблон (/usels/):

<?xml version="1.0" encoding="UTF-8"?>
<selection>
<target result="pages">
  <type module="catalog" method="object" />
  <category depth="5">45</category>
</target>
<sort>rand()</sort>
<limit page="0">3</limit>
</selection>

Информацию для написания конструкции: <type module="catalog" method="object" /> можно найти в настройках модуля Шаблоны Данных. Для типа данных Объект каталога: module="catalog", method="object". Т.к. в xml-шаблоне определяются правила поиска страниц, то в tpl-шаблоне будут использоваться блоки elements_Х. Пример tpl-шаблона (/tpls/data/usel/):

$FORMS = Array();
$FORMS['elements_block'] = <<<END
<ul>
%items%
</ul>
END;

$FORMS['elements_block_line'] = <<<END
<li>
<a href="%link%">%name%</a>
</li>
END;

$FORMS['elements_block_empty'] = <<<END
<p>Elements not found</p>
END;

В блок elements_block_line передается element_id, т.е. можно использовать макрос %id% вместе с макросом data getProperty.

2. Поиск объектов определенного типа, с определенным значением в выпадающем списке. Xml-шаблон:

<?xml version="1.0" encoding="UTF-8"?>
<selection>
<target result="pages">
  <type id="827" /> 
  <category depth="5">45</category>
</target>
<property name="gender">
 <object>27540</object>
</property>
<limit page="0">10</limit>
</selection>

Такой конструкцией: <type module="catalog" method="object" /> можно фильтровать только по полям, которые есть в Родительском типе данных, допустим Объект каталога. Если необходимо фильтровать по полю, которое есть только в дочернем типе, допустим Ноутбук, то необходимо использовать такую конструкцию: <type id="827" />

Чтобы фильтровать по какому-либо полю в выпадающем списке, необходимо определить id объекта в выпадающем списке. Для этого можно зайти на страницу редактирования объекта с типом Ноутбук, и получить xml представление данной страницы, т.е. добавить к адресной строке .xml. Выпадающий список будет прописан примерно так:

3. Поиск всех пользователей, которые входят в группу Супервайзеры (object_id группы = 15). Xml-шаблон:

<?xml version="1.0" encoding="UTF-8"?>
<selection>
<target result="objects">
  <type module="users" method="user" />
</target>
<property name="groups">
 <object>15</object>
</property>
</selection>

Пример tpl-шаблона:

$FORMS = Array();

$FORMS['objects_block'] = <<<END
<p>Objects list (%total%/%per_page%):</p>
<ul>
%items%
</ul>
END;

$FORMS['objects_block_line'] = <<<END
<li>
%name%
</li>
END;

$FORMS['objects_block_empty'] = <<<END
<p>Objects not found</p>
END;

4. Поиск объектов каталога с установленным чекбоксом в поле akciya, и с ценой входящей в диапазон:1500-3000. Xml-шаблон:

<?xml version="1.0" encoding="UTF-8"?>
<selection>
<target result="pages">
  <type id="827" /> 
  <category depth="5">45</category>
</target>
<property name="akciya" value="1" />
<property name="price">
 <min-value>1500</min-value>
 <max-value>3500</max-value>
</property>
</selection>