Зарегистрируйтесь, чтобы получить персональный ключ, иначе ничего работать не будет.
Приведенный ниже пример - подсказка для адресных полей 2016-12-20_152640.jpg 126К 60 Количество загрузок:
Для работы сервиса нужно подключить несколько файлов к КБ - один файл стилей и пару javascript-файлов. В первый пришлось внести коррекцию (прилагается suggestions.css 9,73К 22 Количество загрузок:).
Как подключать описано здесь. Прочтите, чтобы не задавать одни и те же вопросы.
Скачайте прилагаемый к теме css-файл. В папке cb_modules создайте еще одну папку, например dadata и положите его в нее. В файл my_script.js добавьте код:
$(function($) { // ================================================ // ПОДСКАЗКИ ДЛЯ ПОЛЕЙ // ================================================ $("[placeholder^='Введите адрес']").suggestions({ serviceUrl: "https://suggestions.dadata.ru/suggestions/api/4_1/rs", token: "----- впишите сюда свой персональный ключ, полученный при регистрации на сервисе dadata.ru -----", type: "ADDRESS", count: 5, /* Вызывается, когда пользователь выбирает одну из подсказок */ onSelect: function(suggestion) { console.log(suggestion); if (typeof setSugValue == 'function') { setSugValue(suggestion.data); } } }); });Вставьте в functions_custom.php еще несколько строк:
$ADDITIONAL_JAVASCRIPT_INCLUDE .= "<script type='text/javascript' src='https://cdn.jsdelivr.net/jquery.suggestions/16.8/js/jquery.suggestions.min.js'></script>"; $ADDITIONAL_JAVASCRIPT_INCLUDE .= "<link rel='stylesheet' href='cb_modules/dadata/suggestions.css' type='text/css' >";Последний штрих. Что нужно сделать, чтобы все это заработало.
Откройте настройки текстового поля, в которое Вы планируете вводить адрес. Нажмите Дополнительно. В опцию Подсказка по полю впишите фразу: Введите адрес. Этот текст становится ключевым для определения, что данное текстовое поле теперь используется для ввода адреса. Можете придумать свою фразу, не забудьте изменить ее в строке кода выше
$("[placeholder^='Введите адрес']")Сохраните настройки. Все.
Что еще можно добавить.
Сервис, помимо подсказок адреса, возвращает еще массу переменных, которые не видны явно, но можно использовать. В частности: получить координаты объекта, которые можно передать по ссылке в яндекс-карты и открыть его расположение на ней; индекс для отправки корреспонденции и т.д. Для этого выполните следующее. В любое поле записи, в настройках добавьте в поле для javascript вычислений функцию:
// Заполнение полей сервисом DADATA function setSugValue(daData) { document.getElementById("valueXXXX").value = daData.geo_lat; // широта document.getElementById("valueYYYY").value = daData.geo_lon; // долгота document.getElementById("valueZZZZ").value = daData.postal_code; // индекс }где XXXX, YYYY и ZZZZ - внутренние номера полей в КБ. Посмотреть их можно перейдя в настройки таблицы в режиме Разработчика - имя поля без буквы f. Один нюанс: поле в которое Вы желаете внести значение должно быть доступно для заполнения, т.е. в настройках доступа должна стоять галочка для режимов Редактирование и Добавление. Иначе выдаст ошибку. Если хотите скрыть поля используйте функцию
display_field(XXXX, 0);Теперь, после того, как будет выбрано значение из предлагаемого сервисом выпадающего списка, отработает событие onSelect и будет вызвана функция setSugData. То, что Вы в ней пропишите зависит исключительно от Вашего воображения. Выше показан простой пример.
P.S.
По аналогии можно использовать сервис dadata для разбивки и склонения ФИО, что удобно для формирования документов, поскольку там часто используется родительный падеж, а также фамилия с инициалами.
Есть возможность легко заполнять реквизиты компаний, например по ИНН и БИК.
Пример показывает принцип, остальное есть в описании сервиса.
Сообщение отредактировал andibrag: 09 Апрель 2017 - 18:23