Как в tpl шаблонизаторе вывести alt-name страницы — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показано 7 промежуточных версий этого же участника)
Строка 13: Строка 13:
  
 
'''$page_id '''
 
'''$page_id '''
   Идентификатор страницы, alt-name которой требуется вывести. Если параметр не указан, то берется id текущей страницы, макрос нельзя вызывать через HTTP SCHEME MODE.
+
   Идентификатор страницы, alt-name которой требуется вывести. Если параметр не указан, то берется id текущей страницы, макрос нельзя вызывать через HTTP SCHEME MODE без указания этого параметра.
  
Для применения этого макроса скопируйте содержимое листинга макроса в файл /classes/modules/custom.php.
+
Для применения этого макроса скопируйте код макроса в файл /classes/modules/custom.php.
 +
 
 +
== Код макроса ==
  
 
<source lang="php">
 
<source lang="php">
public function getAltName($page_id == false){
+
public function getAltName($page_id = false){
 
 
 
$current_page_id = cmsController::getInstance()->getCurrentElementId();
 
$current_page_id = cmsController::getInstance()->getCurrentElementId();
Строка 36: Строка 38:
 
}else{
 
}else{
 
$page_id = intval($page_id);
 
$page_id = intval($page_id);
 +
 +
if($page_id == 0){
 +
throw new publicException('wrong id given');
 +
}
 +
 
$page = $hierarchy_col->getElement($page_id, true, true);
 
$page = $hierarchy_col->getElement($page_id, true, true);
 
 

Текущая версия на 13:22, 11 марта 2014

Актуально для версии 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 given');
				}
				
				$page = $hierarchy_col->getElement($page_id, true, true);
				
				if($page == false){
					throw new publicException('page with id = ' . $page_id . ' not found');
				}
				
				return $page->getAltName();
			}
		}