
ms3Variants
Варианты товаров для MiniShop3: у одного товара несколько вариантов с разными опциями (цвет, размер и др.), у каждого — своя цена и старая цена, остаток, артикул, вес и изображение из галереи товара.
Возможности
Варианты:
- число вариантов не ограничено;
- опции варианта — любые ключи стандартных опций MiniShop3.
Корзина и заказ:
- в корзину попадает цена варианта;
- при включённом контроле остатков нельзя добавить больше, чем есть, — настройки;
- остатки списываются в заданном статусе заказа — настройки;
- значения опций вариантов добавляются в стандартные опции MiniShop3 товара, а
color,size,tags— ещё и в одноимённые поля товара. Это происходит при сохранении варианта; при изменении и удалении варианта старые значения из товара не убираются.
Фронтенд:
- список вариантов на странице товара со сменой цены, артикула и изображения — Страница товара;
- варианты в карточках каталога через
msProducts— Каталог товаров; - события JavaScript для своих галерей и обработчиков, готовые адаптеры для Splide и GLightbox.
Админка:
- вкладка «Варианты» в карточке товара — Вкладка вариантов в товаре;
- выбор варианта в позиции заказа (только в русской админке) — Варианты в заказе.
Системные требования
| Требование | Версия |
|---|---|
| MODX Revolution | 3.0.3+ |
| PHP | 8.2+ |
| MiniShop3 | 1.4.0+ |
| pdoTools | 3.0.0+ — без него сниппет msProductVariants не работает |
| VueTools | любая версия, нужен для вкладки «Варианты» в админке |
PHP 8.2
Установщик пакета пропускает PHP 8.1, но библиотеки компонента требуют PHP 8.2. Не устанавливайте ms3Variants на PHP 8.1.
Установка
- Перейдите в Пакеты → Установщик.
- Найдите ms3Variants, загрузите и установите.
Пакет создаёт:
- таблицы вариантов;
- сниппет
msProductVariants; - чанки
ms3_variants,ms3_variants_row,ms3_products_row_variants; - плагин
ms3Variants— включён сразу, работает с событиями корзины, заказа, каталога и админки MiniShop3; - системные настройки.
Пример шаблона страницы товара и чанк галереи на Splide при установке не создаются: они лежат файлами в core/components/ms3variants/elements/.
Быстрый старт
1. Создайте варианты
Откройте сохранённый товар, перейдите на вкладку Варианты, нажмите Создать вариант, добавьте опции, укажите цену и остаток, сохраните. Подробно — Вкладка вариантов в товаре.
2. Выведите варианты на странице товара
{'!msProductVariants' | snippet}Вызов должен быть некэшируемым — почему, см. Сниппеты. Список вариантов показывает цену каждого варианта сам. Чтобы при выборе варианта менялись цена и артикул в шаблоне страницы, добавьте им атрибуты data-ms3v-* — Страница товара.
3. Выведите варианты в каталоге
{'msProducts' | snippet : [
'parents' => 0,
'usePackages' => 'ms3Variants',
'tpl' => 'ms3_products_row_variants'
]}Из каталога в корзину всегда попадает первый вариант, пока модуль MiniShop3 ProductCardUI.js не заменён модулем ms3Variants (замена видна в системной настройке ms3_frontend_assets). Как заменить и что сделать перед удалением пакета — Каталог товаров.
Структура данных
Таблица ms3_product_variants
| Поле | Тип | Описание |
|---|---|---|
| id | int | ID варианта |
| product_id | int | ID товара |
| sku | varchar(100) | Артикул варианта |
| price | decimal(12,2) | Цена |
| old_price | decimal(12,2) | Старая цена |
| count | int | Остаток |
| weight | decimal(10,3) | Вес в единицах MiniShop3 |
| file_id | int | ID изображения из галереи товара |
| active | tinyint | Активность: 1 — да, 0 — нет |
| position | int | Позиция сортировки |
| created_at, updated_at | datetime | Даты создания и изменения |
Таблица ms3_variant_options
| Поле | Тип | Описание |
|---|---|---|
| id | int | ID записи |
| variant_id | int | ID варианта. Пара variant_id + option_key уникальна; опции удаляются вместе с вариантом |
| option_key | varchar(100) | Ключ опции (color, size…) |
| option_value | varchar(255) | Значение опции |
