Получение значений полей у родительских страниц любого уровня
Материал из Umicms
Используем кастомный макрос, который пропишем в файл ~classes/modules/custom.php, после слов //TODO: Write your own macroses here.
public function valueParent($id,$level,$field){ $hierarchy = umiHierarchy::getInstance(); if ($idParents = $hierarchy->getAllParents($id)){ if(!array_key_exists($level,$idParents)) return; $idParent = $idParents[$level]; if ($field == "url"){ $content_inst = cmsController::getInstance()->getModule("content"); return $content_inst->get_page_url($idParent); } if(!$value_field = $hierarchy->getElement($idParent)->getObject()->getValue($field)) return; return $value_field; } return ""; }
Пример вызова макроса: %custom valueParent(%pid%, 2, h1)%
%pid% - В данном случае id текущей страницы, относительно которой будем брать родительскую страницу.
2 - уровень вложенности родительской страницы от корня сайта.
1 - самый верхний уровень (основные родительские страницы в структуре сайта)
h1 - идентификатор поля, значение которого надо получить. Если третьим параметром передан "url", то будет получена ссылка на страницу родителя.
