1С-Битрикс: кастомизируем / встраиваемся в админку сайта

1С-Битрикс: кастомизируем / встраиваемся в админку сайта

Часто при разработке сайта на 1С-битрикс программистам приходиться встраиваться в админку сайта для предоставления нового функционала администраторам сайта.

Рассмотрим некоторые возможные способы кастомизации:

1. Создание дополнительной административной страницы

Для создания новой страницы необходимо разместить новый файл в разделе администрирования, например /bitrix/admin/название_страницы.php

В данном файле прописываем код для подключения нашей страницы:

require_once($_SERVER["DOCUMENT_ROOT"]."/local/admin/название_страницы.php");

Создаем файл с адресом /local/admin/название_страницы.php и прописываем в нем минимально необходимый код:

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");

Страница создана. Далее пишем необходимый нам код админки в данном файле.


2. Создание дополнительного пункта в левом меню администрирования

дополнительный пункт меню

Данный вариант подойдет тем, кто пишет простой код, а не разрабатывает модуль. При разработке модуля используется другой подход.

Итак, для встраивания страницы в меню битрикса мы можем прописать следующий код в init.php:

AddEventHandler("main", "OnBuildGlobalMenu", "OurPage");

function OurPage(&$adminMenu, &$moduleMenu)
{
	$moduleMenu[] = Array(
		"parent_menu"	=> "global_menu_content",
		"sort"			=> 1000,
		"url"			=> "название_страницы.php",
		"text"			=> 'Название пункта меню',
		"icon"			=> "form_menu_icon",
	);
}

3. Встраивание в меню таблиц инфоблоков

меню таблиц инфоблоков

Иногда нам необходимо создать дополнительное действие над элементом инфоблока, раздела или товара. Для этих целей напишем следующий код:

AddEventHandler("main", "OnAdminListDisplay", "MyOnAdminListDisplay");

function MyOnAdminListDisplay(&$list)
{
	// IBLOCK_ID - ID инфоблока
	if ($list->table_id == "tbl_iblock_list_" . md5('catalog.' . IBLOCK_ID) || $list->table_id == "tbl_iblock_section_" . md5('catalog.' . IBLOCK_ID))
	{
		foreach ($list->aRows as $row)
		{
			if (strpos($row->id, 'S') !== false) // Для разделов
			{
				$row->aActions[] = Array(
					"TEXT" => "Действие раздела",
					"LINK" => "Ссылка на страницу для редактирования",
					"ACTION" => 'JavaScript событие'
				 );
			}
			elseif (strpos($row->id, 'E') !== false) // Для элементов
			{
				$row->aActions[] = Array(
					"TEXT" => "Действие элемента",
					"LINK" => "Ссылка на страницу для редактирования",
					"ACTION" => 'JavaScript событие'
				);
			}
		}
	}
}
Назад к списку

Читайте также

1С-Битрикс: как запустить REST API в Битрикс: Управление сайтом
REST API 1С-Битрикс Шпаргалка
1С-Битрикс: как запустить REST API в Битрикс: Управление сайтом
Начать работать с REST API довольно легко в Битрикс24, но именно в "Битрикс: Управление сайтом" нет раздела, который может сгенерировать нам доступ к REST. В данной статье представлена инструкция для запуска REST в БУС
1С-Битрикс и PHP 8: ошибка 502 при переводе bitrix на php8
PHP 8 1С-Битрикс
1С-Битрикс и PHP 8: ошибка 502 при переводе bitrix на php8
После перевода на PHP 8.1 или 8.2 большинства сайтов на 1С-Битрикс, я столкнулся с проблемой 502 ошибки при их дальнейшем обновлении. Поделюсь информацией о причине (в моем случае) возникновения данной проблемы и методах ее решения.