
- MODX 3
- PHP 8.2
- miniShop3


Как за 10–15 минут включить кнопку «Купить в 1 клик» на странице товара MiniShop3.
| Требование | Версия |
|---|---|
| MODX Revolution | 3.0+ |
| PHP | 8.2+ |
| MiniShop3 | установлен и настроен (каталог, оплата, доставка) |
| pdoTools | 3.x (для примеров Fenom) |
Пакет в каталоге: msFastOrder на modstore.pro.
| Элемент | Ожидание |
|---|---|
Сниппет msFastOrder | В списке элементов |
Сниппет msFastOrderClientConfig | В списке элементов |
Чанки msfo_* | Установлены |
Плагин msfastorder_web | Включён (события OnLoadWebPageCache, OnWebPagePrerender) |
Таблица msfastorder_logs | Создана в БД |
Настройки → Системные настройки, фильтр по пространству имён 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 → Способы оплаты / доставки.
Подробная таблица всех ключей: Системные настройки.
Для способа оплаты без внешнего провайдера (DefaultPayment) в payment_link подставляется страница просмотра заказа с msorder={uuid}.
spasibo-zakaz).[[!ms3_get_order]] (по документации вашей сборки MS3).ms3_order_success_page_id (или аналог в вашей версии MS3).Откройте шаблон или чанк страницы товара (msProduct). Вызов должен быть некэшированным — иначе CSRF и скрипты могут не обновиться.
{'!msFastOrder' | snippet}[[!msFastOrder]]С явным ID товара (каталог, список в mFilter и т.д.):
{'!msFastOrder' | snippet : ['id' => $id]}[[!msFastOrder? &id=`[[+id]]`]]Параметры сниппета: Сниппет msFastOrder.
Если на сайте есть 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"] со страницы.
msfo.min.css и msfo.min.js<script>window.msfoConfig = …</script> с csrfToken и connectorUrlmsfastorder_logs.msfastorder_email_manager, в MS3 заказа нет.| Проверка | Ожидание |
|---|---|
GET …/assets/components/msfastorder/connector.php | HTTP 405 (разрешён только POST) |
POST без csrf_token | HTTP 403, JSON success: false |
Если нужна ссылка на оплату ЮKassa в ответе и на экране успеха:
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) |
msFastOrder.openOrderModal()payment_link