miniShop2 — это самое популярное и мощное решение для создания интернет-магазинов на MODX Revolution. Разработанное специально для российского рынка, оно включает все необходимые функции для полноценной электронной коммерции: каталог товаров, корзину, оформление заказов, интеграцию с платежными системами и службами доставки.
Почему miniShop2 — лучший выбор для MODX
Преимущества miniShop2
- Бесплатность — основная функциональность доступна без ограничений
- Гибкость — подходит для любых типов товаров и услуг
- Производительность — основан на pdoTools, быстро работает с большими каталогами
- Расширяемость — сотни бесплатных и платных дополнений
- Локализация — создан с учетом особенностей российского рынка
Что включает miniShop2
- Система управления товарами и категориями
- Корзина и оформление заказов
- Управление клиентами и их заказами
- Интеграция с платежными системами
- Система доставки
- Отзывы и рейтинги товаров
- Поиск и фильтрация товаров
Установка и первоначальная настройка
Установка через менеджер пакетов
- Зайдите в Управление → Установщики пакетов
- Найдите “miniShop2” в официальном репозитории
- Нажмите “Загрузить” и затем “Установить”
- Следуйте инструкциям мастера установки
Системные требования
- MODX Revolution 2.6.0+
- PHP 7.0+
- MySQL 5.6+ или MariaDB
- pdoTools (устанавливается автоматически)
Первоначальная настройка
После установки выполните следующие шаги:
1. Настройка менеджера товаров
Перейдите в Дополнения → Каталог товаров. Здесь располагается весь функционал управления магазином.
2. Создание корневой категории
Название: Каталог товаров
Псевдоним: catalog
Шаблон: CategoryTemplate
Тип содержимого: text/html
3. Настройка системных параметров
В Система → Настройки системы найдите пространство имен “minishop2”:
ms2_cart_context = web
ms2_category_grid_fields = id,pagetitle,article,price,thumb,new,popular,favorite
ms2_category_show_nested = Yes
ms2_price_format = [2, '.', ' ']
ms2_weight_format = [2, '.', ' ']
Структура каталога товаров
Создание категорий
Категории в miniShop2 — это обычные ресурсы MODX со специальным шаблоном:
Создайте ресурс:
- Название: Мобильные телефоны
- Псевдоним: mobile-phones
- Родитель: Каталог товаров
- Шаблон: CategoryTemplate
- Тип содержимого: text/html
Шаблон категории
CategoryTemplate:
[[*content]]
[[!msProducts?
&parents=`[[*id]]`
&tpl=`tpl.msProducts.row`
&limit=`12`
&where=`{"published": 1, "deleted": 0}`
]]
[[!+page.nav]]
Создание товаров
Товары создаются как дочерние ресурсы категорий:
- В менеджере зайдите в Дополнения → Каталог товаров
- Выберите категорию
- Нажмите Создать товар
- Заполните основные поля:
- Название товара
- Артикул
- Цена
- Краткое описание
- Полное описание
Характеристики товаров
miniShop2 поддерживает различные типы характеристик:
Базовые поля:
- article (артикул)
- price (цена)
- old_price (старая цена)
- weight (вес)
- color (цвет)
- size (размер)
- vendor (производитель)
Логические поля:
- new (новинка)
- popular (популярный)
- favorite (рекомендуемый)
Вывод товаров на сайте
Сниппет msProducts
Основной сниппет для вывода товаров:
[[!msProducts?
&parents=`5`
&limit=`12`
&tpl=`tpl.msProducts.row`
&sortby=`{"price": "ASC"}`
&where=`{"new": 1}`
]]
Шаблон товара в списке
tpl.msProducts.row:
<div class="ms2_product">
<div class="ms2_product_image">
[[+thumb:default=`/assets/images/no-photo.jpg`]]
</div>
<div class="ms2_product_info">
<h3 class="ms2_product_title">
<a href="[[+uri]]">[[+pagetitle]]</a>
</h3>
<div class="ms2_product_price">
[[+old_price:gt=`0`:then=`
<span class="ms2_old_price">[[+old_price]] ₽</span>
`]]
<span class="ms2_price">[[+price]] ₽</span>
</div>
<div class="ms2_product_actions">
[[!msProductButtons?
&tpl=`tpl.msProductButtons`
&product=`[[+id]]`
]]
</div>
</div>
</div>
Кнопки товара
tpl.msProductButtons:
<form class="ms2_form" method="post">
<input type="hidden" name="id" value="[[+id]]" />
<button type="submit" name="ms2_action" value="cart/add"
class="btn btn-primary">
В корзину
</button>
</form>
Страница товара
Шаблон товара
ProductTemplate:
<article class="ms2_product">
<div class="row">
<div class="col-md-6">
[[!msGallery? &product=`[[*id]]`]]
</div>
<div class="col-md-6">
<h1>[[*pagetitle]]</h1>
[[*article:notempty=`
<p><strong>Артикул:</strong> [[*article]]</p>
`]]
<div class="ms2_product_price">
[[*old_price:gt=`0`:then=`
<span class="ms2_old_price">[[*old_price]] ₽</span>
`]]
<span class="ms2_price">[[*price]] ₽</span>
</div>
<div class="ms2_product_options">
[[!msProductOptions? &product=`[[*id]]`]]
</div>
[[!msProductButtons?
&tpl=`tpl.msProductButtons.detail`
&product=`[[*id]]`
]]
[[*content]]
</div>
</div>
</article>
Галерея товара
[[!msGallery?
&product=`[[*id]]`
&tpl=`tpl.msGallery.row`
&limit=`10`
]]
tpl.msGallery.row:
<div class="ms2_gallery">
<div class="ms2_main_image">
<img src="[[+image]]" alt="[[+name]]" />
</div>
<div class="ms2_thumbnails">
[[+thumbnails]]
</div>
</div>
Корзина и оформление заказа
Корзина
Создайте отдельную страницу для корзины:
Название: Корзина
Псевдоним: cart
Шаблон: CartTemplate
Содержимое:
[[!msCart]]
[[!msOrder]]
Шаблон корзины
tpl.msCart:
<div id="msCart">
[[+products]]
<div class="ms2_cart_total">
<table>
<tr>
<td>Количество товаров:</td>
<td>[[+total_count]]</td>
</tr>
<tr>
<td>Общая стоимость:</td>
<td>[[+total_cost]] ₽</td>
</tr>
</table>
</div>
</div>
Форма заказа
tpl.msOrder:
<form class="ms2_form" id="msOrder" method="post">
<div class="row">
<div class="col-md-6">
<h3>Контактные данные</h3>
<div class="form-group">
<label>ФИО *</label>
<input type="text" name="receiver" value="[[+fi.receiver]]"
class="form-control" required />
</div>
<div class="form-group">
<label>Email *</label>
<input type="email" name="email" value="[[+fi.email]]"
class="form-control" required />
</div>
<div class="form-group">
<label>Телефон *</label>
<input type="tel" name="phone" value="[[+fi.phone]]"
class="form-control" required />
</div>
</div>
<div class="col-md-6">
<h3>Доставка</h3>
[[+delivery]]
<h3>Оплата</h3>
[[+payment]]
</div>
</div>
<div class="form-group">
<label>Комментарий к заказу</label>
<textarea name="comment" class="form-control">[[+fi.comment]]</textarea>
</div>
<button type="submit" name="ms2_action" value="order/submit"
class="btn btn-success">
Оформить заказ
</button>
</form>
Управление заказами
Статусы заказов
miniShop2 поддерживает гибкую систему статусов:
- Новый — заказ только что оформлен
- Принят — заказ обработан менеджером
- Оплачен — получена оплата
- Отправлен — товар передан в доставку
- Получен — заказ доставлен клиенту
- Отменен — заказ отменен
Уведомления
Настройте автоматические уведомления в Система → Email шаблоны:
msOrderNew.tpl (новый заказ):
Здравствуйте, [[+order.receiver]]!
Ваш заказ №[[+order.num]] успешно оформлен.
Товары в заказе:
[[+products]]
Общая сумма: [[+order.cost]] ₽
Спасибо за покупку!
Платежные системы
Подключение ЮKassa
- Установите дополнение “msPaymentYookassa”
- Получите ключи в личном кабинете ЮKassa
- Настройте в Дополнения → Каталог товаров → Настройки:
Идентификатор магазина: 123456
Секретный ключ: live_***
Тестовый режим: Нет
Подключение РобоKassa
// Настройки RobоKassa
$shop_id = 'demo';
$password1 = 'password_1';
$password2 = 'password_2';
$test_mode = true;
Доставка товаров
СДЭК
- Установите “msDeliveryСDEK”
- Получите API ключи в кабинете СДЭК
- Настройте тарифы доставки
Почта России
Установка: msDeliveryRussianPost
Настройка:
- Логин API
- Пароль API
- Тариф по умолчанию
Поиск и фильтрация
mSearch2
Для полнотекстового поиска установите mSearch2:
[[!mSearch2?
&class=`msProduct`
&parents=`5`
&returnIds=`1`
&showLog=`0`
]]
[[!msProducts?
&resources=`[[+mSearch2.ids]]`
&parents=`0`
&tpl=`tpl.msProducts.row`
]]
mFilter2
Для фильтрации по характеристикам:
[[!mFilter2?
&parents=`5`
&filters=`
ms|price:number,
ms|color:checkbox,
ms|vendor:select
`
&aliases=`
ms|price==Цена,
ms|color==Цвет,
ms|vendor==Производитель
`
]]
Шаблон фильтра
tpl.mFilter2.outer:
<form class="filters" id="mse2_filters">
<div class="row">
[[+filters]]
</div>
<div class="mse2_controls">
<button type="submit" class="btn btn-primary">Применить</button>
<button type="reset" class="btn btn-secondary">Сбросить</button>
</div>
</form>
<div id="mse2_results">
[[!msProducts?
&parents=`[[*id]]`
&tpl=`tpl.msProducts.row`
&limit=`12`
]]
</div>
Интеграция с CRM-системами
amoCRM
Установка: msAmoCrm
Настройка:
- Домен в amoCRM
- API ключ
- Пользователь
- Настройка полей
Битрикс24
// Webhook для отправки заказов в Битрикс24
$webhook_url = 'https://your-domain.bitrix24.ru/rest/1/webhook_key/';
// Отправка данных заказа
$order_data = array(
'TITLE' => 'Заказ №' . $order['num'],
'NAME' => $order['receiver'],
'PHONE' => $order['phone'],
'EMAIL' => $order['email']
);
SEO-оптимизация каталога
Подробнее об SEO для каталогов товаров читайте в статье Каталог товаров на MODX.
URL-адреса товаров
Настройте friendly URLs:
/catalog/mobile-phones/iphone-14-pro/
/catalog/computers/macbook-air-m2/
Метатеги
<!-- В шаблоне товара -->
<title>[[*pagetitle]] - купить в интернет-магазине</title>
<meta name="description" content="[[*introtext:default=`[[*pagetitle]] - описание, характеристики, цена [[*price]] руб. Доставка по всей России.`]]">
<!-- Микроразметка Schema.org -->
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "[[*pagetitle]]",
"image": "[[*image]]",
"description": "[[*introtext]]",
"sku": "[[*article]]",
"offers": {
"@type": "Offer",
"url": "[[~[[*id]]]]",
"priceCurrency": "RUB",
"price": "[[*price]]",
"availability": "https://schema.org/InStock"
}
}
</script>
Генерация sitemap
[[!pdoSitemap?
&parents=`5`
&depth=`10`
&class=`msProduct`
&tpl=`@INLINE <url><loc>[[+url]]</loc><lastmod>[[+createdon:strtotime:date=`%Y-%m-%d`]]</lastmod></url>`
]]
Производительность и оптимизация
Кеширование
<!-- Кеширование списков товаров -->
[[msProducts?
&cache=`1`
&cacheTime=`3600`
&parents=`5`
]]
<!-- Кеширование корзины отключить -->
[[!msCart]]
Оптимизация базы данных
-- Индексы для быстрого поиска
ALTER TABLE `modx_ms2_products`
ADD INDEX `published_deleted` (`published`, `deleted`);
ALTER TABLE `modx_ms2_products`
ADD INDEX `price` (`price`);
-- Очистка логов
DELETE FROM modx_ms2_order_logs WHERE createdon < DATE_SUB(NOW(), INTERVAL 3 MONTH);
Настройка хостинга
Для стабильной работы интернет-магазина рекомендуется использовать качественный хостинг. Отличным выбором станет Timeweb — быстрые SSD-диски, современные версии PHP и круглосуточная поддержка обеспечат стабильную работу вашего магазина.
Безопасность магазина
Защита от ботов
<!-- reCAPTCHA в форме заказа -->
[[!FormItRetriever? &redirectToOnNotFound=`[[*id]]`]]
[[!FormIt?
&submitVar=`order-submit`
&successMessage=`Заказ успешно оформлен!`
&validate=`receiver:required,email:required:email,recaptcha:required`
&hooks=`recaptcha,msOrderProcessor`
]]
SSL-сертификат
Обязательно используйте HTTPS для страниц оформления заказа и оплаты:
# В .htaccess
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(cart|checkout|payment)
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Популярные дополнения для miniShop2
Расширьте функциональность магазина с помощью дополнений. Больше информации о дополнениях MODX в статье Топ дополнений MODX.
Обязательные дополнения
- msPromoCode — промокоды и скидки
- msImportExport — импорт/экспорт товаров
- msMultiCurrency — мультивалютность
- msOptionsPrice2 — опции товаров с влиянием на цену
Полезные дополнения
- msStat — статистика продаж
- msDiscount — система скидок
- msGallery — расширенная галерея товаров
- msOneClick — покупка в один клик
Мобильная версия
Адаптивная верстка
/* Адаптация каталога товаров */
.ms2_products {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 20px;
}
@media (max-width: 768px) {
.ms2_products {
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 10px;
}
.ms2_product_image img {
width: 100%;
height: auto;
}
}
PWA для магазина
<!-- manifest.json -->
{
"name": "Интернет-магазин",
"short_name": "Shop",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#000000",
"icons": [
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
Заключение
miniShop2 — это мощная платформа для создания интернет-магазинов любой сложности на MODX Revolution. Благодаря модульной архитектуре, rich функциональности из коробки и огромному сообществу разработчиков, вы сможете создать магазин, который будет расти вместе с вашим бизнесом.
Основные этапы создания магазина:
- Установка и настройка miniShop2
- Создание структуры каталога с категориями и товарами
- Настройка оформления заказов с доставкой и оплатой
- Интеграция с внешними сервисами (CRM, аналитика)
- SEO-оптимизация и настройка производительности
- Тестирование и запуск
miniShop2 дает все инструменты для создания успешного интернет-магазина — остается только правильно их использовать.