
Сниппет msFastOrder
Выводит кнопку открытия модалки быстрого заказа и регистрирует фронтенд-ресурсы компонента.
Что делает
- Проверяет, что ресурс с
id— товар MiniShop3 (msProduct+Data). - Рендерит чанк кнопки (
tplBtn, по умолчаниюmsfo_button). - Устанавливает флаг
msfastorder.page_activeдля плагинаmsfastorder_web. - Подключает
msfo.min.cssиmsfo.min.jsс версией поmtimeфайла. - Создаёт CSRF-токен в сессии (
ClientConfig::ensureCsrfToken).
Плагин msfastorder_web перед отдачей страницы подставляет актуальный window.msfoConfig (в т.ч. свежий csrfToken).
Параметры
| Параметр | По умолчанию | Используется в PHP | Описание |
|---|---|---|---|
id | ID текущего ресурса | да | ID товара MS3 |
tplBtn | msfo_button | да | Имя чанка кнопки |
primary | 0 | да | Класс msfo-trigger--primary на кнопке |
tplModal | msfo_modal | нет* | Эталон оболочки модалки |
tplForm | msfo_form | нет* | Эталон формы |
tplSuccess | msfo_success | нет* | Эталон экрана успеха |
method | — | нет | Режим MS/MAIL только из msfastorder_method |
* Сохранены для совместимости; стандартный UI строится в msfo.js (renderForm, renderSuccess, ModalManager).
Если товар не найден или id ≤ 0 — сниппет возвращает пустую строку.
Использование
Страница товара
{'!msFastOrder' | snippet}[[!msFastOrder]]Каталог / список товаров
{'!msFastOrder' | snippet : [
'id' => $id,
'primary' => 1
]}[[!msFastOrder?
&id=`[[+id]]`
&tplBtn=`my_fast_order_btn`
&primary=`1`
]]Разметка кнопки (чанк msfo_button)
Обязательные атрибуты для делегирования клика в msfo.js:
<button type="button"
class="msfo-trigger{if $primary} msfo-trigger--primary{/if}"
data-msfo-trigger
data-msfo-product-id="{$product_id}"
data-msfo-hash="{$hash}">
{$_modx->lexicon('msfastorder_button_text')}
</button><button type="button"
class="msfo-trigger[[+primary:is=`1`:then=` msfo-trigger--primary`]]"
data-msfo-trigger
data-msfo-product-id="[[+product_id]]"
data-msfo-hash="[[+hash]]">
[[%msfastorder_button_text]]
</button>| Атрибут | Описание |
|---|---|
data-msfo-trigger | Маркер кнопки |
data-msfo-product-id | ID товара для product/get |
Плейсхолдеры чанка: product_id, hash (md5 от product_id + site_key), primary.
Своя кнопка без чанка — те же data-msfo-trigger и data-msfo-product-id (см. msFastOrderClientConfig).
Поля заказа (POST)
Отправляются на order/create (см. AJAX API):
| Поле | Описание |
|---|---|
product_id | ID товара |
count | Количество |
options | JSON, например {"variant_id":42} |
receiver, phone, email, city, comment | Данные покупателя |
Программное открытие модалки
После загрузки msfo.min.js на странице доступен window.msFastOrder.openOrderModal(productId) — открытие формы без кнопки из чанка msfo_button.
Краткий вызов:
await msFastOrder.openOrderModal(123); // ID ресурса msProductОбязательно на той же странице: window.msfoConfig (через этот сниппет или msFastOrderClientConfig) и подключённый msfo.min.js.
Подробно: сценарии, события, своя кнопка, каталог, ошибки — Подключение на сайте → Программное открытие модалки.
См. также
- msFastOrderClientConfig — только конфиг
- Подключение на сайте
- Системные настройки
