Получение значений полей у родительских страниц любого уровня — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: « category:Написание кастомных макросов Используем кастомный макрос, который пропишем в фай…»)
 
Строка 1: Строка 1:
[[category:Написание кастомных макросов]]
+
[[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория: Написание кастомных макросов]]
Используем кастомный макрос, который пропишем в файл  
+
'''Актуально для версии 2.9.6'''<br/><br/>
~classes/modules/custom.php, после слов
+
'''Задача:''' Реализовать функционал получения значения полей родительских страниц любого уровня вложенности.<br/><br/>
//TODO: Write your own macroses here.
+
'''Реализация:''' <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", то будет получена ссылка на страницу родителя.