
- MODX 3
- PHP 8.2
- miniShop3
- Vue 3


В чанк оформления заказа:
[[!msydLexiconScript]]
[[!msYandexDelivery]]
<div data-msyd-widget></div>{'!msydLexiconScript' | snippet}
{'!msYandexDelivery' | snippet}
<div data-msyd-widget></div>Сниппет msYandexDelivery подключает CSS/JS чекаута и конфиг window.msYandexDeliveryFrontend. Скрипт CDN виджета ПВЗ грузится по требованию, когда активен тариф self_pickup. Контейнер data-msyd-widget скрыт, пока не выбран способ доставки Яндекса.
Чанк tplYandexDeliveryMethods — обёртка <div class="msyd-methods" data-msyd-methods> для списка методов.
msYandexDelivery Назначение: зарегистрировать assets и конфиг фронта. Возвращает пустую строку.
| Параметр | По умолчанию | Описание |
|---|---|---|
connectorUrl | {assets_url}components/msyandexdelivery/connector.php | URL AJAX-коннектора |
widgetScriptUrl | из msyandexdelivery_widget_script_url или CDN v2 | URL скрипта виджета |
city | из резолва города | Фиксированное имя города для карты. Для витрины надёжнее &geoId= |
geoId | из msyandexdelivery_widget_geo_id | geo_id центра карты. Алиас: geo_id |
height | из msyandexdelivery_widget_height | Высота виджета, px (минимум 200) |
Приоритет города карты:
&city=&geoId= / widget_geo_idwidget_city213)Пример для витрины в СПб:
[[!msYandexDelivery?
&geoId=`2`
&height=`500`
]]{'!msYandexDelivery' | snippet : [
'geoId' => 2,
'height' => 500,
]}msydLexiconScript Без параметров. Выводит window.msydLexicon с ключами фронта (подписи тарифов, кнопки, подсказки). Вызывайте до msYandexDelivery.
data-msyd-widget показывает панель до двери (time_interval) или карту ПВЗ (self_pickup) по тарифу выбранного msDelivery.form.ms3_order_form → connector.php?action=calculate → select_option.YaNddWidgetPointSelected → calculate + select_option с platform_station_id.msOrder.properties.msyandexdelivery (tariff, platform_station_id, address, price, delivery_days).msOnGetDeliveryCost и YandexDelivery::getCost() подставляют стоимость. При сохранении опции delivery_cost синхронизируется из option.price, а tariff выравнивается по delivery_id.Публичные actions коннектора (без mgr-auth): calculate, select_option, list_pickup_points.
yandexdelivery.js слушает:
ms3Hooks.addHook('afterAddOrder', …) при смене доставки и полей адреса (регистрация с retry, пока ms3Hooks не загрузился)ms3:ready при открытии чекаутаchange и input на полях адреса формыПеред «Рассчитать» виджет читает адрес из формы. Если адрес в форме есть, а виджет просит указать адрес, проверьте класс ms3_order_form, загрузку ms3.js и свежий ?v= у JS сниппета.

Скрипт по умолчанию: https://widget-pvz.dostavka.yandex.net/widget.js?v=2.
CDN-виджет показывает prod-каталог точек. Test API (b2b.taxi.tst.yandex.net) знает только часть московских станций. Если карта отдала точку, которой нет в test API, сервис пробует сопоставить адрес через pickup-points/list. Иначе покупатель увидит сообщение о расхождении каталогов.
ID ПВЗ с виджета часто приходит с дефисами. Platform API для части точек ждёт id без дефисов. Нормализация: MsYandexDelivery\Support\StationId::normalize().
geoId Это geo_id региона/города из location/detect, не id ПВЗ и не id склада.
Частые значения: Москва 213, Санкт-Петербург 2, Казань 43, Екатеринбург 54, Новосибирск 65.