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

Материал из Umicms
Перейти к:навигация, поиск
Строка 1: Строка 1:
[[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория: Модуль Новости]]
+
[[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Написание кастомных макросов]]
 
'''Актуально для версии 2.9.6'''<br/><br/>
 
'''Актуально для версии 2.9.6'''<br/><br/>
'''Задача:''' Выводить путь до изображения случайной фотографии<br/><br/>
+
'''Задача:''' Выводить путь до изображения случайной фотографии.<br/><br/>
 
'''Реализация:'''  
 
'''Реализация:'''  
<h2>TPL-шаблонизатор</h2>
 
 
<h2>XSLT-шаблонизатор</h2>
 
 
  
 
+
В данном варианте мы будем использовать механизм формирования выборок selector. <br/>В файл '''\classes\modules\custom.php''' добавим код custom макроса '''getLinkToRandomPhoto('''):
В данном варианте мы будем использовать выборки с помощью [[umiSelection]]. Кастомный макрос будет возвращать полный путь изображения:
 
  
 
<source lang="php">
 
<source lang="php">
Строка 26: Строка 21:
 
}
 
}
 
</source>
 
</source>
 
+
<h2>TPL-шаблонизатор</h2>
== Пример использования ==
+
Пример вызова макроса:
 
 
 
<source lang="html4strict">
 
<source lang="html4strict">
   <img src="%custom phtShowRandomPhotoLink()%" alt="photo" title="random photo" />
+
   <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>
 
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Написание кастомных макросов]]
 

Версия 09:17, 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 '';
}

TPL-шаблонизатор

Пример вызова макроса:

  <img src="%custom getLinkToRandomPhoto()%" alt="photo" title="random photo" />

XSLT-шаблонизатор

Пример вызова макроса:

  <img src="{document('udata://custom/getLinkToRandomPhoto')}/udata" alt="photo" title="random photo" />