Skip to content
На этой странице
  1. Компоненты
  2. miniShop2
  3. Сниппеты
  4. msProducts

msProducts

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

msProducts

Параметры

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

Подсказка

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

Особенности

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Псевдонимы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

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

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

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

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

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