Skip to content
ms3ProductSets
ms3ProductSets
Динамические подборки товаров для MiniShop3. Ручные связи, авто-рекомендации, админка шаблонов
  • MODX 3
  • PHP 8.1
  • miniShop3
  1. Компоненты
  2. ms3ProductSets
  3. Для разработчика

API и интерфейсы ​

Сниппет ms3ProductSets ​

Ключевые параметры ​

ПараметрПо умолчаниюОписание
typebuy_togetherТип подборки
resource_id / productIdтекущий ресурсID базового товара
max_itemsms3productsets.max_itemsЛимит (1..100)
category_id0Категория для авто-подбора
set_id0Номер VIP-набора (для type=vip). При 0 или не заданном используется 1 (ms3productsets.vip_set_1).
tpltplSetItemЧанк карточки (tplSetVIP / tplPopcorn используют itemTpl для строки)
itemTpl''Чанк строки, если tpl это обёртка VIP/popcorn
set_title / discount_percent''Плейсхолдеры обёртки VIP
showLogfalseПроброс в msProducts
emptyTpltplSetEmptyЧанк для пустого результата
hideIfEmptytruetrue -> пустая строка, false -> emptyTpl
exclude_ids''Исключаемые ID
tplWrapper''Обёртка с плейсхолдерами output, type, count
sortby / sortdir'' / ASCЕсли sortby пуст, сохраняется порядок подборки
showUnpublishedfalseПроброс в msProducts
showHiddenfalseПроброс в msProducts
includeTVs, includeThumbs, tvPrefix''Проброс в msProducts
returndatadata, ids, json
toPlaceholder''Запись результата в placeholder

Поддерживаемые type ​

auto, vip, cross-sell, popcorn, also-bought, buy_together, similar, cart_suggestion, auto_sales, custom.

Подробная логика каждого типа: Типы подборок.

Примеры вызова ​

fenom
{'ms3ProductSets' | snippet : [
  'type' => 'similar',
  'resource_id' => $_modx->resource.id,
  'max_items' => 6,
  'tpl' => 'tplSetItem'
]}
modx
[[!ms3ProductSets?
  &type=`similar`
  &resource_id=`[[*id]]`
  &max_items=`6`
  &tpl=`tplSetItem`
]]

Сниппет mspsLexiconScript ​

Выводит:

  • при ms3productsets.izitoast_include = Да: теги <link> и <script> для iziToast по путям из ms3productsets.izitoast_css / ms3productsets.izitoast_js (по умолчанию файлы MiniShop3);
  • window.mspsLexicon (ключи для сообщений на сайте);
  • window.mspsConfig: maxItems, lang, toastTimeout (мс), toastPosition (iziToast, напр. topRight).

Подключайте перед productsets.js. Если автоподключение iziToast выключено, загрузите CSS и JS вручную. См. Интеграция на сайт.

Fenom: {'mspsLexiconScript' | snippet}MODX: [[!mspsLexiconScript]]

Коннектор assets/components/ms3productsets/connector.php ​

Front (web) ​

actionМетодПараметрыОтвет
get_setPOSTtype, resource_id (алиас product_id), category_id, set_id, max_items, tpl, tplWrapper, emptyTpl, hideIfEmptyHTML
add_to_cartPOSTproduct_id, countJSON {success, added, message}

Пример ответа add_to_cart (запасной путь через коннектор):

json
{"success": true, "added": 1, "message": ""}
json
{"success": false, "added": 0, "message": "Product not found"}

Manager (mgr, авторизация обязательна) ​

actionНазначениеОсновные параметры
get_templatesСписок шаблонов подборок—
save_templateСоздать/обновить шаблонid, name, type, related_product_ids, description, sortorder. Ошибки: invalid_type, template_not_found, name_required, related_ids_required
delete_templateУдалить шаблон и связи с его template_nameid
apply_templateПрименить шаблон к категориям/товарамtemplate_id, parent_id или parent_ids[], replace, запасной product_ids если нет категории. Ответ: { success, applied }. При replace=true удаляются только строки с тем же template_name, что у шаблона
unbind_templateОтвязать шаблон от категорииtemplate_id, parent_id или parent_ids[]
get_resource_treeДерево категорий (без товаров)parent_id, context_key
get_resourcesСписок товаров для пикераparent_id, template_id, query, limit, ids[] (загрузка выбранных ID по списку)

JS API (window.ms3ProductSets) ​

МетодНазначение
render(selector, options)Отрисовка блока через get_set. В JS значение type по умолчанию: auto. У сниппета: buy_together.
addToCart(productId, count)Сначала MiniShop3 Web API. Коннектор add_to_cart это запасной путь.
addAllToCart(buttonOrContainer)Добавление всего набора в корзину. Принимает DOM-элемент (кнопку с data-add-set или контейнер) либо CSS-селектор. Ищет data-msps-product-ids / [data-product-id] / скрытые input[name="id"], последовательно вызывает addToCart, затем iziToast и событие msps:cart:update.
toast(message, kind)Уведомление iziToast: kind равен 'success' (по умолчанию) или 'error'. Нужен iziToast на странице.

События после успешного добавления:

  • addToCart: msps:cart:update с detail: { product_id, count }. Путь MiniShop3 API ещё шлёт ms3:cart:updated.
  • addAllToCart: msps:cart:update с detail: { product_ids }

Плагины ​

ПлагинСобытиеНазначение
ms3ProductSets SyncTV (файл ms3productsets_sync_tv)OnDocFormSaveСинхронизация TV подборок в таблицу ms3_product_sets
ms3ProductSets Cleanup (файл ms3productsets_on_resource_delete)OnResourceDeleteОчистка связей удаляемого ресурса