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_tokenmxdadata_api_secret для Party/FindById), mxdadata_enabled. Подключите VueTools, иначе UI в менеджере не откроется.

  • Подсказки и нормализация — Suggest, Clean, Party, Geolocate, Tools/Version; ответы кэшируются, к API — с ограничением частоты.
  • Интеграция с MS3 — маппинг полей адреса, строгая/мягкая валидация, логи в разделе компонента.
  • Служба доставки — например, msRussianPost может реагировать на mxdadata:order-address-updated после смены адреса.
Без токена DaData публичные запросы к API с сайта не пройдут. Лимиты и тарифы — в кабинете и документации DaData.

Публичный веб-коннектор

Фронтенд обращается к …/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 (опционально) — ротация логов
Быстрый старт
  1. Установите пакет через УстановщикУправление пакетами.
  2. В Системные настройки (namespace mxdadata) укажите mxdadata_api_token и при необходимости mxdadata_api_secret, включите mxdadata_enabled.
  3. Убедитесь, что VueTools подключён. Откройте mxDadata в меню и проверьте дашборд (статус, баланс).
  4. Подключите сниппеты/чанк заказа по документации (селекторы полей, connectorUrl).
Ссылки
Иван Бочкарев
3 часа назад
modx.pro
41
+2
Поблагодарить автора Отправить деньги

Комментарии: 2

Александр
2 часа назад
0
Буквально вчера думал, что стоит обновить DaData от @vgrish. Как минимум, убрать зависимость от jQuery, возможно переехать на новый официальный скрипт на нативном js. Может планируете версию и для modx 2, или универсальную для двух версий?
    Иван Бочкарев
    2 часа назад
    +1
    Если только после майских праздников можно будет сделать для 2.x. Попробую.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2