Skip to content
mxDadata
Подсказки DaData и валидация адреса для MiniShop3 в MODX 3
  1. Компоненты
  2. mxDadata
  3. Подключение на сайте

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

Сниппеты выводятся в чанке формы заказа (например tpl.msOrder) или эквиваленте. Используйте некэшированный вызов, иначе скрипты не попадут на страницу при необходимости.

Коннектор витрины

URL: assets/components/mxdadata/connector-web.php (в сниппетах подставляется абсолютный URL от [[++assets_url]]).

Переопределение: параметр сниппета connectorUrl.

Разрешённые действия (см. исходник коннектора): в т.ч. Suggest/Address, Suggest/Party, Suggest/Name, Suggest/Email, Suggest/Bank, Party/FindById, Geolocate/Address, Tools/Version.

Имена полей формы MiniShop3

name в форме должны совпадать с ожиданиями сниппетов и модели msOrder.Address (и полей Party для ИНН).

Адрес (модель Address)

name (форма)Поле моделиОписаниеАвтозаполнение
address_first_namefirst_nameИмя
address_last_namelast_nameФамилия
address_phonephoneТелефон
address_emailemailEmail
address_text_addresstext_addressАдрес (основное поле для подсказок)Да
addresstext_addressТо же, альтернативное имяДа
address_fias_idfias_idКод ФИАС (часто скрытое)Да
address_citycityГородДа
address_regionregionРегионДа
address_indexindexПочтовый индексДа
address_streetstreetУлицаДа
address_buildingbuildingДомДа
address_roomroomКвартира / офисДа

Реквизиты юрлица (Party, ИНН)

name (форма)ОписаниеАвтозаполнение
address_innИННДа (ввод)
innИНН, альтернативаДа
address_company_nameНаименование организацииДа
company_nameАльтернативное имяДа
address_kppКППДа
kppАльтернативаДа
address_ogrnОГРНДа
ogrnАльтернативаДа
address_legal_addressЮридический адресДа
legal_addressАльтернативаДа

Порядок с msRussianPost

Для корректного пересчёта доставки Почтой России после выбора подсказки:

  1. Поля адреса и подсказки mxDadata (mxDadataAddressSuggest и при необходимости Party) — выше по разметке
  2. Затем msrpLexiconScriptmsRussianPost → чанки виджета Почты

После обновления адреса срабатывает кастомное событие mxdadata:order-address-updatedrussianpost.js подписан на него и вызывает пересчёт, если выбрана доставка Почты России (хук ms3Hooks.afterAddOrder в ряде сценариев после order/set не вызывается).

Демо чанка

В пакете есть чанк tpl.mxdadata.msOrder: внизу — блок «Демо mxDadata» в <details>. В нём — поля Party (#mxdadata-demo-inn и реквизиты), контейнер #mxdadata-demo-universal для mxDadataForm (конфиг из чанка вроде chunk.mxdadata.demoFormSug через suggestionsChunk), плюс поле адреса для mxDadataAddressSuggest. В конце чанка вызываются три сниппета: mxDadataAddressSuggest, mxDadataPartySuggestinnInput на демо-ИНН), mxDadataForm.

Показ демо в штатном чанке — только если корзина не пуста (ветка в шаблоне на непустую корзину). На экране «пустая корзина» демо намеренно не выводится: не подключаются скрипты и запросы к DaData.

Проверить все три сниппета на одной странице без товаров в корзине можно через тестовый шаблон в составе пакета (mxdadata_test.tpl, универсальная форма с префиксом id вроде mxdadata_test_… и явным suggestions / suggestionsChunk), либо вручную вставив сниппет с непустым suggestions / suggestionsChunk (без конфига в браузере будет пустой массив подсказок).

Стили

Общие стили подсказок: assets/components/mxdadata/css/web/suggest.css (подключается хелпером вместе со сниппетами).

Fenom

При auto_escape выводите сниппеты как сырой HTML (|raw / {raw …}), чтобы не экранировались <script>.

Примеры синтаксиса MODX и Fenom — в сниппетах и в mxDadataForm.