mxDadata — интеграция DaData (Suggest, Clean, Party) с MODX 3 и MiniShop3
Встречайте mxDadata — интеграция DaData (подсказки Suggest, нормализация Clean, карточка организации Party/FindById, геолокация и версия справочников) для MiniShop3 в MODX Revolution 3.x.

Зачем он нужен
Чтобы на MiniShop3 на чекауте работали подсказки адреса и реквизитов через официальное API DaData без дублирования логики в скриптах темы: один пакет, системные настройки с префиксом mxdadata_, сниппеты mxDadataAddressSuggest, mxDadataPartySuggest, при необходимости универсальная форма mxDadataForm (JSON-конфиг полей: адрес, Party, банк, геолокация, версия справочников). Плагины валидируют и нормализуют адрес в потоке заказа; для сторонних виджетов (например, доставок) срабатывает событие mxdadata:order-address-updated.
Для покупателя
При оформлении заказа в подключённых полях — привычные подсказки DaData: адрес с подбором и гео, организация по ИНН, при необходимости поля банка и т.д. (зависит от вашего сниппета и JSON). Демо-панель в чанке tpl.mxdadata.msOrder с подсказками показана при непустой корзине; в ином случае сниппеты подключают вручную по документации mxDadata на docs.modx.pro (в боковом меню: Подключение на сайте, Сниппеты, Интеграция и сценарии).
Для владельца и менеджера
После установки в меню менеджера — раздел mxDadata: дашборд (статус API, баланс), вкладки API, кэш, логи (запросы/ответы, ротация; опционально — пакет Scheduler для фоновой ротации), Party, краткие настройки для MiniShop3. Минимум в Системные настройки (namespace mxdadata): mxdadata_api_token (и mxdadata_api_secret для Party/FindById), mxdadata_enabled. Подключите VueTools, иначе UI в менеджере не откроется.
Публичный веб-коннектор
Фронтенд обращается к …/assets/components/mxdadata/connector-web.php (параметр connectorUrl в сниппетах/JSON). Если сайт за HTTP Basic, WAF или иным образом блокирует запросы, проверьте URL, CORS и правила в .htaccess (см. раздел «Термины» — таблица с коннекторами, и «FAQ» / типичные ошибки в документации mxDadata).
Для разработчика
Клиент DadataClient, сервисы Suggest / Clean / Party, таблицы mxdadata_cache и mxdadata_log. Событие mxdadata:order-address-updated (CustomEvent) отдаёт detail с данными выбранного адреса — удобно для пересчёта доставки. Универсальная форма: assets/components/mxdadata/js/dadata-form.js, конфиг из чанка MODX или резервный статический шаблон с тем же именем, если чанк в БД не отдал JSON.
Термины API: Suggest, Clean, Party/FindById — детали в документации DaData.
📷 Скриншоты




Установка и совместимость

Чтобы на MiniShop3 на чекауте работали подсказки адреса и реквизитов через официальное API DaData без дублирования логики в скриптах темы: один пакет, системные настройки с префиксом mxdadata_, сниппеты mxDadataAddressSuggest, mxDadataPartySuggest, при необходимости универсальная форма mxDadataForm (JSON-конфиг полей: адрес, Party, банк, геолокация, версия справочников). Плагины валидируют и нормализуют адрес в потоке заказа; для сторонних виджетов (например, доставок) срабатывает событие mxdadata:order-address-updated.
Для покупателя
При оформлении заказа в подключённых полях — привычные подсказки DaData: адрес с подбором и гео, организация по ИНН, при необходимости поля банка и т.д. (зависит от вашего сниппета и JSON). Демо-панель в чанке tpl.mxdadata.msOrder с подсказками показана при непустой корзине; в ином случае сниппеты подключают вручную по документации mxDadata на docs.modx.pro (в боковом меню: Подключение на сайте, Сниппеты, Интеграция и сценарии).
Для владельца и менеджера
После установки в меню менеджера — раздел mxDadata: дашборд (статус API, баланс), вкладки API, кэш, логи (запросы/ответы, ротация; опционально — пакет Scheduler для фоновой ротации), Party, краткие настройки для MiniShop3. Минимум в Системные настройки (namespace mxdadata): mxdadata_api_token (и mxdadata_api_secret для Party/FindById), mxdadata_enabled. Подключите VueTools, иначе UI в менеджере не откроется.
- Подсказки и нормализация — Suggest, Clean, Party, Geolocate, Tools/Version; ответы кэшируются, к API — с ограничением частоты.
- Интеграция с MS3 — маппинг полей адреса, строгая/мягкая валидация, логи в разделе компонента.
- Служба доставки — например, msRussianPost может реагировать на mxdadata:order-address-updated после смены адреса.
Публичный веб-коннектор
Фронтенд обращается к …/assets/components/mxdadata/connector-web.php (параметр connectorUrl в сниппетах/JSON). Если сайт за HTTP Basic, WAF или иным образом блокирует запросы, проверьте URL, CORS и правила в .htaccess (см. раздел «Термины» — таблица с коннекторами, и «FAQ» / типичные ошибки в документации mxDadata).
Для разработчика
Клиент DadataClient, сервисы Suggest / Clean / Party, таблицы mxdadata_cache и mxdadata_log. Событие mxdadata:order-address-updated (CustomEvent) отдаёт detail с данными выбранного адреса — удобно для пересчёта доставки. Универсальная форма: assets/components/mxdadata/js/dadata-form.js, конфиг из чанка MODX или резервный статический шаблон с тем же именем, если чанк в БД не отдал JSON.
Термины API: Suggest, Clean, Party/FindById — детали в документации DaData.
📷 Скриншоты




Установка и совместимость
- MODX Revolution 3.0+
- MiniShop3 3.x (для сценария заказа, чанка tpl.mxdadata.msOrder и плагинов)
- PHP 8.2+
- VueTools — для админ-интерфейса
- Scheduler (опционально) — ротация логов
- Установите пакет через Установщик → Управление пакетами.
- В Системные настройки (namespace mxdadata) укажите mxdadata_api_token и при необходимости mxdadata_api_secret, включите mxdadata_enabled.
- Убедитесь, что VueTools подключён. Откройте mxDadata в меню и проверьте дашборд (статус, баланс).
- Подключите сниппеты/чанк заказа по документации (селекторы полей, connectorUrl).
Поблагодарить автора
Отправить деньги
Комментарии: 2
Буквально вчера думал, что стоит обновить DaData от @vgrish. Как минимум, убрать зависимость от jQuery, возможно переехать на новый официальный скрипт на нативном js. Может планируете версию и для modx 2, или универсальную для двух версий?
Если только после майских праздников можно будет сделать для 2.x. Попробую.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.