Современный компонент интернет-магазина для MODX 3
Документация • Быстрый старт • Сообщить о баге • Релизы
- 🚀 Для MODX 3 — PHP 8.2+, namespaces, PSR-4, миграции Phinx
- 🔌 REST API — полноценный API для headless-интеграций
- 🎨 Vue 3 + PrimeVue — современный интерфейс админки
- ⚡ Без jQuery — нативный JavaScript на фронтенде
- 🔄 Совместимость с miniShop2 — те же сниппеты, чанки и параметры
| Компонент | Версия |
|---|---|
| MODX Revolution | 3.0.0+ |
| PHP | 8.2+ |
| MySQL | 5.7+ / MariaDB 10.3+ |
| Пакет | Обязательный | Описание |
|---|---|---|
| pdoTools 3.x | ✅ | Сниппеты и шаблонизатор Fenom |
| VueTools | ✅ | Vue 3 и PrimeVue для админки |
| Scheduler | ❌ | Фоновые задачи (импорт, уведомления) |
Extras → Installer → Download Extras → MiniShop3 → Install
⚠️ Убедитесь, что VueTools установлен до MiniShop3
# Клонирование
git clone https://github.com/modx-pro/MiniShop3.git
cd MiniShop3
# PHP зависимости
cd core/components/minishop3 && composer install && cd ../../..
# Vue виджеты (Node.js 18+)
cd vueManager && npm install && npm run build && cd ..
# Сборка пакета
php _build/build.phpПолная документация доступна на docs.modx.pro/components/minishop3
- Быстрый старт — первоначальная настройка
- Сниппеты — msProducts, msCart, msOrder и др.
- REST API — интеграция с внешними системами
- События — расширение функциональности
Публичные endpoints без токена. В выборку попадают только товары с published=1, deleted=0, hidemenu=0 в указанном (или текущем) context.
GET /assets/components/minishop3/api.php?route=/api/v1/product/get/{id}
GET /assets/components/minishop3/api.php?route=/api/v1/product/list
Параметры: parent / category (только primary parent, без msCategoryMember), limit (max 100), offset / page, sort + dir, query, context, include_options, include_content.
Ответ list: { items, total, limit, offset }. Цена и вес — через msOnGetProductPrice / msOnGetProductWeight; поля ответа allowlist’ятся после msOnGetProductFields.
Полный справочник REST — на docs.modx.pro (раздел каталога стоит синхронизировать с этим релизом).
Ссылка в письме ведёт на api.php с путём верификации и параметром html=1 — в ответ сервер отдаёт HTTP-редирект (302) на сайт с признаком ms3_email_verified=1 либо ms3_email_verified=0. URL после успешной проверки задаётся системной настройкой ms3_email_verification_success_url (если пусто — site_url).
Если открыть тот же URL без html=1 или с format=json, ответ будет JSON (удобно для API-клиентов; в браузере увидите «сырое» тело).
MiniShop3/
├── _build/ # Сборка транспортного пакета
├── assets/components/minishop3/
│ ├── js/web/ # Frontend JavaScript
│ ├── js/mgr/ # Admin ExtJS + Vue
│ └── css/ # Стили
├── core/components/minishop3/
│ ├── elements/ # Сниппеты, чанки, плагины
│ ├── src/ # PHP классы (PSR-4)
│ ├── migrations/ # Phinx миграции
│ └── lexicon/ # Переводы (ru, en)
└── vueManager/ # Vue 3 исходники админки
Оба живут в namespace MiniShop3\Controllers\…, но это разные роли. Не кладите HTTP-парсинг в domain facade и не тащите бизнес-логику корзины/заказа в API-класс.
| Слой | Путь | Роль |
|---|---|---|
| HTTP API | Controllers/Api/Manager/*, Controllers/Api/Web/* (+ соседние Controllers/Api/* на manager routes) |
Маршруты FastRoute: request → Response / HttpStatus |
| Domain facade (MS2-style) | Controllers/Cart, Order, Customer |
Публичный фасад для $ms3->cart / $ms3->order / $ms3->customer и DI; делегирует в Services/ |
| Provider plugins | Controllers/Delivery, Payment |
Abstract base для методов доставки/оплаты (не DI-фасады ms3_*) |
| Services | Services/* |
Каноническая бизнес-логика |
Ключевые DI-ключи фасадов (см. также ServiceRegistry):
| DI key | Класс | Роль |
|---|---|---|
ms3_cart |
MiniShop3\Controllers\Cart\Cart |
Domain facade корзины (не HTTP) |
ms3_order |
MiniShop3\Controllers\Order\Order |
Domain facade заказа (не HTTP) |
ms3_customer |
MiniShop3\Controllers\Customer\Customer |
Domain facade покупателя (не HTTP) |
Переименование namespace (Domain\ / Facades\) — отдельный major с bc-aliases; этот репозиторий пока фиксирует границу документацией и PHPDoc.
Мы приветствуем вклад в развитие проекта!
- Форкните репозиторий
- Создайте ветку для фичи (
git checkout -b feature/amazing-feature) - Закоммитьте изменения (
git commit -m 'Add amazing feature') - Запушьте ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Смотрите CHANGELOG.md для истории изменений.
Распространяется под лицензией MIT. Смотрите LICENSE для подробностей.
- 🐛 GitHub Issues — баги и предложения
- 📚 Документация — руководства и справочники
- 💬 Telegram — сообщество MODX
Сделано с ❤️ для сообщества MODX
