
- MODX 3
- PHP 8.2
- miniShop3
- Vue 3


За 20 минут вы поставите пакет, соберёте комплект из двух товаров, выведете его на карточку и проверите корзину.
У вас уже стоят MODX 3, miniShop3, VueTools ≥ 1.1.2-pl, pdoTools и PHP 8.2+. У роли менеджера будут нужны права msbundles_view и msbundles_save. Их удобно выдать сразу после установки.
Пакет платный. Ставится только с modstore.pro. Без провайдера установка падает с Package provider not found.
https://modstore.pro/extras/msbundles_view и msbundles_save.При установке пакет сам создаёт таблицы, права, события, маршруты API и привязывает плагин к корзине miniShop3.

web). Введите название, например «Ноутбук + наушники». При желании заполните описание и выберите картинку в медиа-браузере.
В поиске состава введите название, артикул или ID товара. Добавьте минимум две позиции. Один и тот же товар дважды в комплект не попадёт.
Для каждой строки задайте количество, режим цены и флаг Обяз. Порядок строк меняйте перетаскиванием за ручку слева.
| Режим | Что указываете | Результат |
|---|---|---|
| Оригинал | ничего | Цена товара из miniShop3 |
| Фикс | сумму | Фиксированная цена за единицу |
| Скидка % | 0–100 | Процент от цены товара |
| Скидка суммой | сумму | Сумма вычитается из цены товара |
| Бесплатно | ничего | 0 за единицу |
Для старта удобно оставить ноутбук в режиме Оригинал, а наушникам поставить Скидка % = 50. Итог и Экономия смотрите в футере редактора.

Справа два блока. Сводка показывает число позиций и единиц. Как на витрине показывает цену, экономию и доступность для одного комплекта.
Если обязательного товара нет на складе, над формой появится предупреждение. Нажмите Сохранить. Пока в составе нет товаров, кнопка недоступна.
В шаблоне страницы товара:
{'!msBundles' | snippet : [
'product' => $_modx->resource.id,
'tpl' => 'tplMsBundlesItem',
'wrapperTpl' => 'tplMsBundlesList',
'emptyTpl' => 'tplMsBundlesEmpty',
'activeOnly' => true
]}[[!msBundles?
&product=`[[*id]]`
&tpl=`tplMsBundlesItem`
&wrapperTpl=`tplMsBundlesList`
&emptyTpl=`tplMsBundlesEmpty`
&activeOnly=`1`
]]В <head> той же страницы (или общего шаблона):
{'!msBundles.initialize' | snippet}[[!msBundles.initialize]]Откройте любой товар из состава, например «Наушники». Карточка «Ноутбук + наушники» должна быть на месте.
На карточке комплекта задайте количество и нажмите кнопку добавления. В таблице корзины:
Чтобы HTML корзины на странице обновился после добавления, у msCart укажите selector. В чанке корзины под названием товара вызовите tplMsBundlesCartInfo. Разбор: Вывод на сайте.
{'!msCart' | snippet : [
'tpl' => 'tpl.msCart',
'return' => 'tpl',
'selector' => '#ms-cart'
]}[[!msCart?
&tpl=`tpl.msCart`
&return=`tpl`
&selector=`#ms-cart`
]]| Проблема | Что проверить |
|---|---|
| Раздел не открывается | VueTools ≥ 1.1.2-pl, право msbundles_view |
| Карточки нет на витрине | Переключатель Активен, вызов msBundles в шаблоне |
| Кнопка добавления молчит | В head есть msBundles.initialize |
| Сумма и блок корзины не обновляются | У msCart задан selector |
| В корзине нет бейджа «Комплект» | В чанке корзины есть tplMsBundlesCartInfo |