Список ресурсов (каталог, статьи) с первым фото галереи у каждого. Фото присоединяется в запросе pdoResources, адрес превью по ID даёт сниппет g3xGetImage.
[[!pdoResources?
&parents=`5`
&tpl=`ListRowTpl`
&leftJoin=`{
"Image": {
"class": "Gallery3x\\Model\\Gallery3xFile",
"on": "modResource.id = Image.resource_id AND Image.position = 0 AND Image.active = 1"
}
}`
&select=`{
"modResource": "modResource.id, modResource.pagetitle, modResource.introtext, modResource.uri",
"Image": "Image.id AS image_id, Image.alt AS image_alt"
}`
]]
Image.position = 0— первое фото в порядке галереи. Если первое фото выключено, у ресурса не будет картинки — тогда уберитеImage.active = 1или выбирайте минимальную позицию подзапросом.
Чанк ListRowTpl
{set $img = $image_id ? ($image_id | g3xGetImage : 'small') : ''}
<div class="catalog-item">
<a href="{$id | url}">
<img src="{$img ?: '/assets/images/no-image.png'}" alt="{$image_alt ?: $pagetitle}">
</a>
<h3><a href="{$id | url}">{$pagetitle}</a></h3>
<p>{$introtext}</p>
</div>
Сниппет g3xGetImage
| Параметр | Описание |
|---|---|
&input | ID фото Gallery3x. |
&options | Имя размера из источника (small, medium, big …) или original. По умолчанию medium. |
Вызов тегом: [[g3xGetImage? &input=`[[+image_id]]` &options=`small`]]. Пустой результат — фото нет или такого размера у него нет.