Skip to content
msRussianPost2
msRussianPost2
Расчёт доставки Почтой России для MODX 3 и MiniShop3
  1. Компоненты
  2. msRussianPost2
  3. Подключение на сайте

Подключение на сайте

Порядок подключения лексикона, сниппета и чанков описан в разделе Быстрый старт. Ниже — коннектор, чанки и проверка интеграции.

Проверка интеграции

Чек-лист

  • В чанке заказа есть обёртка msrp__wrapper или [data-msrp-widget] один раз на страницу. Скрипт привязывается к первому такому корню и ищет .msrp__status и .msrp__methods только внутри него.
  • Не оборачивайте чанки tplRussianPostStatus и tplRussianPostMethods во внешние <div class="msrp__status"> / <div class="msrp__methods"> — эти классы уже внутри чанков. Иначе получится вложенность и возможны пустой блок и «залипший» индикатор загрузки.
  • Если внутри обёртки случайно оказалось несколько блоков .msrp__status или .msrp__methods, скрипт использует последний в порядке DOM (обычно разметка из чанка).
  • Вызовы идут в порядке: msrpLexiconScriptmsRussianPost2 → чанки (сниппет уже подключает russianpost.css и russianpost.js).
  • В MiniShop3 создана доставка с классом msrussianpost2\Delivery\RussianPostDelivery, в настройках указан корректный delivery_id (или настроен авто-режим осознанно).
  • Поле индекса доступно под именем index, order[data][index] или задан indexSelector в сниппете.
  • Радио/селект доставки используют имена delivery_id, delivery, order[data][delivery_id], order[data][delivery] — виджет отслеживает выбор.

Если форма заказа подгружается AJAX’ом после russianpost.js, срабатывают повторные проверки и хук ms3Hooks.afterAddOrder.

После инициализации в браузере доступен глобальный объект window.msRussianPost2: например recalculate(), selectMethod(code), loadCachedMethods(), getLexicon(key) — для кастомных сценариев и принудительного пересчёта.

Автокомплит адреса и индекс (msDadata2)

В msRussianPost2 нет встроенных подсказок DaData: только расчёт тарифов и виджет методов. Чтобы покупатель вводил адрес с подсказками и чтобы подставлялся индекс (и связанные поля), установите пакет msDadata2 для MiniShop3 (транспортный пакет в каталоге дополнений / ModStore), получите токен в личном кабинете DaData и укажите его в системных настройках msDadata2 по документации к этому пакету.

Порядок на странице заказа:

  1. Поля адреса заказа (как в вашей вёрстке MiniShop3).
  2. Сниппет [[!msDadata2AddressSuggest]] (или эквивалент в Fenom) — до лексикона и виджета Почты России.
  3. msrpLexiconScriptmsRussianPost2 → чанки tplRussianPostStatus и tplRussianPostMethods.

Так window.msRussianPost2Config окажется на странице до загрузки russianpost.js, а после выбора подсказки адреса msDadata2 отправит данные в заказ и сгенерирует на document событие msdadata2:order-address-updated. Скрипт msRussianPost2 на него подписан: при активной доставке «Почта России» вызывается recalculate(), потому что после order/set хук ms3Hooks.afterAddOrder иногда не срабатывает.

Имена полей формы и вложенность должны совпадать с ожиданиями msDadata2 и MiniShop3 — ориентируйтесь на FRONTEND_INTEGRATION.md / примеры в репозитории msDadata2. Техническая связка с хуками MS3 — в разделе Интеграция с хуками MiniShop3.

Коннектор

URL: assets/components/msrussianpost2/connector.php (в конфигурацию для JS попадает абсолютный URL-адрес сайта).

Запросы идут методом POST (AJAX из russianpost.js). Типичные действия: расчёт тарифа по индексу, выбор метода, служебные операции для раздела компонента в панели управления MODX. Точный контракт описан в исходниках процессоров пакета.

При необходимости переопределите URL через параметр сниппета connectorUrl.

Чанки

ЧанкНазначение
tplRussianPostStatusБлок статуса: загрузка, ошибка, стоимость и сроки (класс msrp__status)
tplRussianPostMethodsСписок методов с radio name="msrp_method" (контейнер msrp__methods)

После расчёта JS обновляет разметку внутри этих контейнеров. Чанки задают начальную структуру и стили.

Плейсхолдеры tplRussianPostStatus

ПеременнаяНазначение
$loadingПоказать состояние «рассчитываем»
$errorТекст ошибки
$costОтформатированная стоимость
$min_days, $max_daysСрок доставки в днях

Плейсхолдеры tplRussianPostMethods

Цикл $methods: у каждого элемента обычно есть code, name, cost_formatted, min_days, max_days, selected.

Стили и BEM

Префикс классов: msrp__ (msrp__wrapper, msrp__method, msrp__status, msrp__error-message и т.д.). Файл: assets/components/msrussianpost2/css/russianpost.css.

CSS-переменные

css
:root {
    --msrp-method-background: #fff;
    --msrp-method-border-color: #e5e7eb;
    --msrp-method-selected-border-color: #2563eb;
    --msrp-error-color: #b91c1c;
    --msrp-loading-color: #64748b;
    --msrp-gap: 1rem;
    --msrp-radius: 0.5rem;
}

Переопределите в своём CSS после подключения russianpost.css.

Кастомное поле индекса

Помимо indexSelector в сниппете можно пометить поле атрибутом data-msrp-index — оно участвует в автопоиске индекса.