Настройка miniShop2 для интернет-магазина на MODX
Клиент принёс каталог из 3000 товаров из 1С-Битрикс — нужно за две недели перенести на MODX Revolution. Структура категорий разная, цены с опциями привязаны к артикулам. miniShop2 — e-commerce компонент от команды Bezumkin — справляется с такими задачами, если знать тонкости настройки. Он органично встраивается в архитектуру MODX: товары становятся ресурсами с дополнительными полями, корзина и заказы — отдельными таблицами. В результате каталог управляется через привычный менеджер MODX, а не через отдельную панель. Мы используем miniShop2 в 50+ проектах, и он доказал надёжность при нагрузках до 10 000 товаров. При грамотной оптимизации затраты на обслуживание снижаются в 2–3 раза — это важный аргумент при выборе e-commerce платформы.
Основные сложности при переносе — N+1 запросы, настройка опций с надбавками и интеграция платёжных шлюзов. Для ускорения фильтрации применяем mSearch2 и индексы MySQL. pdoTools позволяет снизить количество запросов в 2-3 раза.
Что решаем
- N+1 запросы при выводе каталога — pdoTools оптимизирует выборку, настраиваем кэширование через Redis. Это даёт прирост скорости в 2–3 раза по сравнению со стандартными запросами.
- Сложные опции с надбавками — msOptionsPrice2 позволяет задать цену для каждой комбинации, отдельный артикул и остаток.
- Интеграция с доставкой и оплатой — подключаем СДЭК, Boxberry, Почту России, а также платежные шлюзы.
- Производительность корзины при высоких нагрузках — используем AJAX-запросы к процессорам, сохраняя состояние в сессии.
Как мы это делаем
Стек: MODX Revolution 3.x, PHP 8.2, MySQL 8, Redis, Nginx. Оптимизации:
- Сниппет msProducts всегда вызываем некэшированным (!) для динамических данных.
- Для опций применяем msOptionsPrice2 с типом select — значения хранятся в отдельной таблице.
- Фильтрацию через mFilter2 настраиваем с индексами по цене и остатку.
- Кэшируем ресурсы через Redis с тегированием для быстрой инвалидации.
Кейс: недавно разворачивали магазин с 5000 товаров и 30 опциями. Фильтрация работала за 200 мс, корзина на AJAX без перезагрузки. Проблема была только в импорте — написали скрипт, который загружал 100 товаров за транзакцию, ускорив процесс в 3 раза. Это позволило клиенту сэкономить неделю разработки и снизить общую стоимость миграции.
Как настроить фильтрацию и поиск для большого каталога?
Используем mSearch2 с фасетной фильтрацией. Сниппет mFilter2 с элементами msProducts и фильтрами по цене, опциям. Фильтруем через AJAX. Для ускорения добавляем индексы в MySQL:
ALTER TABLE modx_ms2_products ADD INDEX idx_price (price); ALTER TABLE modx_ms2_products ADD INDEX idx_count (count); Это сокращает время выполнения запросов фильтрации на 50–70%.
Почему miniShop2 эффективнее готовых коробочных решений?
В отличие от битриксовых редакций, miniShop2 не нагружает систему лишними модулями. Вы получаете только необходимый функционал, а всё остальное достраиваете под себя. Стоимость владения ниже в 2–3 раза за счёт отсутствия ежегодных лицензий и возможности самостоятельно править код. Экономия становится особенно заметной при масштабировании — нет привязки к вендору.
Импорт и миграция
Пакетного импорта нет, поэтому используем скрипт прямого создания товаров через API MODX. Для 3000 товаров из CSV разбиваем на пакеты по 100 и запускаем в фоне.
PHP-реализация пакетного импорта
foreach (array_chunk($rows, 100) as $batch) { foreach ($batch as $row) { $resource = $modx->newObject('msProduct'); $resource->fromArray([ 'pagetitle' => $row[0], 'parent' => $categoryId, 'class_key' => 'msProduct', ]); $resource->save(); $product = $modx->getObject('msProductData', $resource->id); $product->set('price', (float) $row[2]); $product->save(); } $modx->cacheManager->clearCache(); } Для миграции из 1С готовим скрипт, читающий CommerceML, сопоставляющий категории и загружающий товары с опциями.
Процесс работы
- Аналитика — изучаем текущий каталог, структуру, интеграции.
- Проектирование — схема категорий, типы опций, способы доставки и оплаты.
- Реализация — установка, настройка, вёрстка, интеграция.
- Тестирование — проверка корзины, заказов, производительности.
- Деплой — настройка ЧПУ, SEO, микроразметка schema.org.
Сроки и что входит
| Этап | Срок (дней) |
|---|---|
| Установка и базовая настройка | 1 |
| Шаблоны каталога, корзины | 3–5 |
| Интеграция доставки и оплаты | 1–2 |
| Импорт товаров из CSV/CommerceML | 1–2 |
| Фильтрация mSearch2 | 2–3 |
| SEO + микроразметка | 1 |
Также доступен дополнительный этап — создание детального чек-листа для редакторов (1 день).
| Параметр | CSV-импорт | CommerceML |
|---|---|---|
| Сложность | Низкая | Средняя |
| Скорость | 1000 товаров/мин | 500 товаров/мин |
| Точность | Требуется предварительная очистка | Высокая, сохраняет связи |
Свяжитесь с нами — оценим проект и предложим решение. Получите консультацию инженера с 7-летним опытом MODX.







