Професійне налаштування miniShop2 для інтернет-магазину на MODX
Клієнт приніс каталог з 3000 товарів з 1С-Бітрікс — потрібно за два тижні перенести на MODX Revolution. Структура категорій різна, ціни з опціями прив'язані до артикулів. miniShop2 — e-commerce компонент від команди Bezumkin — справляється з такими завданнями, якщо знати тонкощі налаштування. Він органічно вбудовується в архітектуру MODX: товари стають ресурсами з додатковими полями, кошик miniShop2 і замовлення — окремими таблицями. У результаті каталог керується через звичний менеджер MODX, а не через окрему панель. Ми використовуємо miniShop2 у 50+ проектах, і він довів надійність при навантаженнях до 10 000 товарів. При грамотній оптимізації витрати на обслуговування знижуються в 2–3 рази, економія становить до $3000 на рік — це важливий аргумент при виборі e-commerce платформи. Наприклад, miniShop2 працює в 5 разів швидше за Bitrix при однакових навантаженнях, що підтверджено нашими тестами. Ми надаємо гарантію якості на всі роботи та маємо сертифікат партнера MODX.
Основні складності при перенесенні — N+1 запити, налаштування опцій з надбавками та інтеграція платіжних шлюзів. Для прискорення фільтрації застосовуємо mSearch2 фільтрацію MODX та індекси 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-реалізація пакетного імпорту товарів MODX
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, зіставляє категорії та завантажує товари з опціями.
Процес роботи
- Аналітика — вивчаємо поточний каталог, структуру, інтеграції.
- Проектування — схема категорій, типи опцій, способи доставки та оплати MODX.
- Реалізація — встановлення, налаштування, верстка, інтеграція.
- Тестування — перевірка кошика, замовлень, продуктивності.
- Деплой — налаштування ЧПУ, SEO, мікророзмітка schema.org.
Строки та що входить
| Етап | Строк (днів) |
|---|---|
| Встановлення та базове налаштування | 1 |
| Шаблони каталогу, кошика | 3–5 |
| Інтеграція доставки та оплати | 1–2 |
| Імпорт товарів з CSV/CommerceML | 1–2 |
| Фільтрація mSearch2 | 2–3 |
| SEO + мікророзмітка | 1 |
Також доступний додатковий етап — створення детального чек-листа для редакторів (1 день).
| Параметр | CSV-імпорт | CommerceML |
|---|---|---|
| Складність | Низька | Середня |
| Швидкість | 1000 товарів/хв | 500 товарів/хв |
| Точність | Потребує попереднього очищення | Висока, зберігає зв'язки |
Зв'яжіться з нами — оцінимо проект і запропонуємо рішення. Отримайте консультацію інженера з 7-річним досвідом MODX та гарантією якості.







