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