Вывод значения поля для случайной страницы — различия между версиями
Материал из Umicms
VITL' (обсуждение | вклад) (Новая страница: «category:Написание кастомных макросов Если необходимо вывести фотографию случайно выбранн…») |
Stexe (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | [[ | + | [[Категория:Написание кастомных макросов]][[Категория:Верстка в TPL]] |
| − | + | '''Актуально для версии 2.9.6'''<br/><br/> | |
| + | '''Задача:''' Выводить содержимое какого-либо поля случайной страницы.<br/><br/> | ||
| + | '''Реализация:''' | ||
| + | |||
| + | В файл '''\classes\modules\custom.php''' добавим код custom макроса '''getRandomElementPropValue()''': | ||
<source lang="php"> | <source lang="php"> | ||
| − | public function | + | 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); | ||
| + | } | ||
| + | |||
} | } | ||
</source> | </source> | ||
| + | Данный макрос будет работать только при использовании TPL-шаблонизатора.<br/> | ||
| + | Макрос '''getRandomElementPropValue()''' возвращает содержимое поля с идентификатором '''$propName''' случайной страницы по шаблону '''$template''', которая является дочерней по отношению к странице с id = '''$parentId'''.<br/> | ||
| − | Пример вызова: | + | Пример вызова макроса: |
| − | <source lang=" | + | <source lang="html4strict"> |
| − | %custom | + | %custom getRandomElementPropValue('48','h1')% |
</source> | </source> | ||
| − | |||
| − | |||
Версия 08:37, 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.
Пример вызова макроса:
%custom getRandomElementPropValue('48','h1')%