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


Страница Подборки товаров хранит шаблоны (тип + набор ID) и массово копирует их в связи ms3_product_sets для всех товаров категории. Точечные правки делайте через TV на карточке товара.
Экран и поля API: Подборки товаров (интерфейс). Пошаговые сценарии: Сценарии (flows).
?a=index&namespace=ms3productsetsview
Справочник типов стоит в боковой колонке первой вкладки.


Выбор шаблона (Select), категории (TreeSelect, дерево без товаров), чекбокс Заменить существующие подборки этого шаблона, кнопки Применить и Отвязать.

| Поле | Назначение |
|---|---|
| Название | Имя для менеджеров. Попадает в template_name связей. |
| Тип подборки | Один из пяти типов шаблонов. |
| ID товаров | MultiSelect или строка через запятую. Минимум один ID. |
| Описание | Внутренний комментарий. |
| Порядок | Сортировка в списке админки. |
save_template.

save_template с id. Смена name или type пишет новые template_name и type в уже применённые строки. Список related_product_id у этих строк сам не переписывается. Нужен повторный Применить (с replace, если надо заменить состав).delete_template. Удаляются шаблон и все связи с его template_name и type.

Применить (apply_template):
msProduct в выбранной категории и подкатегориях (рекурсия, глубина до 10).ms3_product_sets с template_name = имя шаблона.replace=true сначала удаляет связи с тем же template_name и type у товаров категории. TV-связи и записи других шаблонов не затрагиваются.applied считает реально вставленные строки (INSERT IGNORE, без дублей).Отвязать (unbind_template):
| TV | Тип |
|---|---|
ms3productsets_buy_together | buy_together |
ms3productsets_similar | similar |
ms3productsets_popcorn | popcorn |
ms3productsets_cart_suggestion | cart_suggestion |
ms3productsets_vip | vip |
При сохранении товара плагин ms3ProductSets SyncTV (OnDocFormSave):
msProduct;template_name (созданные из TV);template_name;template_name задан) не трогает.ms3ProductSets с тем же type на витрине.