Расширенные настройки

Расширенные настройки виджета

Виджеты amoCRM поддерживают добавление на страничку настроек виджета собственной программной логики - поля произвольной структуры и внешнего вида.

Поле произвольной структуры состоит из hidden input (поле, через которое осуществляется чтение и сохранение ), div -элемента, в который можно выводить DOM-элементы для взаимодействия с пользователем и некотого javascript-кода, который обеспечивает необходимую логику.

Для использоваться поля произвольной структуры необходимо сделать два простых шага:

  1. Добавить поле в manifest.json и разрешить виджету исполняться на страничке настроек
  2. Реализовать чтение и запись данных

Описание поля произвольной структуры в manifest.json

Это самое обычное поле со специальным типом custom, возможно не более одного такого поля в одном виджете. Не забудьте добавить местоположение "settings" в массив locations в mainfest.json!

  1. "settings" : {
  2.             "apikey" : {...} ,
  3.   … ,
  4.   "myfield" : {
  5.                    "name" : "settings.apikey" ,
  6.                     "type" : "custom" ,
  7.                     "required" : false
  8.                        }
  9.             }
  10. }

Соберите виджет и загрузите его в аккаунт. Вам станет доступен div с ID <код вижета>_custom_content и hidden input с ID <код вижета>_custom.

Чтобы изменения вашего поля отражались в форме и ее кнопках, нужно создавать событие change на спрятанном системном инпуте. Вот пример того, как можно это сделать:

  1. $( 'input[name="имя вашего поля"]' ).trigger ( 'change' ) ;

Страница виджета в разделе "Настройки"

Виджеты amoCRM могут создавать свою собственную страницу в разделе "Настройки"

Для этого необходимо в списке областей подключения виджета указать область advanced_settings. На данной странице у виджета будет срабатывать callback advancedSettings.

Данная странице полностью контролируется виджетом. DOM-страницы и её структуру виджеты должны формировать сами.

Также, виджету необходимо в задать новый блок advanced в manifest.json, в котором будет храниться ключ title - наименование данной страницы.

Пример файла manifest.json

  1. {
  2.   "widget" : {
  3.     "name" : "widget.name" ,
  4.     "description" : "widget.description" ,
  5.     "short_description" : "widget.short_description" ,
  6.     "code" : "example_widget" ,
  7.     "secret_key" : "e2888047a01bc97aa250118c2fa518dba57a4034ccf16dca784dca292d89324f" ,
  8.     "version" : "1.9" ,
  9.     "interface_version" : 2 ,
  10.     "init_once" : false ,
  11.     "locale" : [
  12.       "ru"
  13.     ] ,
  14.     "installation" : true
  15.   } ,
  16.   "locations" : [
  17.     "everywhere" ,
  18.     "settings" ,
  19.     "advanced_settings"
  20.   ] ,
  21.   "settings" : {
  22.     "login" : {
  23.       "name" : "settings.login" ,
  24.       "type" : "text" ,
  25.       "required" : false
  26.     }
  27.   } ,
  28.   "advanced" : {
  29.       "title" : "advanced.title"
  30.   }
  31. }