Вывод значения поля для случайной страницы — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
Строка 29: Строка 29:
 
Данный макрос будет работать только при использовании TPL-шаблонизатора.<br/>
 
Данный макрос будет работать только при использовании TPL-шаблонизатора.<br/>
 
Макрос '''getRandomElementPropValue()''' возвращает содержимое поля с идентификатором '''$propName''' случайной страницы по шаблону '''$template''', которая является дочерней по отношению к странице с id = '''$parentId'''.<br/>
 
Макрос '''getRandomElementPropValue()''' возвращает содержимое поля с идентификатором '''$propName''' случайной страницы по шаблону '''$template''', которая является дочерней по отношению к странице с id = '''$parentId'''.<br/>
 
+
Блоки макроса '''getRandomElementPropValue()''' соответствуют блокам макроса '''%data getProperty()%'''<br/>
 +
http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/shablony_dannyh/data_getproperty/<br/>
 
Пример вызова макроса:
 
Пример вызова макроса:
 
<source lang="html4strict">
 
<source lang="html4strict">
 
%custom getRandomElementPropValue('48','h1')%
 
%custom getRandomElementPropValue('48','h1')%
 
</source>
 
</source>

Текущая версия на 08:40, 27 апреля 2014

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

Задача: Выводить содержимое какого-либо поля случайной страницы.

Реализация:

В файл \classes\modules\custom.php добавим код custom макроса getRandomElementPropValue():

public function getRandomElementPropValue($parentId, $propName = false, $template = 'default') {
	if ( !$parentId ) {
		$parentId = getRequest('param0');
	}
	if ( !$propName ) {
		$propName = getRequest('param1');
	}
	$onlyActive = false;
	$childElements = array();
	$childElements = umiHierarchy::getInstance()->getChildIds($parentId, $onlyActive);
	$childElementsCount = count($childElements);
	
	if ( $childElementsCount > 0 ) {
		$randomElementIndex = mt_rand (0, $childElementsCount - 1);
		$randomElementId = $childElements[$randomElementIndex];
		$dataModule = cmsController::getInstance()->getModule('data');
		return $dataModule->getProperty($randomElementId, $propName, $template);
	}
	
}

Данный макрос будет работать только при использовании TPL-шаблонизатора.
Макрос getRandomElementPropValue() возвращает содержимое поля с идентификатором $propName случайной страницы по шаблону $template, которая является дочерней по отношению к странице с id = $parentId.
Блоки макроса getRandomElementPropValue() соответствуют блокам макроса %data getProperty()%
http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/shablony_dannyh/data_getproperty/
Пример вызова макроса:

%custom getRandomElementPropValue('48','h1')%