Места встраивания
Данная информация актуальна только для коробочных Битрикс24 и Баз Знаний.
Описание
В ряде мест портала вы могли видеть такой интерфейс:
Вот в каждое место, где вы это видите, вы можете внедриться посредством API. Давайте расскажем как. Речь будет идти про PHP API, но есть еще REST со своим алгоритмом встройки.
Встраивание в меню, удаление из меню
Для начала вам нужно определиться с меню, в которое вы хотите встроиться, получить его код. Сделать это можно, открыв в интерфейсе выбор привязки к меню ("Выбрать базу знаний") и посмотрев адрес открывшегося фрейма. Там будет параметр, например, menuId=crm_switcher:deal. Это и есть так называемый код меню. И вот с ним уже можем работать:
if (\Bitrix\Main\Loader::includeModule('landing')) { $id = 2093;// ID базы знаний \Bitrix\Landing\Site\Type::setScope('KNOWLEDGE'); $binding = new \Bitrix\Landing\Binding\Menu('crm_switcher:deal'); $binding->bindSite($id);// привязка // $binding->unbindSite($id);// отвязка print_r($binding->getList('crm_switcher:deal'));// вывод всех привязок по коду print_r($binding->getList());// вывод всех привязок всех мест }
Встраивание в группу социальной сети, удаление из группы
Тут похожий принцип, но за основу берется ИД группы и есть определенная сложность с тем, что БЗ групп и обычные БЗ находятся в разных скоупах. Это значит, что привязка должна быть к той БЗ, которая создана в скоупе GROUP. Либо сменить скоуп у имеющеся. Обратите внимание! После операции указанная БЗ исчезнет из списка общих, и привяжется к группе.
Выполним привязку к группе:
if (\Bitrix\Main\Loader::includeModule('landing')) { $id = 2093;// ID базы знаний $groupId = 121;// ID группы \Bitrix\Landing\Site\Type::setScope('KNOWLEDGE'); $binding = new \Bitrix\Landing\Binding\Group($groupId); $binding->bindSite($id);// привязка print_r($binding->getList($groupId));// привязка к указанной группе print_r($binding->getList());// привязки ко всем группам // сменим скоуп базе знаний \Bitrix\Landing\Rights::setGlobalOff(); \Bitrix\Landing\Site::update($id, [ 'TYPE' => 'GROUP' ]); \Bitrix\Landing\Rights::setGlobalOn(); }
И отвязка:
if (\Bitrix\Main\Loader::includeModule('landing')) { $id = 2093;// ID базы знаний $groupId = 121;// ID группы \Bitrix\Landing\Site\Type::setScope('GROUP'); $binding = new \Bitrix\Landing\Binding\Group($groupId); $binding->unBindSite($id);// привязка // сменим скоуп базе знаний \Bitrix\Landing\Rights::setGlobalOff(); \Bitrix\Landing\Site::update($id, [ 'TYPE' => 'KNOWLEDGE' ]); \Bitrix\Landing\Rights::setGlobalOn(); }