C версии 2.8.6 в UMI.CMS появились новые возможности для выборок Udata и Usel, которые помимо стандартных полей позволяют делать выборки по расширенным полям. В этом посте я расскажу, как добавить такую возможность в собственные кастомные макросы.
Новая функциональность выглядит это примерно вот так:
http://localhost/udata/content/menu/?extProps=content
Результат получается примерно следующий:
И естественно, через некоторое время использования возник вопрос: как добавить данную возможность в свои макросы? На сайте с документацией по UMI.CMS об этом, к сожалению, ничего не сказано. Пришлось немного покопаться и ответ был в итоге найден:
Новая функциональность выглядит это примерно вот так:
http://localhost/udata/content/menu/?extProps=content
Результат получается примерно следующий:
<item id="19" link="/documents/" name="Документы" alt-name="documents" xlink:href="upage://19">
Документы
</item>
И естественно, через некоторое время использования возник вопрос: как добавить данную возможность в свои макросы? На сайте с документацией по UMI.CMS об этом, к сожалению, ничего не сказано. Пришлось немного покопаться и ответ был в итоге найден:
Ответ:
Надо правильно вызывать функцию parseTemplate для 1 объекта в своём макросе, а именно вот так:
Для объектов:
$sel->new selector('object');
$sel->types('object-type')->name('yourmodule','yourbasetypename');
foreach($sel as $obj) {
$line_arr['attribute:id'] = $obj->id;
$line_arr['attribute:name'] = $obj->name;
$lines['subnodes:items'][] = $this->parseTemplate($tpl_template_name, $line_arr, null, $obj->id);
}
$res = $this->parseTemplate($tpl_templates_name, $lines);
Для страниц:
$sel->new selector('pages');
$sel->types('hierarchy-type')->name('yourmodule','yourbasetypename');
foreach($sel as $obj) {
$line_arr['attribute:id'] = $obj->id;
$line_arr['attribute:name'] = $obj->name;
$lines['subnodes:items'][] = $this->parseTemplate($tpl_template_name, $line_arr, $obj->id);
}
$res = $this->parseTemplate($tpl_templates_name, $lines);
P.S. Если вы не планируете использовать tpl-шаблонизатор, то эта переменная может быть пустой строкой или false: $tpl_templates_name
Комментариев нет:
Отправить комментарий