Настройка 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 — e-commerce компонент для 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
→ Заголовок: Кресла
→ Псевдоним: kresla
→ Опубликован: Да
→ Вкладка 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

Для СДЭК, Boxberry, Почты России — устанавливаются дополнительные пакеты:

Package Management → Search: msCdek → Download → Install
→ miniShop2 → Доставки → СДЭК
→ Ввести 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/kresla
→ Товар: catalog/kresla/kreslo-ofisnoe

Сроки реализации

  • Установка компонентов + базовая настройка: 1 день
  • Шаблоны каталога, карточки товара, корзины: 3–5 дней
  • Настройка доставки + оплата: 1–2 дня
  • Импорт товаров из Excel/CSV: 1–2 дня
  • mSearch2 с фасетной фильтрацией: 2–3 дня
  • SEO + микроразметка schema.org: 1 день

Итого типовой магазин на miniShop2: 1,5–2 недели.