Вывод случайного изображения фотогалереи — различия между версиями
Материал из Umicms
Ver (обсуждение | вклад) (Новая страница: «__TOC__ == Задача == Необходимо вывести случайное изображение изо всех фотогалерей. == Решение =…») |
Stexe (обсуждение | вклад) |
||
(не показано 7 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | + | [[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Написание кастомных макросов]] | |
− | + | '''Актуально для версии 2.9.6'''<br/><br/> | |
− | + | '''Задача:''' Выводить путь до изображения случайной фотографии.<br/><br/> | |
+ | '''Реализация:''' | ||
− | + | В данном случае мы будем использовать механизм формирования выборок '''selector'''. <br/>В файл '''\classes\modules\custom.php''' добавим код custom макроса '''getLinkToRandomPhoto('''): | |
− | В данном | ||
<source lang="php"> | <source lang="php"> | ||
− | + | public function getLinkToRandomPhoto() { | |
− | + | $photos = new selector('pages'); | |
− | + | $photos->types('object-type')->name('photoalbum', 'photo'); | |
− | + | $photos->order('rand'); | |
− | + | $randomPhoto = $photos->first; | |
− | + | ||
− | + | if ( $randomPhoto instanceof iumiHierarchyElement ) { | |
− | + | $imagePath = $randomPhoto->getValue('photo')->getFilePath(); | |
− | + | $imagePath = preg_replace('/^\./', '', $imagePath, 1); | |
− | + | return $imagePath; | |
− | + | } | |
− | + | return ''; | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
− | + | Макрос '''getLinkToRandomPhoto(''') возвращает путь до изображения случайной фотографии (элемент иерархии). | |
− | + | <h2>TPL-шаблонизатор</h2> | |
− | + | Пример вызова макроса: | |
<source lang="html4strict"> | <source lang="html4strict"> | ||
− | <img src="%custom | + | <img src="%custom getLinkToRandomPhoto()%" alt="photo" title="random photo" /> |
+ | </source> | ||
+ | <h2>XSLT-шаблонизатор</h2> | ||
+ | Пример вызова макроса: | ||
+ | <source lang="xml"> | ||
+ | <img src="{document('udata://custom/getLinkToRandomPhoto')/udata}" alt="photo" title="random photo" /> | ||
</source> | </source> | ||
− | |||
− |
Текущая версия на 09:21, 27 апреля 2014
Актуально для версии 2.9.6
Задача: Выводить путь до изображения случайной фотографии.
Реализация:
В данном случае мы будем использовать механизм формирования выборок selector.
В файл \classes\modules\custom.php добавим код custom макроса getLinkToRandomPhoto():
public function getLinkToRandomPhoto() {
$photos = new selector('pages');
$photos->types('object-type')->name('photoalbum', 'photo');
$photos->order('rand');
$randomPhoto = $photos->first;
if ( $randomPhoto instanceof iumiHierarchyElement ) {
$imagePath = $randomPhoto->getValue('photo')->getFilePath();
$imagePath = preg_replace('/^\./', '', $imagePath, 1);
return $imagePath;
}
return '';
}
Макрос getLinkToRandomPhoto() возвращает путь до изображения случайной фотографии (элемент иерархии).
TPL-шаблонизатор
Пример вызова макроса:
<img src="%custom getLinkToRandomPhoto()%" alt="photo" title="random photo" />
XSLT-шаблонизатор
Пример вызова макроса:
<img src="{document('udata://custom/getLinkToRandomPhoto')/udata}" alt="photo" title="random photo" />