Вывод всех картинок товара в списке товаров
Здравствуйте!
В чанке с шаблоном товара нужно чтобы выводились все картинки галереи. Ок, пробую msGallery, таким образом
Пробую pdoResources использовать, тоже безуспешно
Could not process query, error #1054: Unknown column 'publishedon' in 'order clause'
Если вызывать без fenom, не работают остальные теги, те что в fenom — синтаксисе.
Вопрос собственно, была ли у кого-то такая задача, получилось ли вывести и как вы это сделали)
Спасибо
В чанке с шаблоном товара нужно чтобы выводились все картинки галереи. Ок, пробую msGallery, таким образом
{$_modx->runSnippet('!msGallery', [
'tpl' => 'tpl.msGalleryProd',
'product' => $id,
'limit' => 2
])}
Изображения выводятся, но только у первых товаров каждой категории, дальше не выводятся товары. На форуме были такие проблемы у кого-то, но решения там не было. Пробую pdoResources использовать, тоже безуспешно
{$_modx->runSnippet('!pdoResources', [
'class' => 'msProductFile'
'where' => ['product_id' => $id],
'showLog' => 1
])}
Тут пробую без шаблона, посмотреть логи — ошибка Could not process query, error #1054: Unknown column 'publishedon' in 'order clause'
Если вызывать без fenom, не работают остальные теги, те что в fenom — синтаксисе.
Вопрос собственно, была ли у кого-то такая задача, получилось ли вывести и как вы это сделали)
Спасибо
Комментарии: 16
В итоге полазив по форуму имеем такую конструкцию
добавила пустой шаблон для каждого второго изображения
Неужели правда в таких случаях не используют msGallery?
[[pdoResources?
&class=`msProductFile`
&tpl=`@INLINE <li><img src="[[+url]]" /></li>`
&where=`{"product_id":"[[+id]]", "path:LIKE":"%/800x600/"}`
&sortdir=``
&showLog=`1`
]]
Но! Должно быть изображение1, изображение2, изображение3 и т.п. А у меня почему-то все по 2 раза выводится, типа Изображение1, изображение1, изображение2, изображение2. добавила пустой шаблон для каждого второго изображения
&tplOdd=`@INLINE `
Но это как-то ненормально.Неужели правда в таких случаях не используют msGallery?
Картинки проще всего msGallery выводить
Ниже — чанки tpl.msGallery
Все файлы (не обязательно картинки)
Только первый файл
Можно предварительно посмотреть массив
[[!msGallery?
&tpl=`tpl.msGallery`
&product=`[[+id]]`]]
Ниже — чанки tpl.msGallery
Все файлы (не обязательно картинки)
{foreach $files as $file}
/assets/images/products/{$file['path']}{$file['file']
{/foreach}
Только первый файл
/assets/images/products/{$file['path']}{$files['0']['file']}
Только второй/assets/images/products/{$file['path']}{$files['1']['file']}
Можно предварительно посмотреть массив
<pre> [[!msGallery?
&tpl=``
&product=`[[+id]]`]]</pre>
В том и дело, что не хочет так выводить. Точнее выводятся картинки для первого товара и первый товар, дальше товары не выводятся
Добрый день!
У меня аналогичная ситуация — Вы смогли решить?
У меня аналогичная ситуация — Вы смогли решить?
Вывожу второе фото для каждого товара в списке товаров через такой код:
[[!msGallery? &product=`[[+id]]` &tpl=`tpl.msGallerySecondFoto`]]
Вот tpl.msGallerySecondFoto:<img src="{$files[1]['360x270']}" alt="" title="">
Число запросов увеличилось примерно в 2 раза, время загрузки страницы увеличилось с 0,2с до 0,3с. тут можно как-то использовать мощь PDO или уже все, край?
leftJoin Вам в помощь
Имеется ввиду джойнить тут?
[[!pdoPage?
&element=`msProducts`
]]
pdoPage,pdoResource,msProducts — без разницы, где джойнить. Где-то от Василия пример видел, но увы, потерял.
Тщательно пережевав это modx.pro/help/7693/#comment-53831, решил свой вопрос — Как вывести два фото к каждому товару на странице категории:
в шаблоне категории вызываю список товаров так:
Извините, если кому наступил на мозоль, разжевав досконально, я знаю, что тут это не приветствуется...)))
в шаблоне категории вызываю список товаров так:
[[!pdoPage?
&element=`msProducts`
&loadModels=`gallery`
&leftJoin=`{
"360x270": {"class":"msProductFile","alias":"360x270", "on": "360x270.product_id = msProduct.id AND 360x270.path LIKE '%/360x270/' AND 360x270.rank=0"}
,"360x270x1": {"class":"msProductFile","alias":"360x270x1", "on": "360x270x1.product_id = msProduct.id AND 360x270x1.path LIKE '%/360x270/' AND 360x270x1.rank=1"}
}`
&select=`{
"msProduct":"*"
,"360x270":"360x270.url as 360x270"
,"360x270x1":"360x270x1.url as 360x270x1"
}`
]]
и в чанке tpl.msProducts.row.php вывожу ДВА фото товара так:<img src="[[+360x270:default=`[[++assets_url]]components/minishop2/img/web/ms2_small.png`]]">
<img src="[[+360x270x1:default=`[[++assets_url]]components/minishop2/img/web/ms2_small.png`]]">
Количество запросов снизилось вдвое, время загрузки страницы упало в полтора раза.Извините, если кому наступил на мозоль, разжевав досконально, я знаю, что тут это не приветствуется...)))
Огромное спасибо тебе, твой вариант очень спас меня!
А можно как-то реализовать через [[!msGallery?]]?
У меня получилось вывести все картинки в карточки товаров в списек таким образом
У меня получилось вывести все картинки в карточки товаров в списек таким образом
[[!msGallery? &product=`[[+id]]` &tpl=`msGallerySliderItem.tpl`]]
Чанк msGallerySliderItem.tpl{if $files?}
{if $files | length > 1}
<div class="slider-item-wrap">
<div class="slider-item owl-carousel">
{var $num = 1}
{foreach $files as $file}
{if $num == 1} {var $num = 0}
{else}
<a href="{$id | url}"><img src="{$file['330x330']}" alt="{$file['description']}" title="{$file['name']}"></a>
{/if}
{/foreach}
</div>
</div>
{else}
{/if}
{else}
{/if}
Всё работает, но проблема в том что не работает ссылка на карточку товара <a href="{$id | url}"><img src="{$file['330x330']}" alt="{$file['description']}" title="{$file['name']}"></a>
Срабатывает [[~[[+id]]]], но только на первой странице!
Попробуй добавить переменную и ее подставлять. Примерно так:
{set $link_product = $id | url}
и выводим:<a href="{$link_product }"><img src="{$file['330x330']}" alt="{$file['description']}" title="{$file['name']}"></a>
В каком именно месте должна назначаться переменная?
Можешь над этим
{if $files?}
указать
К сожалению не работает. Выдает пустую ссылку
<a href>
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.