Для этого:
1. условно считаем, что всего может быть только два типа preview-объектов: "thumbs" (без уточнения user или ротации) & "video" (то, что было импортировано под паттерном `video_preview_url`)
2. в цикл <thumb> добавляется два парамерта:
2.1. `preview_types_attr` принимающий в качестве значения имя будущего html-атрибута, который будет выведен вместо нового тэга <!--PREVIEW_TYPES_INFO-->, с одним или более интересуемыми нас типами preview-объектов из пункта #1, в качестве значения этого атрибута
если `preview_types_attr` не задан явно, то для данного цикла весь механизм preview отключается (экономим ресурсы)
2.2 `preview_types_priority`, который задаёт порядок и приоритетность имеющихся типов preview и может иметь значения: "thumbs", "video", "all"
на основе порядка его значений, новый тэг <!--PREVIEW_TYPES_INFO--> будет возвращать preview-тип сразу по определению его наличия, или пустую строку если требуемый preview-тип у галеры отсутствует
3. добавляется новый тэг <!--PREVIEW_TYPES_INFO-->, возвращающий имя html-атрибута (из параметра `preview_types_attr`) c имеющимся preview-типом для этой галеры, или пустую строку, если требуемый preview-type для галеры не задан
`short-circuit` для <!--PREVIEW_TYPES_INFO-->: поиск preview объектов запрошенных типов прекращается как только был найден первый preview-type, соответствующий находящемуся в начале списка переданных значений, например:
- preview_types_priority="video,thumbs" и для галеры есть видео превью (галера импортировалась с паттерном `video_preview_url` ): в этом случае <!--PREVIEW_TYPES_INFO--> сразу вернёт `data-preview-type="video"`
- preview_types_priority="thumbs, video" и для галеры есть тумбы и видео: в этом случае <!--PREVIEW_TYPES_INFO--> сразу вернёт `data-preview-type="thumbs"`
- preview_types_priority="thumbs, video" и для галеры есть видео превью, но нет тумб: в этом случае <!--PREVIEW_TYPES_INFO--> вернёт `data-preview-type="video"` не смотря на то, что юзера интересует thumbs в первую очередь
- preview_types_priority="all" - <!--PREVIEW_TYPES_INFO--> вернёт через пробел вообще все preview-типы, которые есть для этой галеры: `data-preview-type="video thumbs"` (через пробел - для селекта их в CSS-е)
значение по умолчанию preview_types_priority - 'video,thumbs' (видео preview эффективнее чем Rolling тумбами)
4. новый тэг <!--PREVIEW_ITEMS-->, использующийся в отдельном шаблоне, который на основе полученного в query string парамерта `preview_type` вернёт json-список реально имеющихся preview-объектов для этой галеры
<!--PREVIEW_ITEMS--> анализирует все те же самые параметры которые можно передать смарту (gallery_id, gallery_slug, sponsor_id, trader_id, etc), плюс новый `preview_type`, который указывает какой именно тип preview ("thumbs" | "video") нам требуется
т.е. просто отдаёт json_encode массива всех preview-объектов переданного в `preview_type` типа
так же, если preview_type==thumbs, то <!--PREVIEW_ITEMS--> возвращает те тумбы (<!--USER_THUMBS_FOLDER-->/*.* или <!--ALL_THUMBS-->) которых больше (как правило, это user thumbs, но смарт должен проверить, что в <!--USER_THUMBS_FOLDER-->/*.* они реально существует, и что собственно их больше чем <!--ALL_THUMBS-->)
5. (опционально) форсирование отключения определения preview types через GET-параметр disable_preview_types=true, но без изменения самих шаблонов, например:
Code: Select all
<?php
# common.php
if (isset($_GET['page']) && intval($_GET['page']) > 10) {
$_GET['disable_preview_types'] = true
}
# ...
?>







