
- MODX 3
- PHP 8.1
- miniShop3


Документ для двух ролей:
ms3_product_sets для (product_id, type).hideIfEmpty=true → возвращается пустая строка '';hideIfEmpty=false → возвращается emptyTpl.max_items ограничивается диапазоном 1..100.return=ids, сниппет возвращает только список ID.resource_id / productId — базовый товар.category_id — принудительная категория для авто-режимов.set_id — номер VIP-набора (vip_set_{set_id}).exclude_ids — исключаемые ID.buy_together Используйте для блока «С этим товаром покупают» на карточке товара.
Приоритет:
type=buy_together.msps_get_auto_sales: товары из тех же заказов MiniShop3, что и текущий).msps_get_auto_recommendations по категории товара или category_id.exclude_ids применяется и к ручной, и к авто-ветке.
{'ms3ProductSets' | snippet : [
'type' => 'buy_together',
'resource_id' => $_modx->resource.id,
'max_items' => 6,
'tpl' => 'tplSetItem'
]}[[!ms3ProductSets?
&type=`buy_together`
&resource_id=`[[*id]]`
&max_items=`6`
&tpl=`tplSetItem`
]]similar Показывает альтернативы из той же категории.
Приоритет:
type=similar.msps_get_similar_products: parent) текущего товара;exclude_ids.{'ms3ProductSets' | snippet : [
'type' => 'similar',
'resource_id' => $_modx->resource.id,
'exclude_ids' => $_modx->resource.id,
'max_items' => 8,
'tpl' => 'tplSetItem'
]}[[!ms3ProductSets?
&type=`similar`
&resource_id=`[[*id]]`
&exclude_ids=`[[*id]]`
&max_items=`8`
&tpl=`tplSetItem`
]]popcorn Компактный блок импульсных/дополнительных покупок.
Приоритет:
type=popcorn.{'ms3ProductSets' | snippet : [
'type' => 'popcorn',
'resource_id' => $_modx->resource.id,
'max_items' => 4,
'tpl' => 'tplPopcorn'
]}[[!ms3ProductSets?
&type=`popcorn`
&resource_id=`[[*id]]`
&max_items=`4`
&tpl=`tplPopcorn`
]]cart_suggestion Рекомендации в корзине или перед оформлением заказа.
Приоритет:
type=cart_suggestion.category_id или категории resource_id.{'ms3ProductSets' | snippet : [
'type' => 'cart_suggestion',
'category_id' => 5,
'resource_id' => 0,
'max_items' => 6,
'tpl' => 'tplSetItem'
]}[[!ms3ProductSets?
&type=`cart_suggestion`
&category_id=`5`
&resource_id=`0`
&max_items=`6`
&tpl=`tplSetItem`
]]auto_sales Рекомендации на основе фактических заказов («часто покупают вместе»).
Приоритет:
type=auto_sales.ms3_order_product self-join, статусы заказа 2,4,5), сортировка по частоте.similar.{'ms3ProductSets' | snippet : [
'type' => 'auto_sales',
'resource_id' => $_modx->resource.id,
'max_items' => 6,
'tpl' => 'tplSetItem'
]}[[!ms3ProductSets?
&type=`auto_sales`
&resource_id=`[[*id]]`
&max_items=`6`
&tpl=`tplSetItem`
]]vip Ручные промо-наборы и акционные витрины.
Приоритет:
type=vip.ms3productsets.vip_set_{set_id}.Если set_id не задан или меньше 1, используется set_id=1.
{'ms3ProductSets' | snippet : [
'type' => 'vip',
'set_id' => 1,
'max_items' => 8,
'tpl' => 'tplSetVIP'
]}[[!ms3ProductSets?
&type=`vip`
&set_id=`1`
&max_items=`8`
&tpl=`tplSetVIP`
]]auto Универсальные рекомендации для главной, категорий и лендингов.
Приоритет:
type=auto.msps_get_auto_recommendations: resource_id),category_id.{'ms3ProductSets' | snippet : [
'type' => 'auto',
'category_id' => 5,
'resource_id' => 0,
'max_items' => 12,
'tpl' => 'tplSetItem'
]}[[!ms3ProductSets?
&type=`auto`
&category_id=`5`
&resource_id=`0`
&max_items=`12`
&tpl=`tplSetItem`
]]also-bought и cross-sell Синонимы логики buy_together на уровне msps_get_products_by_type:
type в таблице (если заданы).msps_get_auto_sales).В админке шаблоны создаются с типами из MSPS_ADMIN_TEMPLATE_TYPES (buy_together, similar, …). Для фронта допустимы алиасы also-bought и cross-sell в параметре type сниппета.
custom Обрабатывается как auto: таблица type=custom, иначе авто по категории.
| Тип | Если ручной подборки нет |
|---|---|
buy_together | co-purchase → авто по категории |
also-bought, cross-sell | как buy_together |
similar | похожие по категории |
popcorn | авто по категории → fallback на общий авто |
cart_suggestion | авто по категории/category_id |
auto_sales | co-purchase → fallback на similar |
vip | системная настройка vip_set_{set_id} |
auto, custom | авто по категории/каталогу |
auto/similar и точечно добавляйте ручные связи только для важных SKU.vip + системные настройки.auto_sales проверяйте, что в магазине есть достаточно заказов, иначе чаще будет fallback на similar.sortby; в авто-режиме порядок чаще случайный.