Как загрузить?
- PHP 8.1+ — современный синтаксис, типизация, атрибуты
- Namespaces — все классы организованы в пространстве имён MiniShop3\
- PSR-4 автозагрузка — через Composer
- Миграции Phinx — версионирование структуры БД
Улучшенная архитектура
- REST API — полноценный API для headless-интеграций
- Service Container — зависимости через DI-контейнер MODX
- Vue 3 + PrimeVue — современный интерфейс админки через VueTools
- Современный фронтенд — без jQuery, нативный JavaScript
Совместимость
MiniShop3 сохраняет обратную совместимость с miniShop2 на уровне:
- Имена сниппетов (msProducts, msCart, msOrder и др.)
- Структура чанков и плейсхолдеров
- Параметры сниппетов
Системные требования
- MODX Revolution | 3.0.0+
- PHP | 8.1+
- MySQL | 5.7+ / MariaDB 10.3+
Зависимости MODX
- pdoTools 3.x — для работы сниппетов и шаблонизатора Fenom
- VueTools — Vue 3 и PrimeVue для административного интерфейса
- Scheduler (опционально) — для фоновых задач (импорт, уведомления, очистка)
MiniShop3 использует Vue 3 для современного интерфейса админки. Пакет VueTools должен быть установлен до или вместе с MiniShop3. При отсутствии пакета будет показано сообщение с инструкцией по установке.
Composer библиотеки
MiniShop3 использует следующие PHP библиотеки (включены в пакет):
nikic | ^1.3 | Маршрутизация REST API
rakit/validation | ^1.4 | Валидация данных форм и API
intervention/image | ^3.0 | Обработка изображений (ресайз, водяные знаки)
robmorgan/phinx | ^0.16 | Миграции базы данных
ramsey/uuid | ^4.7 | Генерация UUID для токенов
[2026-05-22] 🚀 Версия 1.11.1-beta1
Тип релиза: PATCH (beta) — точечные хотфиксы установки и каталога с превью
🐛 Исправлено
SQL-ошибка в msProducts / msCart / msGetOrder при includeThumbs (#293):
- Хелпер
ProductThumbnailJoin::buildLeftJoinOn()оборачивал результат$modx->getTableName()ещё одной парой backticks. xPDOgetTableName()уже экранирует имя таблицы — в итоге в runtime SQL появлялись тройные backticks вокруг имени, MySQL отвергал запрос какError 42000. Любой вызовincludeThumbs=...на витрине после установки 1.11.0-beta1 отдавал пустой каталог. - Фикс — убраны внешние backticks вокруг
%4$sв sprintf-шаблонеProductThumbnailJoin. В код добавлен комментарий чтобы не наступить повторно.
Установка пакета 1.11.0-beta1 падала с Data too long for column 'metadata' (#296):
- В
_build/build.phpчерезsetPackageAttributesпередавался полныйcore/components/minishop3/docs/changelog.txt(~33 KB истории с 1.0.0-alpha) +license.txt(~15 KB) +readme.txt. На MODX-установках с колонкойmodx_transport_packages.metadataтипаTEXT(лимит 65 535 байт) сериализованные attributes не помещались — INSERT падал сSQLSTATE 22001 / 1406. В предыдущих релизах changelog был меньше и проблема не проявлялась. - В transport metadata теперь идёт только блок текущего релиза (~7 KB вместо 33 KB) через новый метод
readLatestChangelogEntry(). Полный changelog по-прежнему есть внутри пакета (docs/changelog.txt) — пользователь видит полную историю в файле, а в карточке пакета MODX — последний релиз.
[2026-05-21] 🚀 Версия 1.11.0-beta1 — ⚠️ Breaking changes
Числовой контракт сниппетов (#242, breaking): плейсхолдеры цен и веса в msOrder, msGetOrder, msCart, msProducts, msOrderTotal теперь возвращают float (не строку с валютой). Для вывода используйте *_formatted. Замените {$order.cost} на {$order.cost_formatted} в кастомных чанках.
Группировка опций — модель msOptionGroup (#10, breaking): заменила modCategory. Миграция данных автоматическая. Если кастомный код читал msOption.modcategory_id — теперь это option_group_id. Алиас category_name в snippet-данных опции → group_name.
Удалён endpoint GET /api/mgr/options/modcategories — заменён на /api/mgr/option-groups (CRUD).
Новое: window.ms3.refresh() API для интеграции с mFilter (#274), пересчёт стоимости заказа в админке (#212), отрицательные стоимости доставки/оплаты как скидки (#211), бейджи скидка/наценка во Vue (#265), расширенный редактор validation_rules (#215).
Полный список изменений — CHANGELOG.md в репозитории.




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