msBundles

Комплекты товаров MiniShop3: цена, скидки, остатки, корзина
Автор дополнения
Иван Бочкарев
Пакетов
34
Закачек
249
Обычно отвечает в течение суток
Автор дополнения
Пакетов
34
Закачек
249
Обычно отвечает в течение суток
Версия 1.1.0-pl
Дата выпуска 26.08.2026
Загрузки 1
Просмотры 209
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
Компонент для комплектов товаров MiniShop3. Собираете несколько позиций в набор, задаёте режим цены и скидку на каждую строку, выводите карточку на странице товара. Покупатель добавляет весь состав в корзину одной кнопкой. Смена количества и удаление синхронизируются по комплекту. В корзине — lead/member, компактные превью, кнопка «Удалить комплект».

Список комплектов
  • поиск по названию и фильтр по активности
  • перетаскивание для порядка, копирование, удаление
  • счётчик комплектов и кнопка «Добавить комплект»




Редактор комплекта
  • состав из товаров каталога через поиск (название, артикул, ID)
  • медиа-браузер MODX для картинки комплекта
  • количество и режим цены для каждой строки
  • обязательные и необязательные позиции
  • сводка по позициям и единицам в правой колонке
  • превью «Как на витрине»: цена, экономия, остатки








Режимы цены строки
  • Оригинал — цена товара из MiniShop3
  • Фикс — фиксированная цена за единицу
  • Скидка % — процент от цены товара
  • Скидка суммой — сумма вычитается из цены
  • Бесплатно — 0 за единицу

Остатки
  • block — кнопка добавления неактивна
  • message — карточка видна, внутри текст предупреждения
  • hide — комплект не выводится

При нехватке остатка msBundles добавит комплект без необязательной позиции. API вернёт warnings.



Витрина
  • сниппет msBundles и Fenom-чанки
  • сниппет msBundles.initialize подключает CSS и JS (helpers → cart → msbundles); хук tplMsBundlesCartInfo в корзине регистрирует ассеты сам
  • свой чанк сохраняет data-msbundles / data-msbundles-action / data-bundle-*
  • переопределение палитры через CSS-переменные
  • корзина: строки связаны по bundle_hash
  • у msCart нужен selector, иначе HTML блока не обновится после add
  • смена qty одной строки синхронизирует остальные
  • удаление любой строки снимает весь комплект










Разбор: сценарии A–E.



Корзина
  • первая строка — lead: бейдж «Комплект», «Удалить комплект»
  • остальные строки — «Входит в комплект…», qty заблокирован
  • смена qty у lead синхронизирует группу с тем же bundle_hash
  • удаление любой строки снимает весь комплект
  • стили ограничивают превью товаров в таблице (~56×56), чтобы thumb не раздувал строки

Настройки
  • msbundles_stock_behavior — поведение при нехватке остатков
  • msbundles_max_bundle_quantity — лимит экземпляров за одну операцию add

Требования
  • MODX 3.x, PHP 8.2+
  • MiniShop3 (MS3 Router), VueTools ≥ 1.1.2-pl, pdoTools

Права
  • msbundles_view — раздел и список
  • msbundles_save — создание, правка, удаление

Без msbundles_view пункт меню скрыт.



Документация

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.1.0-pl] - 2026-08-24

Added

  • context_key on bundles: one bundle entity per MODX context (name, description, composition, active).
  • Manager: context select in editor, context column and filter in list, product search scoped to bundle context.
  • Upgrade resolver backfills existing bundles with context_key = web.
  • Snippet params bundles (comma-separated IDs) and list=all for custom bundle listing pages.

Changed

  • Storefront snippet/API/cart add only expose bundles matching the current request context.

[1.0.0-pl] - 2026-08-08

Added

  • Product bundles for MiniShop3 with shared price/discount and cart sync by bundle_hash.
  • Manager UI (Vue 3 + PrimeVue + VueTools): list, search, filter, reorder, copy, editor with storefront preview.
  • Line price modes: original, fixed, percent discount, amount discount, free.
  • Stock behavior: block, message, hide; optional lines may be skipped with warnings on add.
  • Snippet msBundles, Fenom chunks, msBundles.initialize (CSS → helpers → cart → msbundles.js, once-guard).
  • Web REST: get, calculate, add, remove via MS3 Router.
  • Cart lead/member UI and remove-bundle.
  • tplMsBundlesCartInfo registers storefront assets when rendered in msCart (no separate initialize required on the cart page alone).
  • Cart thumb CSS for bundle rows via .msbundles-cart-row and tr:has([data-msbundles="cart-info"]) (4rem square) before JS enhancement.
  • Permissions msbundles_view / msbundles_save and MODX events for price, stock, cart, CRUD.

Последние обсуждения в сообществе MODX.pro