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 в менеджере не откроется.

  • Подсказки и нормализация — 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).
Ссылки
Иван Бочкарев
Иван Бочкарев
27 апреля 2026, 12:07
modx.pro
1 660

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

Александр
27 апреля 2026, 13:09
Буквально вчера думал, что стоит обновить DaData от @vgrish. Как минимум, убрать зависимость от jQuery, возможно переехать на новый официальный скрипт на нативном js. Может планируете версию и для modx 2, или универсальную для двух версий?
    Иван Бочкарев
    27 апреля 2026, 13:13
    Если только после майских праздников можно будет сделать для 2.x. Попробую.
    Иван Бочкарев
    06 октября 2026, 20:24
    Вышла новая версия:

    [1.0.2-pl] — 2026-10-06
    Fixed
    • #9 Права mxdadata_edit, mxdadata_logs, mxdadata_cache_clear теперь проверяются в connector.php и в Processors\Mgr\Processor::checkPermissions(). Карта action → permission: Settings/Save → edit, Logs/* → logs, Cache/Clear → cache_clear, остальное → view. UI скрывает вкладку логов и кнопку очистки кеша без соответствующих флагов в mxdadataCfg.permissions.
    • #10 connector.php теперь фильтрует action: имя процессора проверяется по белому списку, неизвестные действия отклоняются с ошибкой доступа. Ранее action брался прямо из тела запроса без проверки, что позволяло любому пользователю с правами mxdadata_view вызывать любые процессоры из Processors\Mgr\.
    • #11 Поле адреса в чанке tpl.mxdadata.msOrder теперь имеет атрибут name=«address», чтобы сниппет mxDadataAddressSuggest мог найти поле через селектор [name=«address»] и инициализировать подсказку DaData. Ранее поле имело только id, но без name, в результате чего querySelectorAll возвращал 0 элементов и подсказка не работала.
    • #12 Processor Settings/Get больше не возвращает api_secret в открытом виде ответа. Вместо этого возвращается api_secret_set — булево значение, указывающее, настроен ли секрет. Если значение есть, оно передается только при вызове процессора с правом mxdadata_edit. Ранее секрет возвращался открытым текстом в любом ответе коннектора, что позволяло любому менеджеру с правом mxdadata_view видеть секрет API.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3