Налаштування miniShop2 для інтернет-магазину на MODX

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування miniShop2 для інтернет-магазину на MODX
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування miniShop2 для інтернет-магазину на MODX

miniShop2 — компонент електронної комерції для MODX Revolution, розроблений командою Bezumkin. Органічно інтегрується в архітектуру MODX: товари — це ресурси з додатковими полями, корзина та замовлення — власні таблиці компонента. Результат — каталог, яким керують через звичний MODX-менеджер, а не окремо панель.

Встановлення через Package Manager

Extras → Package Management → Search: miniShop2 → Download → Install

miniShop2 встановлює кілька компонентів:

  • miniShop2 — основний компонент (товари, замовлення, категорії)
  • pdoTools — оптимізовані сніпети для виводу даних (обов'язкова залежність)
  • mSearch2 — пошук та фільтрація (рекомендується)
  • msOptionsPrice2 — опції з впливом на ціну (рекомендується)

Після встановлення в контекстному меню ресурсу з'являються типи: «Товар miniShop2» та «Категорія miniShop2».

Структура каталогу

MODX-ресурси вибудовуються в дерево, miniShop2 це використовує безпосередньо:

Каталог (msCategory)
├── Крісла (msCategory)
│   ├── Крісло офісне чорне (msProduct)
│   └── Крісло керівника (msProduct)
└── Столи (msCategory)
    └── Стіл кутовий (msProduct)

Створення категорії:

Ресурси → Створити ресурс → Тип: Категорія miniShop2
→ Заголовок: Крісла
→ Псевдонім: krisla
→ Опубліковано: Так
→ Вкладка miniShop2: налаштування виводу товарів

Створення товару:

Всередину категорії → Створити ресурс → Тип: Товар miniShop2
→ Заголовок, псевдонім, опис
→ Вкладка «Товар»:
   Ціна: 1499.00
   Стара ціна: 1999.00
   Артикул: CHAIR-BLK
   Вага: 12.5
   Кількість: 25
→ Галерея: завантажуємо зображення
→ Опції: Колір, Розмір

Вивід каталогу через сніпети

miniShop2 використовує сніпети pdoTools для виводу даних. Вивід списку товарів:

[[!msProducts?
    &parents=`15`
    &tpl=`tpl.msProduct.row`
    &limit=`24`
    &sortby=`{"price":"ASC"}`
    &where=`{"msProduct.price:>":0}`
    &includeTVs=`color,size`
]]

Шаблон tpl.msProduct.row — Chunk з плейсхолдерами:

<div class="product-card">
    <a href="[[+uri]]">
        <img src="[[+thumb]]" alt="[[+pagetitle]]">
    </a>
    <div class="product-title">[[+pagetitle]]</div>
    <div class="product-price">
        [[+old_price:notempty=`<span class="old-price">[[+old_price]] грн.</span>`]]
        <strong>[[+price]] грн.</strong>
    </div>
    <button class="ms2_add_to_cart" data-id="[[+id]]">У кошик</button>
</div>

Параметр &parents — ID батьківського ресурсу-категорії або список ID через кому. &includeTVs — додаткові TV-поля для включення у вивід.

Опції товару (msOptionsPrice2)

Опції — це атрибути, які впливають на ціну, артикул та залишок:

Extras → msOptionsPrice2 → Опції → Створити
→ Назва: Колір
→ Тип: select

→ Значення:
   Чорний [key=BLK, mod=0]
   Білий [key=WHT, mod=0]
   Червоний [key=RED, mod=150]  ← надбавка 150 грн.

Прив'язання опцій до товару — через вкладку «Опції» в редакторі товару. Для кожної комбінації опцій можна задати окремий артикул та кількість.

JavaScript-обробник смени опції (вбудований у miniShop2):

// miniShop2 автоматично оновлює ціну при смені опцій
// через AJAX-запит до процесора ms2/product/options/get
document.addEventListener('ms2_options_changed', function(e) {
    const { price, old_price, count } = e.detail
    document.querySelector('.product-price').textContent = price + ' грн.'
})

Кошик та оформлення замовлення

Кошик керується через AJAX-виклики до процесорів miniShop2:

// Додавання в кошик
fetch('/assets/components/minishop2/index.php', {
    method: 'POST',
    body: new URLSearchParams({
        action: 'cart/add',
        id:     productId,
        count:  1,
        options: JSON.stringify({ color: 'BLK' })
    })
})
.then(r => r.json())
.then(data => {
    if (data.success) {
        updateCartCounter(data.data.total_count)
    }
})

Форма оформлення замовлення:

[[!msCart?
    &tpl=`tpl.msCart`
]]

[[!msOrder?
    &tpl=`tpl.msOrder`
    &deliveries=`1,2,3`
    &payments=`1,2`
]]

Сніпет msOrder виводить форму з вибором доставки та оплати та обробляє оформлення через JavaScript + AJAX.

Доставки та оплата

miniShop2 → Доставки → Створити
→ Назва: Кур'єрська доставка
→ Вартість: 300 грн.
→ Безплатно від: 2000 грн.
→ Опис: Доставка по місту 1–2 робочих дні

miniShop2 → Оплата → Створити
→ Назва: Банківська карта
→ Клас: msPaymentRobokassa (потрібен окремий пакет)
→ Налаштування: login, password1, password2, test mode

Для кур'єрських служб, служб посилок, Укрпошти — встановлюються додаткові пакети:

Package Management → Search: msCdek → Download → Install
→ miniShop2 → Доставки → CDEK
→ Вводимо API-ключ та місто-відправника

Статуси замовлень

miniShop2 поставляється з базовими статусами: Нове, Сплачено, Виконано, Скасовано. Користувацькі статуси:

miniShop2 → Статуси → Створити
→ Назва: Передано у службу доставки
→ Колір: #2196F3
→ Сповіщення покупцю: Так (шаблон листа)

Змінення статусу програмно:

// У плагіні або сніпеті
$order = $modx->getObject('msOrder', $orderId);
$order->set('status', 4); // ID користувацького статусу
$order->save();

// Відправлення сповіщення (miniShop2 робить це автоматично через события)
$modx->invokeEvent('msOnChangeOrderStatus', [
    'order'  => $order,
    'status' => 4,
]);

Фільтрація та пошук (mSearch2)

mSearch2 забезпечує фасетний пошук по каталогу:

[[!mFilter2?
    &filters=`price||ms|numrange,color||ms|select,size||ms|select`
    &tpl=`tpl.Filter`
    &parents=`15`
    &element=`msProducts`
    &sortby=`{"price":"ASC"}`
]]

Фільтрація працює через AJAX — при змінені фільтра список товарів оновлюється без перезавантаження сторінки.

Для оптимізації фасетів — поле ms2_properties в таблиці modx_ms2_products індексується:

ALTER TABLE modx_ms2_products ADD INDEX idx_price (price);
ALTER TABLE modx_ms2_products ADD INDEX idx_count (count);

Імпорт товарів

miniShop2 не включає імпортер з коробки. Використовуються додаткові компоненти:

Package Management → Search: Commerce2 (або msImportExporter)

Для великих каталогів (тисячи товарів) — скрипт прямої завантаження через API MODX:

// Пакетний імпорт з CSV
$rows = array_map('str_getcsv', file($csvPath));
foreach ($rows as $row) {
    $resource = $modx->newObject('msProduct');
    $resource->fromArray([
        'pagetitle'  => $row[0],
        'alias'      => $modx->filterPathSegment($row[0]),
        'parent'     => $categoryId,
        'published'  => 1,
        'class_key'  => 'msProduct',
    ]);
    $resource->save();

    $product = $modx->getObject('msProductData', $resource->id);
    $product->fromArray([
        'price'   => (float) $row[2],
        'vendor'  => $row[3],
        'count'   => (int) $row[4],
        'article' => $row[5],
    ]);
    $product->save();
}

SEO-налаштування

miniShop2 товари — це ресурси MODX, тому SEO працює стандартними засобами:

  • Meta Title = longtitle або pagetitle ресурсу
  • Meta Description = TV-поле description або вбудований опис

Для автогенерації метатегів — плагін seoSuite або pdoPage з користувацькими шаблонами.

ЧПУ для каталогу налаштовується через System Settings:

System Settings → friendly_url: Yes
System Settings → friendly_alias_path: Yes
→ Ресурс каталогу → псевдонім: catalog
→ Категорія: catalog/krisla
→ Товар: catalog/krisla/krislo-ofisne

Терміни реалізації

  • Встановлення компонентів + базова налаштування: 1 день
  • Шаблони каталогу, карточки товару, кошик: 3–5 днів
  • Налаштування доставки + оплата: 1–2 дні
  • Імпорт товарів з Excel/CSV: 1–2 дні
  • mSearch2 з фасетною фільтрацією: 2–3 дні
  • SEO + мікророзмітка schema.org: 1 день

Разом типовий магазин на miniShop2: 1,5–2 тижні.