Получение ссылки на страницу с использованием параметра object id

Материал из Umicms
Версия от 10:53, 8 сентября 2011; Cmac (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

В некоторых случаях нам известен 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;

?>