Вывод всех картинок товара в списке товаров

Здравствуйте!
В чанке с шаблоном товара нужно чтобы выводились все картинки галереи. Ок, пробую 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 — синтаксисе.
Вопрос собственно, была ли у кого-то такая задача, получилось ли вывести и как вы это сделали)
Спасибо
Аля
17 сентября 2016, 14:15
modx.pro
6
6 820
0

Комментарии: 16

Аля
17 сентября 2016, 23:38
0
В итоге полазив по форуму имеем такую конструкцию
[[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?
    Антон
    18 сентября 2016, 08:27
    0
    Картинки проще всего 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>
      Аля
      22 сентября 2016, 13:58
      0
      В том и дело, что не хочет так выводить. Точнее выводятся картинки для первого товара и первый товар, дальше товары не выводятся
        Сергей
        20 января 2017, 14:05
        0
        Добрый день!
        У меня аналогичная ситуация — Вы смогли решить?
    Сергей
    Сергей
    29 августа 2017, 00:23
    0
    Вывожу второе фото для каждого товара в списке товаров через такой код:
    [[!msGallery? &product=`[[+id]]` &tpl=`tpl.msGallerySecondFoto`]]
    Вот tpl.msGallerySecondFoto:
    <img src="{$files[1]['360x270']}" alt="" title="">
    Число запросов увеличилось примерно в 2 раза, время загрузки страницы увеличилось с 0,2с до 0,3с. тут можно как-то использовать мощь PDO или уже все, край?
      Александр
      29 августа 2017, 10:43
      0
      leftJoin Вам в помощь
        Сергей
        Сергей
        29 августа 2017, 11:45
        0
        Имеется ввиду джойнить тут?
        [[!pdoPage?
        	&element=`msProducts`
        ]]
    Сергей
    Сергей
    01 сентября 2017, 00:14
    9
    0
    Тщательно пережевав это 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`]]">
    Количество запросов снизилось вдвое, время загрузки страницы упало в полтора раза.
    Извините, если кому наступил на мозоль, разжевав досконально, я знаю, что тут это не приветствуется...)))
      Никита
      10 февраля 2018, 03:15
      0
      Огромное спасибо тебе, твой вариант очень спас меня!
      Alexandr
      21 июня 2020, 15:29
      0
      А можно как-то реализовать через [[!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]]]], но только на первой странице!
        Иван Бочкарев
        21 июня 2020, 17:18
        +2
        Попробуй добавить переменную и ее подставлять. Примерно так:
        {set $link_product = $id | url}
        и выводим:
        <a href="{$link_product }"><img src="{$file['330x330']}" alt="{$file['description']}" title="{$file['name']}"></a>
          Alexandr
          24 июня 2020, 19:04
          0
          В каком именно месте должна назначаться переменная?
            Иван Бочкарев
            25 июня 2020, 06:29
            0
            Можешь над этим
            {if $files?}
            указать
              Alexandr
              25 июня 2020, 09:55
              0
              К сожалению не работает. Выдает пустую ссылку
              <a href>
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        16