Документация для разработчиков
Темная тема

Места встраивания

Данная информация актуальна только для коробочных Битрикс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();
}


© «Битрикс», 2001-2024, «1С-Битрикс», 2024