
Быстрый старт
Как за 10–15 минут включить кнопку «Купить в 1 клик» на странице товара MiniShop3.
Требования
| Требование | Версия |
|---|---|
| MODX Revolution | 3.0+ |
| PHP | 8.2+ |
| MiniShop3 | установлен и настроен (каталог, оплата, доставка) |
| pdoTools | 3.x (для примеров Fenom) |
Шаг 1: Установка пакета
Через ModStore
- Подключите репозиторий ModStore в настройках MODX.
- Перейдите в Extras → Installer и нажмите Download Extras (в MODX 3: Пакеты → Установщик).
- Убедитесь, что на сайте уже установлен MiniShop3 (и при необходимости pdoTools 3.x для примеров Fenom в этой документации).
- Найдите msFastOrder в списке пакетов, нажмите Download, затем Install и дождитесь завершения резолверов (таблица логов, настройки, чанки, сниппеты, плагин).
- Настройки → Очистить кэш.
Пакет в каталоге: msFastOrder на modstore.pro.
После установки проверьте
| Элемент | Ожидание |
|---|---|
Сниппет msFastOrder | В списке элементов |
Сниппет msFastOrderClientConfig | В списке элементов |
Чанки msfo_* | Установлены |
Плагин msfastorder_web | Включён (события OnLoadWebPageCache, OnWebPagePrerender) |
Таблица msfastorder_logs | Создана в БД |
Шаг 2: Системные настройки
Настройки → Системные настройки, фильтр по пространству имён msfastorder (или область msfastorder / msfastorder_main в зависимости от сборки транспорта).
Минимум для режима MS (заказ в магазине):
| Ключ | Что указать |
|---|---|
msfastorder_method | MS |
msfastorder_payment_id | Числовой ID активного способа оплаты в MiniShop3 |
msfastorder_delivery_id | ID способа доставки MS3 |
msfastorder_email_manager | Email для уведомлений (опционально для MS, обязателен для MAIL) |
Для MAIL (только письмо, без заказа в MS3): msfastorder_method = MAIL и непустой msfastorder_email_manager.
Резолвер установки может создать способы Fast Order Payment / Fast Order Delivery и записать их ID в msfastorder_payment_id и msfastorder_delivery_id — проверьте в MiniShop3 → Способы оплаты / доставки.
Подробная таблица всех ключей: Системные настройки.
Шаг 3: Страница «Спасибо» (режим MS)
Для способа оплаты без внешнего провайдера (DefaultPayment) в payment_link подставляется страница просмотра заказа с msorder={uuid}.
- Создайте ресурс «Спасибо за заказ» (alias, например
spasibo-zakaz). - В контент или шаблон добавьте сниппет просмотра заказа MS3, например
[[!ms3_get_order]](по документации вашей сборки MS3). - Укажите ID ресурса в настройке MiniShop3
ms3_order_success_page_id(или аналог в вашей версии MS3).
Шаг 4: Сниппет на карточке товара
Откройте шаблон или чанк страницы товара (msProduct). Вызов должен быть некэшированным — иначе CSRF и скрипты могут не обновиться.
{'!msFastOrder' | snippet}[[!msFastOrder]]С явным ID товара (каталог, список в mFilter и т.д.):
{'!msFastOrder' | snippet : ['id' => $id]}[[!msFastOrder? &id=`[[+id]]`]]Параметры сниппета: Сниппет msFastOrder.
Шаг 5: Рекомендуемая разметка (варианты и количество)
Если на сайте есть ms3Variants, оберните селекторы вариантов и поле количества в одну форму с классом ms3variants-product-{id} — msFastOrder при открытии модалки скопирует количество и variant_id со страницы.
{set $productId = $_modx->resource.id}
<form class="ms3variants-product-{$productId} ms3_form" method="post" data-product-id="{$productId}">
{'!msProductVariants' | snippet : ['product' => $productId]}
{* msFastOrder читает name="variant_id" или name="ms3variant_id" *}
<input type="hidden" name="variant_id" value="">
<input type="number" name="count" class="msfastorder-count-{$productId}" value="1" min="1">
</form>
{'!msFastOrder' | snippet}<form class="ms3variants-product-[[*id]] ms3_form" method="post" data-product-id="[[*id]]">
[[!msProductVariants]]
<input type="hidden" name="variant_id" value="">
<input type="number" name="count" class="msfastorder-count-[[*id]]" value="1" min="1">
</form>
[[!msFastOrder]]ms3Variants по умолчанию пишет выбранный вариант в input[name="_variant_id"]. Если в шаблоне остаётся только это поле, при смене варианта копируйте значение в variant_id (событие msfo:modal:beforeLoad или правка чанка ms3_variants) — см. Интеграция → ms3Variants.
На каталоге в цикле товаров задайте класс msfastorder-count-{id} у поля количества:
<input type="number" name="count" class="msfastorder-count-{$id}" value="1" min="1">
{'!msFastOrder' | snippet : ['id' => $id]}<input type="number" name="count" class="msfastorder-count-[[+id]]" value="1" min="1">
[[!msFastOrder? &id=`[[+id]]`]]Иначе может подтянуться чужой input[name="count"] со страницы.
Шаг 6: Проверка на фронте
- Откройте страницу товара в браузере (не в режиме предпросмотра с устаревшим кэшем).
- В исходном коде страницы должны быть:
msfo.min.css,msfo.min.js;- блок
<script>window.msfoConfig = …</script>сcsrfTokenиconnectorUrl.
- Нажмите кнопку быстрого заказа — откроется модалка с формой.
- Заполните ФИО и телефон, отправьте заказ.
- Режим MS: заказ в MiniShop3 → Заказы, строка в таблице
msfastorder_logs. - Режим MAIL: письмо на
msfastorder_email_manager, в MS3 заказа нет.
Проверка connector
| Проверка | Ожидание |
|---|---|
GET …/assets/components/msfastorder/connector.php | HTTP 405 (разрешён только POST) |
POST без csrf_token | HTTP 403, JSON success: false |
Шаг 7: Оплата через ЮKassa (опционально)
Если нужна ссылка на оплату ЮKassa в ответе и на экране успеха:
- Установите msp3YooKassa.
- Настройте Shop ID, Secret Key и webhook.
- В MS3 включите способ «Оплата через ЮKassa», возьмите его ID.
- Пропишите ID в
msfastorder_payment_id,msfastorder_method=MS.
Пошагово: Интеграция → ЮKassa.
Что подключается на странице
| Файл | Назначение |
|---|---|
{msfastorder_assets_url}css/msfo.min.css | Стили модалки и формы |
{msfastorder_assets_url}js/msfo.min.js | Модалка, AJAX, события |
inline window.msfoConfig | CSRF, лексикон, URL connector (обновляет плагин msfastorder_web) |
Что дальше
- Системные настройки — маска телефона, модалки, rate limit, редирект
- Подключение на сайте — кастомизация формы,
msFastOrder.openOrderModal() - Интеграция — кастомная кнопка, аналитика, CRM
- FAQ — если модалка не открывается или нет
payment_link
