Получение object id страницы зная element id (tpl-шаблоны)

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

При использовании xslt-шаблонизатора, object_id страницы мы найдем в результирующих данных текущей страницы, т.е. result -> page (object-id="XXX"). При использовании tpl шаблонов все несколько сложнее, придется воспользоваться кастомным макросом, который пропишем в файле classes/modules/custom.php, после слов //TODO:

public function object_id($element_id) {
 $element = umiHierarchy::getInstance()->getElement($element_id);
 if($element) return $element->getObjectId();
}


Данный макрос понадобится при использовании макроса data doSelection(), при поиске объектов, у которых в выпадающем списке выбрана текущая страница (в поле сохранено значение равное именно object_id).

Пример использования. Допустим, на странице с описанием компании-производителя, мы используем подобный макрос для поиска объектов каталога данного производителя:

%data doSelection('objectcompany', 'objectcompany', %custom object_id(%pid%)%)%

Шаблон usels/objectcompany.xml, может быть примерно следующим:

<?xml version="1.0" encoding="UTF-8"?>
<selection>
<target result="pages">
<type module="catalog" method="object" />
  <category depth="5">45</category>
</target>
<property name="company">
 <object>{1}</object>
</property>
</selection>

company - идентификатор поля "Производитель" в типе данных "Объект каталога"

Дополнительная информация по написанию xml-шаблонов поиска: Примеры использования макроса data doSelection()