Часто при разработке сайта на 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 событие'
);
}
}
}
}