Как в карточке товара каталога вывести несколько картинок с помощью сниппета msProducts?
У меня в каталоге выводится список товаров через сниппет msProducts
Для этого в чанке (product.tpl) запускаю сниппет msGallery
Есть ли способ сразу получить все картинки не делая лишний запрос?
{$_modx->runSnippet('msProducts', [
'parents' => 5,
'includeThumbs' => 'middle,retinamiddle',
'tpl'=> '@FILE chunks/product.tpl'
])}
В карточке товара необходимо вывести все картинки из галлереи.Для этого в чанке (product.tpl) запускаю сниппет msGallery
<li>
<h3>{$pagetitle}</h3>
<figure>
{$_modx->runSnippet('msGallery', [
'product' => $id,
'tpl'=> '@FILE chunks/middle_images.tpl'
])}
</figure>
</li>
Чанк (middle_images.tpl) с картинками выглядит так{foreach $files as $file}
<img src="{$file['middle']}" srcset="{$file['retinamiddle']} 2x">
{/foreach}
Получается при выводе каждого товара идет дополнительный запрос для получения картинок.Есть ли способ сразу получить все картинки не делая лишний запрос?
Комментарии: 2
{'!msProducts' | snippet:[
'parents' => '5',
'tpl'=> '@FILE chunks/middle_images.tpl',
'leftJoin' => '{
"images" : {
"class" : "msProductFile",
"on" : "`images`.product_id = msProduct.id AND `images`.type = \'image\' AND `images`.path NOT LIKE \'%x%\'"
}
}',
'select' => '{
"images" : "GROUP_CONCAT(`images`.`url` SEPARATOR \';\') as `images`"
}',
]}
В самом чанке все картинки будут в строке с разделителем ";"{set $imgArr = $images | split: ';'}
{foreach $imgArr as $fileSrc}
<img src="{$fileSrc}" srcset="{$fileSrc} 2x">
{/foreach}
Здесь выводятся оригиналы, для других превью меняешь/добавляешь leftJoin и select
Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.