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

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: « category:Написание кастомных макросов Используем кастомный макрос, который пропишем в фай…»)
(нет различий)

Версия 13:52, 29 марта 2010

Используем кастомный макрос, который пропишем в файл ~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", то будет получена ссылка на страницу родителя.