Skip to content
msFastOrder
msFastOrder
Быстрый заказ в один клик через модальное окно для MODX 3 и MiniShop3
  1. Компоненты
  2. msFastOrder
  3. Интеграция на сайте
  4. Сниппет msFastOrder

Сниппет msFastOrder

Выводит кнопку открытия модалки быстрого заказа и регистрирует фронтенд-ресурсы компонента.

Что делает

  1. Проверяет, что ресурс с id — товар MiniShop3 (msProduct + Data).
  2. Рендерит чанк кнопки (tplBtn, по умолчанию msfo_button).
  3. Устанавливает флаг msfastorder.page_active для плагина msfastorder_web.
  4. Подключает msfo.min.css и msfo.min.js с версией по mtime файла.
  5. Создаёт CSRF-токен в сессии (ClientConfig::ensureCsrfToken).

Плагин msfastorder_web перед отдачей страницы подставляет актуальный window.msfoConfig (в т.ч. свежий csrfToken).

Параметры

ПараметрПо умолчаниюИспользуется в PHPОписание
idID текущего ресурсадаID товара MS3
tplBtnmsfo_buttonдаИмя чанка кнопки
primary0даКласс msfo-trigger--primary на кнопке
tplModalmsfo_modalнет*Эталон оболочки модалки
tplFormmsfo_formнет*Эталон формы
tplSuccessmsfo_successнет*Эталон экрана успеха
methodнетРежим MS/MAIL только из msfastorder_method

* Сохранены для совместимости; стандартный UI строится в msfo.js (renderForm, renderSuccess, ModalManager).

Если товар не найден или id ≤ 0 — сниппет возвращает пустую строку.

Использование

Страница товара

fenom
{'!msFastOrder' | snippet}
modx
[[!msFastOrder]]

Каталог / список товаров

fenom
{'!msFastOrder' | snippet : [
  'id' => $id,
  'primary' => 1
]}
modx
[[!msFastOrder?
  &id=`[[+id]]`
  &tplBtn=`my_fast_order_btn`
  &primary=`1`
]]

Разметка кнопки (чанк msfo_button)

Обязательные атрибуты для делегирования клика в msfo.js:

fenom
<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>
modx
<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-idID товара для 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_idID товара
countКоличество
optionsJSON, например {"variant_id":42}
receiver, phone, email, city, commentДанные покупателя

Программное открытие модалки

После загрузки msfo.min.js на странице доступен window.msFastOrder.openOrderModal(productId) — открытие формы без кнопки из чанка msfo_button.

Краткий вызов:

javascript
await msFastOrder.openOrderModal(123); // ID ресурса msProduct

Обязательно на той же странице: window.msfoConfig (через этот сниппет или msFastOrderClientConfig) и подключённый msfo.min.js.

Подробно: сценарии, события, своя кнопка, каталог, ошибки — Подключение на сайте → Программное открытие модалки.

См. также