Как в tpl шаблонизаторе вывести alt-name страницы

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 2.9.5

Задача

Если Вы столкнулись с данной задачей, то решить её стандартными средствами нельзя. Необходимо написать кастомный макрос, пример оного дан ниже.

  • Для xslt применения макроса не имеет смысла - alt-name можно получить из result'а.

Решение

%custom getAltName()% — выводит alt-name страницы

Параметры: custom getAltName([$page_id = false])

$page_id

  Идентификатор страницы, alt-name которой требуется вывести. Если параметр не указан, то берется id текущей страницы, макрос нельзя вызывать через HTTP SCHEME MODE.

Для применения этого макроса скопируйте код макроса в файл /classes/modules/custom.php.

Код макроса

public function getAltName($page_id = false){
			
			$current_page_id = cmsController::getInstance()->getCurrentElementId();
			
			$hierarchy_col = umiHierarchy::getInstance(); 			
			
			if($page_id == false){
			
				if($current_page_id == false && defined('VIA_HTTP_SCHEME')){
					throw new publicException('cant get current element via HTTP SCHEME MODE');
				}
				
				$page_id = $current_page_id;
				$page = $hierarchy_col->getElement($page_id, true, true);
				
				return $page->getAltName();
			}else{
				$page_id = intval($page_id);
				
				if($page_id == 0){
					throw new publicException('wrong id');
				}
				
				$page = $hierarchy_col->getElement($page_id, true, true);
				
				if($page == false){
					throw new publicException('page with id = ' . $page_id . ' not found');
				}
				
				return $page->getAltName();
			}
		}