Вывод случайного изображения фотогалереи с помощью 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" />