MiniShop3 1.12.0 (Июнь 2026)
1.12.0-beta1 вышел ещё в конце июня, а поста так и не было — исправляюсь. Релиз заметный: три новых фичи в админке (новый вид товарного поля «Повторитель», опции прямо в гриде товаров категории, inline-редактирование через select и combo) и почти два десятка исправлений вокруг установки, импорта CSV и уведомлений клиентам.
Добавили ms3-repeater: JSON-массив однотипных строк со своей схемой колонок, drag-and-drop сортировкой и автоматической простановкой rank при сохранении. Кто работал с MODX Revolution и MIGX — узнает паттерн сразу.

Во Vue-админке — компонент RepeaterField с drag-and-drop через vuedraggable и редактор схемы колонок прямо в настройках extra-поля. Работает не только на товаре — повторитель можно добавить и на заказ, и на адрес заказа.

На странице товара значение отдаётся уже готовым массивом. А вот в листингах через msProducts значение приходит сырой JSON-строкой — нужен модификатор json_decode. Реализовал фичу Иван Бочкарев.
На всякий случай уточняю — гридом мы по привычке называем таблицу с перечнем значений. В Категории — это перечень товаров. Это технический термин еще из extJS — там компонент таблицы назывался grid
Новый тип колонки — «Опция товара». Показывает значения опций (цвет, размер и что угодно ещё) прямо в гриде, с сортировкой и фильтром по значению. Колонка read-only: редактирование опций по-прежнему делается в карточке товара, а не в гриде. Связано с большим зоопарком возможных вариантов опций. Многие из них еще и мультивариантные, многострочные. Короче сложно реализовать единый редактор внутри таблицы.
SQL-сборку для мульти-value опций (когда у товара несколько значений одной опции) вынесли в отдельный сервис — раньше такая логика жила прямо в контроллере. Тоже работа Ивана.
Для редактируемых колонок грида появилось два новых типа редактора. Select — статический список значений, задаётся прямо в настройках колонки. Combo — список подгружается с бэкенда (пока доступны производители, список источников можно расширять). Заодно поправили давнюю мелкую неприятность в PrimeVue Select, когда булево значение и число не совпадали при сравнении.

Львиная доля этого релиза — работа Ивана Бочкарева (@Иван Бочкарев): обе крупные фичи в гриде товаров, повторитель и большая часть фиксов из списка выше. Спасибо!
Следом уже вышел 1.13.0-beta1 — релиз крупнее этого, с публичным Web API и переводом оставшейся части админки на Vue без ExtJS. Расскажу отдельным постом.
Полный список изменений — в CHANGELOG на GitHub. Багрепорты и пожелания — в issues.
0
Повторитель — новый тип extra-поля
Добавили ms3-repeater: JSON-массив однотипных строк со своей схемой колонок, drag-and-drop сортировкой и автоматической простановкой rank при сохранении. Кто работал с MODX Revolution и MIGX — узнает паттерн сразу.

Во Vue-админке — компонент RepeaterField с drag-and-drop через vuedraggable и редактор схемы колонок прямо в настройках extra-поля. Работает не только на товаре — повторитель можно добавить и на заказ, и на адрес заказа.

На странице товара значение отдаётся уже готовым массивом. А вот в листингах через msProducts значение приходит сырой JSON-строкой — нужен модификатор json_decode. Реализовал фичу Иван Бочкарев.
Опции в гриде товаров категории
На всякий случай уточняю — гридом мы по привычке называем таблицу с перечнем значений. В Категории — это перечень товаров. Это технический термин еще из extJS — там компонент таблицы назывался grid
Новый тип колонки — «Опция товара». Показывает значения опций (цвет, размер и что угодно ещё) прямо в гриде, с сортировкой и фильтром по значению. Колонка read-only: редактирование опций по-прежнему делается в карточке товара, а не в гриде. Связано с большим зоопарком возможных вариантов опций. Многие из них еще и мультивариантные, многострочные. Короче сложно реализовать единый редактор внутри таблицы.
SQL-сборку для мульти-value опций (когда у товара несколько значений одной опции) вынесли в отдельный сервис — раньше такая логика жила прямо в контроллере. Тоже работа Ивана.
Inline-редактирование: select и combo
Для редактируемых колонок грида появилось два новых типа редактора. Select — статический список значений, задаётся прямо в настройках колонки. Combo — список подгружается с бэкенда (пока доступны производители, список источников можно расширять). Заодно поправили давнюю мелкую неприятность в PrimeVue Select, когда булево значение и число не совпадали при сравнении.

Стабильность и фиксы
- Установка: чинится недостающая или неполная таблица ms3_grid_fields — раньше на части инсталляций она создавалась не полностью
- Установка: нормализация кодировки MySQL для баз с системной настройкой charset вроде UTF-8 — раньше сидированные тексты email-уведомлений на русском записывались битыми
- Установка: таблица миграций Phinx получает table_prefix, как и остальные таблицы компонента, — раньше писалась без префикса
- Товары: значения Data и extra fields больше не теряются при создании/обновлении через сторонние процессоры — импорт CSV, внешние интеграции
- Manager API: null в payload теперь ведёт себя предсказуемо по каждому полю — для nullable текстовых полей чистит значение, для числовых и обязательных — пропускается, а не обнуляет их по ошибке
- Заказы: уведомления клиенту уходят на email из формы конкретного заказа, а не на устаревший email из профиля покупателя
- Клиенты: автозаполнение браузера больше не портит строку поиска в гриде после сохранения клиента
- Импорт CSV: значения мульти-value опций через запятую в одной ячейке теперь превращаются в отдельные записи, а не сохраняются одной строкой
- Заказы: в гриде появился переключатель показа черновиков с сохранением состояния между визитами
Спасибо
Львиная доля этого релиза — работа Ивана Бочкарева (@Иван Бочкарев): обе крупные фичи в гриде товаров, повторитель и большая часть фиксов из списка выше. Спасибо!
Что дальше
Следом уже вышел 1.13.0-beta1 — релиз крупнее этого, с публичным Web API и переводом оставшейся части админки на Vue без ExtJS. Расскажу отдельным постом.
Полный список изменений — в CHANGELOG на GitHub. Багрепорты и пожелания — в issues.
Комментарии: 0