Вывод случайного изображения фотогалереи с помощью umiSelection

Материал из Umicms

Перейти к: навигация, поиск

Содержание

Задача

Необходимо вывести случайное изображение изо всех фотогалерей.

Решение

В данном варианте мы будем использовать выборки с помощью umiSelection. Кастомный макрос будет возвращать полный путь изображения:

		public function phtShowRandomPhotoLink() {
			// Получаем id типа данных
			$objectTypes = umiObjectTypesCollection::getInstance();
			$objectTypeId = $objectTypes->getBaseType("photoalbum", "photo");
 
			// Создаём выборку
			$sel = new umiSelection;
			$sel->addObjectType($objectTypeId);
			$sel->setActiveFilter(true);
 
			// Получаем результаты
			$res = umiSelectionsParser::runSelection($sel);
			$cnt = umiSelectionsParser::runSelectionCounts($sel);
 
			// Получаем случайный id из результатов выборки
			$phtId = $res[mt_rand(0, $cnt - 1)];
 
			// Получаем объект фотографии
			$objects = umiObjectsCollection::getInstance();
			$phtObject = $objects->getObject($phtId);
 
			// Проверяем, получили мы объект или нет
			if($phtObject instanceof umiObject){
				// Получаем значение поля 'photo'
				$link = $phtObject->getValue('photo');
			} else {
				return false;
			}
 
			return "http://%domain%".$link;
		}

Пример использования

  <img src="%custom phtShowRandomPhotoLink()%" alt="photo" title="random photo" />
Личные инструменты