Получение значений полей у родительских страниц любого уровня — различия между версиями
Материал из Umicms
| VITL' (обсуждение | вклад)  (Новая страница: « category:Написание кастомных макросов Используем кастомный макрос, который пропишем в фай…») | Stexe (обсуждение | вклад)  | ||
| Строка 1: | Строка 1: | ||
| − | + | [[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория: Написание кастомных макросов]] | |
| − | + | '''Актуально для версии 2.9.6'''<br/><br/> | |
| − | ~classes/modules/custom.php | + | '''Задача:''' Реализовать функционал получения значения полей родительских страниц любого уровня вложенности.<br/><br/> | 
| − | + | '''Реализация:''' <br/> | |
| + | |||
| + | <h2>TPL-шаблонизатор</h2> | ||
| + | |||
| + | <h2>XSLT-шаблонизатор</h2>  | ||
| + | |||
| + | |||
| + | В файл '''~classes/modules/custom.php''' добавим определение custom макроса valueParent(): | ||
| + | |||
| <source lang="php"> | <source lang="php"> | ||
Версия 05:43, 27 апреля 2014
Актуально для версии 2.9.6
Задача: Реализовать функционал получения значения полей родительских страниц любого уровня вложенности.
Реализация: 
TPL-шаблонизатор
XSLT-шаблонизатор
В файл ~classes/modules/custom.php добавим определение custom макроса valueParent():
  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", то будет получена ссылка на страницу родителя.
