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

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

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