
- MODX 3
- PHP 8.2
- miniShop3
- Vue 3


Раздел Компоненты → msBundles открывается из меню или по прямой ссылке manager/?a=index&namespace=msbundles. Интерфейс собран на Vue 3 и PrimeVue через VueTools.

Пошаговые сценарии со скриншотами: Сценарии.
Сверху вниз:

| Действие | Как сделать |
|---|---|
| Открыть редактор | Клик по названию |
| Скопировать | Иконка копирования. Откроется неактивная копия |
| Удалить | Иконка корзины, затем подтверждение |
| Поменять порядок | Перетащите строку за ручку слева |
Поиск срабатывает с небольшой задержкой. Фильтр активности: все / активные / неактивные. Фильтр контекста: все контексты или один (web, en, …). Пустой список и «ничего не найдено» показывают отдельный экран с кнопкой создания.
activeOnly=1 на витрине видны только активные.
Карточка комплекта появится на страницах всех товаров из состава в выбранном контексте. Для другого языка или витрины создайте отдельный комплект (копирование → смена контекста и состава).
Один комплект может смешивать разные режимы:

Фиксированная цена и необязательные позиции:

Скидка процентом или суммой:

Список режимов в селекте строки:

| Блок | Что показывает |
|---|---|
| Сводка | Сколько позиций и единиц в составе |
| Как на витрине | Цена, экономия и остатки для одного комплекта. Пометка «Только превью» |

Те же итог и экономия продублированы в футере диалога. Если обязательной позиции не хватает на складе, над формой появится предупреждение. При сохранении в такой ситуации менеджер попросит подтверждение.
| Режим | Поле значения | Результат |
|---|---|---|
| Оригинал | не используется | Цена товара из miniShop3 |
| Фикс | сумма | Фиксированная цена за единицу |
| Скидка % | 0–100 | Процент скидки от цены товара |
| Скидка суммой | сумма | Вычитается из цены товара |
| Бесплатно | не используется | 0 за единицу |
Итог комплекта = сумма строк × число комплектов. Экономия = разница с суммой по обычным ценам. Нулевая цена на витрине показывается как «Бесплатно».
Обязательная позиция нужна для доступности комплекта. Если её нет на складе, срабатывает msbundles_stock_behavior.
Необязательную позицию при нехватке комплект пропускает при добавлении в корзину. В ответе API могут появиться warnings. Остальной набор всё равно добавится.
| Операция | Право |
|---|---|
| Открыть раздел, список, просмотр | msbundles_view |
| Создание, правка, удаление, порядок, копирование | msbundles_save |
Плагин msBundles следит за корзиной miniShop3:
bundle_hash подстраиваютсяКоличество в строке должно быть кратно базовому количеству позиции из комплекта.
На витрине подключите msBundles.initialize и в чанке корзины вызовите tplMsBundlesCartInfo. У главной строки будут бейдж и «Удалить комплект», у остальных количество заблокировано. Чтобы блок на странице обновлялся после добавления, у msCart нужен selector. Подробности: Вывод на сайте.