Получение ссылки на страницу с использованием параметра object id
В некоторых случаях нам известен object_id страницы сайта и нужно получить ссылку на эту страницу. Т.е. существует element_id, который практически всегда мы и используем, видим его при просмотре страниц сайта в административной части, но также у страницы существует object_id, это тот объект в котором хранятся значения всех стандартных полей. Более подробная информация об архитектуре: Архитектура_базы_данных_системы
Чтобы получить ссылку на страницу, зная ее object_id, необходимо воспользоваться кастомным макросом, который мы пропишем в файле classes/modules/custom.php, после слов //TODO:
public function linkobject($object_id) {
$hierarchy = umiHierarchy::getInstance();
$id_arr = $hierarchy->getObjectInstances($object_id);
return $hierarchy->getPathById($id_arr[0]);
}
Пример использования может быть следующим. Используем макрос data getProperty(), для получения object_id:
%data getProperty(%id%, 'company', 'linkobject')%
company - идентификатор поля типа Выпадающий список.
А в шаблоне tpls/data/linkobject.tpl, пропишем следующий код:
<?php $FORMS = Array(); $FORMS['relation'] = <<<END %title%: <a href="%custom linkobject(%object_id%)%">%value%</a> END; $FORMS['relation_empty'] = <<<END END; ?>