Подгрузка галереи и нужных полей товара в простой ресурс


Добрый день!
Сегодня небольшая заметка о том как можно сделать подгрузку в простой ресурс галереи и каких нибудь полей товаров.

Задача: Нужно сделать страницу — галерею выполненных работ с выводом некоторых его полей.

Дублировать фотографии товаров, писать куда то в TV поля их параметры — это не выход.

Решение: Поэтому берем штатный снипет msGallery и к нему с помощью leftJoin добавляем недостающее данные, его вызов получается следующим:

{'!msGallery' | snippet:[
                                        'product' => $_modx->resource.ProductId,
                                        'tpl' => 'custom2.msGallery',
                                        'leftJoin' => [
                                            'products' =>
                                                [
                                                    'class' => 'msProduct',
                                                    'on' => 'product_id = products.id'
                                                ],
                                            'productsData' =>
                                                [
                                                    'class' => 'msProductData',
                                                    'on' => 'products.id = productsData.id'
                                                ]
                                        ],
                                        'select' => [
                                            'msProductFile' => '*',
                                            'products' => 'pagetitle',
                                            'productsData' => 'article'
                                        ],
                                        'showLog' => 0
                                    ]}
Сперва джоиним таблицу товаров, затем их данных товаров, и в выбираем какие именно поля нас интересуют в той и другой таблице.

При этом надо понимать что поля эти попадут в общий массив данных с полями msGallery поэтому чанк у меня получился вот такой:

<div id="msGallery">
   
    {if $files?}
        <div class="fotorama"
             data-nav="thumbs"
             data-thumbheight="45"
             data-allowfullscreen="true"
             data-swipe="true"
             data-autoplay="5000">
            {foreach $files as $file}
                <a href="{$file['url']}" target="_blank">
                    <img src="{$file['small']}" alt="" title="">
                    
                </a>
            {/foreach}
            
        </div>
        {if $file['article']?}<p>Артикул: {$file['article']}, {/if}{if $file['pagetitle']?}{$file['pagetitle']}</p>{/if}
        
                    
    {else}
        <img src="{('assets_url' | option) ~ 'components/minishop2/img/web/ms2_medium.png'}"
             srcset="{('assets_url' | option) ~ 'components/minishop2/img/web/ms2_medium@2x.png'} 2x"
             alt="" title=""/>
    {/if}
</div>
Таким образом создается ресурс с определенным шаблоном где у нас этот вызов, затем в TV ProductId указываем айди нужного товара и всё!
30 апреля 2018, 13:20    Сергей Лелеко   G+  
7    533 +12


Комментарии ()

  1. Илья Уткин 30 апреля 2018, 19:43 # +2
    Блин! Случайно вместо плюсика минус поставил =(
    1. Михаил 30 апреля 2018, 19:51 # +1
      Поправил
    Вы должны авторизоваться, чтобы оставлять комментарии.