add buttons - uniqcle/Bitrix GitHub Wiki

//onPanelCreate вызывается в момент сбора данных для построения панели управления в публич.части
AddEventHandler("main", "OnPanelCreate", array("ButtonsService", "onPanelCreateOneButtonHandler"));
AddEventHandler("main", "OnPanelCreate", array("ButtonsService", "onPanelCreateMenuButtonHandler"));

class ButtonsService{

	//Добавление 1й кнопки
	static function onPanelCreateOneButtonHandler(){
		global $APPLICATION;
		global $USER;

		global $USER;
		if ( !$USER->IsAdmin() ) {
			return;
		}

		$APPLICATION->AddPanelButton(
			array(
				"ID" => "uniqle-admin-one-btn", //определяет уникальность кнопки
				"TEXT" 		=> "one button",
				//"TYPE"		=> "BIG", //BIG - большая кнопка, иначе маленькая
				"MAIN_SORT" => 400, //индекс сортировки для групп кнопок
				"SORT" => 10, //сортировка внутри группы
				"ICON" => "bx-panel-small-button-icon bx-panel-site-structure-icon", //название CSS-класса с иконкой кнопки
				"HREF"      => "http://1c-bitrix.ru", // ссылка на кнопке или javascript:MyJSFunction()),
				"HINT" => array( //тултип кнопки
				                 "TITLE" => "Заголовок тултипа",
				                 "TEXT" => "Текст тултипа" //HTML допускается
				),
			),
			$bReplace = false // Перетирать сущ. кнопку новыми данным?
		);
	}

	//Добавление с выпадающим меню
	static function onPanelCreateMenuButtonHandler(){
		global $APPLICATION;
		global $USER;

		global $USER;
		if ( !$USER->IsAdmin() ) {
			return;
		}

		//подменю
		$arMenu = [];
		$arMenu[] = array(
			"TEXT"  => 'Наклеить стикер',
			"TITLE"  => 'Наклеить новый стикер на страницу',
			"SORT" => 10, //индекс сортировки пункта
			"ICON"  => "panel-edit-text", //иконка пункта
			"ACTION" => 'if (window.oBXSticker){window.oBXSticker.AddSticker();}',
			"DEFAULT" => true, //пункт по умолчанию?
			"MENU" => Array() //массив подменю
		);
		$arMenu[] = array("SEPARATOR" => true);
		$arMenu[] = array(
			"TEXT"  => 'Главная страница',
			"TITLE"  => 'Переход на главную',
			"SORT" => 1, //индекс сортировки пункта
			"ICON"  => "panel-edit-text", //иконка пункта
			"ACTION" => "jsUtils.Redirect(arguments, '/')",
			"DEFAULT" => false, //пункт по умолчанию?
			"MENU" => Array() //массив подменю
		);

		$APPLICATION->AddPanelButton(
			array(
				"ID" => "uniqle-admin-menu-btn", //определяет уникальность кнопки
				"TEXT" 		=> "with submenu",
				//"TYPE"		=> "BIG", //BIG - большая кнопка, иначе маленькая
				"MAIN_SORT" => 400, //индекс сортировки для групп кнопок
				"SORT" => 10, //сортировка внутри группы
				"ICON" => "bx-panel-small-button-icon bx-panel-site-structure-icon", //название CSS-класса с иконкой кнопки
				"HREF"      => "http://1c-bitrix.ru", // ссылка на кнопке или javascript:MyJSFunction()),
				"HINT" => array( //тултип кнопки
				                 "TITLE" => "Заголовок тултипа",
				                 "TEXT" => "Текст тултипа" //HTML допускается
				),
				"HINT_MENU" => array( //тултип кнопки контекстного меню
				                      "TITLE" => "Заголовок тултипа",
				                      "TEXT" => "Текст тултипа" //HTML допускается
				),
				"MENU" => $arMenu
			),
			$bReplace = false // Перетирать сущ. кнопку новыми данным?
		);
	}
}