Примеры использования макроса data doSelection
Макрос 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>