msProducts

20 ноября 2020, 07:00

msProducts

Сниппет для вывода товаров.

Параметры

Параметр По умолчанию Описание
tpl tpl.msProducts.row Чанк оформления для каждого результата
limit 10 Лимит выборки результатов
offset Пропуск результатов с начала выборки
depth 10 Глубина поиска товаров от каждого родителя.
sortby id Сортировка выборки. Для сортировки по полям товара нужно добавить префикс "Data.", например: "&sortby=`Data.price`"
sortbyOptions Указывает по каким опциям и как сортировать среди перечисленного в &sortby. Передаются строкой, например, "optionkey:integer,optionkey2:datetime"
sortdir ASC Направление сортировки
toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
toSeparatePlaceholders Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре "myPl", вы получите плейсхолдеры [[+myPl0]], [[+myPl1]] и т.д.
parents Список категорий, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 - выборка не ограничивается.
resources Список товаров, через запятую, для вывода в результатах. Если id товара начинается с минуса, этот товар исключается из выборки.
includeContent Выбирать поле "content" у товаров.
includeTVs Список ТВ параметров для выборки, через запятую. Например: "action,time" дадут плейсхолдеры [[+action]] и [[+time]].
includeThumbs Список размеров превьюшек для выборки, через запятую. Например: "120x90,360x240" дадут плейслолдеры [[+120x90]] и [[+360x240]]. Картинки должны быть заранее сгенерированы в галерее товара.
optionFilters Фильтры по опциям товаров. Передаются JSON строкой, например, {"optionkey:>":10}
where Строка, закодированная в JSON, с дополнительными условиями выборки.
link Id связи товаров, который присваивается автоматически при создании новой связи в настройках.
master Id главного товара. Если указаны и "master" и "slave" - выборка пройдёт по master.
slave Id подчиненного товара. Если указан "master" - эта опция игнорируется.
tvPrefix Префикс для ТВ плейсхолдеров, например "tv.". По умолчанию параметр пуст.
outputSeparator \n Необязательная строка для разделения результатов работы.
returnIds Возвращать строку с id товаров, вместо оформленных чанков.
showUnpublished Показывать неопубликованные товары.
showDeleted Показывать удалённые товары.
showHidden 1 Показывать товары, скрытые в меню.
showZeroPrice 1 Показывать товары с нулевой ценой.
wrapIfEmpty 1 Включает вывод чанка-обертки (tplWrapper) даже если результатов нет.
showLog Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекcте "mgr".

Можно использовать и другие общие параметры pdoTools

Особенности

Сниппет msProducts, как и все сниппеты miniShop2, использует pdoTools для работы. Поэтому все основные его параметры совпадают с pdoResources, но есть и особенности.

Поддержка мультикатегорий

Товар MS2 физически находится только в одной категории, однако, «виртуально» может находиться еще в нескольких разделах. msProducts это учитывает.

Получение картинок

Сниппет умеет выбирать картинки из галереи товара при помощи параметр &includeThumbs. Просто укажите список превьюшек через запятую:

[[!msProducts?
    &parents=`0`
    &includeThumbs=`120x90,360x270`
]]

и вы получите плейсхолдеры [[+120x90]] и [[+360x270]] в чанке.

Фильтрация по связям

Вы можете указывать параметр &link и требуемый &master или &slave, выбирая, таким образом, связанные товары:

[[!msProducts?
    &parents=`0`
    &link=`1`
    &master=`15`
]]

Этот вызов получит все товары, которые связаны связью 1 с главным товаром 15.

Работа с опциями

msProducts автоматически подключает и выводи все опции товара в плейсхолдеры вида [[+ключ_опции]].

Специальный параметр &optionFilters подключает необходимые таблицы и дополняет параметр &where, позволяя фильтровать товары по их опциям.

[[!msProducts?
    &parents=`0`
    &optionFilters=`{"core_count:>":4}`
]]

Этот вызов выведет все товары, у которых есть опция core_count и она больше 4.

Для сортировки используется параметр &sortbyOptions. В нем через запятую указываются требуемые характеристики и их типы.

&sortbyOptions=`core_count:number`
&sortby=`{"pagetitle":"ASC", "core_count":"DESC"}`

Порядок сортировки указывается по аналогии параметру &sort.

Псевдонимы

Сниппет msProducts сразу присоединяет несколько связанных таблиц товара, позволяя вам получать данные из них без лишних запросов.

Основной класс - это , а остальные представлены ниже:

  • msProduct - Основной класс выборки, наследник modResource.
  • Data - Класс msProductData. Здесь цена, артикул и прочие свойства товара
  • Vendor - Класс производителя товара msVendor. Здесь его название, страна, логотип и т.д.

Плейсхолдеры

Вы можете увидеть все доступные плейсхолдеры товаров просто не указывая чанк оформления:

<pre>
[[!msProducts?
    &parents=`0`
    &tpl=``
]]
</pre>

Примеры фильтров для вывода msProducts

Вывести товары с особой ценой

...
&where=`{"Data.old_price:!=":"0"}`
...

Вывести товары с отметкой Новый

...
&where=`{"Data.new":"1"}`
...

Вывести товары с отметкой Популярный

...
&where=`{"Data.popular":"1"}`
...

Вывести товары с отметкой Особый

...
&where=`{"Data.favorite":"1"}`
...

Примеры

Вывод всех товаров из категории 15:

[[!msProducts?
    &parents=`15`
]]

Вывод с постраничной разбивкой:

[[!pdoPage?
    &element=`msProducts`
    &parents=`15`
]]
[[!+page.nav]]

Вывод всех товаров дороже 1000 рублей:

[[!pdoPage?
    &element=`msProducts`
    &parents=`0`
    &where=`{"Data.price:>":1000}`
]]
[[!+page.nav]]

Вывод товаров фирмы Sony:

[[!pdoPage?
    &element=`msProducts`
    &parents=`0`
    &where=`{"Vendor.name":"Sony"}`
]]
[[!+page.nav]]

Сортировка по артикулу:

[[!pdoPage?
    &element=`msProducts`
    &parents=`0`
    &sortby=`Data.article`
    &sortdir=`asc`
]]
[[!+page.nav]]