Вывод случайного изображения фотогалереи
Материал из Umicms
Версия от 09:10, 17 мая 2010; Ver (обсуждение | вклад) (Новая страница: «__TOC__ == Задача == Необходимо вывести случайное изображение изо всех фотогалерей. == Решение =…»)
Содержание
Задача
Необходимо вывести случайное изображение изо всех фотогалерей.
Решение
В данном варианте мы будем использовать выборки с помощью 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" />