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