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

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

Виджеты 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. }