Блог Горошко Андрея 1C-Битрикс Создание кастомной страницы в административной панели Битрикс

Создание кастомной страницы в административной панели Битрикс

Иногда стандартного функционала админки не хватает.

Требуется создать страницу для кастомного отчета, дашборда или инструмента управления.

Битрикс позволяет легко интегрировать свои страницы в административный интерфейс.

Задача: Создадим простую страницу /bitrix/admin/my_custom_page.php, которая будет доступна только администраторам и выводить некий отчет.

Шаг 1: Создание файла и подключение пролога

Создайте файл my_custom_page.php в папке /bitrix/admin/.
Первое, что нужно сделать в любом административном скрипте, — подключить пролог и проверить права доступа.

// /bitrix/admin/my_custom_page.php

// 1. Подключаем служебную часть пролога
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");

// 2. Подключаем языковой файл (опционально, но рекомендуется)
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);

// 3. Проверяем права доступа
// Допустим, нужен полный доступ к главному модулю
if($APPLICATION->GetGroupRight("main") < "R") {
    $APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED"));
}

// 4. Подключаем визуальную часть пролога (шапку админки)
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");

// 5. Здесь будет наш контент

// 6. Подключаем эпилог (подвал админки)
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
  • prolog_admin_before.php: Инициализирует ядро, сессию, авторизацию. Обязателен.
  • Проверка прав: $APPLICATION->GetGroupRight(«main») возвращает букву права для текущего пользователя на модуль main. R — чтение, W — запись. Если прав не хватает, показываем форму авторизации.
  • prolog_admin_after.php: Отрисовывает верхнюю часть админ-панели (меню, заголовок).
  • epilog_admin.php: Отрисовывает подвал. Обязателен.

Шаг 2: Добавление в меню (опционально)

Чтобы на вашу страницу можно было легко попасть, ее нужно добавить в меню.

  1. Создайте файл my_module.php (название по ID вашего модуля) в папке /bitrix/admin/menu.php. Если у вас нет своего модуля, можно добавить в global_menu.php или любой другой.
  2. Опишите пункт меню.
// /bitrix/admin/menu.php/my_module.php
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);

// Если у пользователя есть права на чтение главного модуля
if ($APPLICATION->GetGroupRight("main") >= "R") {
    $aMenu = [
        "parent_menu" => "global_menu_services", // Привязываем к разделу "Сервисы"
        "sort" => 500,
        "text" => "Мой кастомный отчет",
        "title" => "Страница с моим кастомным отчетом",
        "url" => "my_custom_page.php?lang=".LANGUAGE_ID,
        "icon" => "fileman_sticker_icon", // Иконка
        "items_id" => "menu_my_report",
    ];

    return $aMenu;
}
return false;

Шаг 3: Вывод контента и использование вкладок

Для сложного интерфейса удобно использовать вкладки CAdminTabControl.

// ... после prolog_admin_after.php ...

// Устанавливаем заголовок страницы
$APPLICATION->SetTitle("Мой кастомный отчет");

// Создаем объект для вкладок
$aTabs = [
    ["DIV" => "edit1", "TAB" => "Основной отчет", "ICON"=>"main_user_edit", "TITLE"=>"Основной отчет по данным"],
    ["DIV" => "edit2", "TAB" => "Настройки", "ICON"=>"main_user_edit", "TITLE"=>"Настройки отчета"],
];
$tabControl = new CAdminTabControl("tabControl", $aTabs);

// Начинаем отрисовку вкладок
$tabControl->Begin();
?>

<form method="POST" action="<?=$APPLICATION->GetCurPage()?>" name="post_form">
    <?=bitrix_sessid_post()?>

    <? // Первая вкладка ?>
    <? $tabControl->BeginNextTab(); ?>
    <tr>
        <td width="40%">Данные отчета:</td>
        <td width="60%">Здесь могла бы быть ваша таблица с данными...</td>
    </tr>

    <? // Вторая вкладка ?>
    <? $tabControl->BeginNextTab(); ?>
    <tr>
        <td width="40%">Параметр 1:</td>
        <td width="60%"><input type="text" name="param1" value=""></td>
    </tr>
    
    <?
    // Панель с кнопками
    $tabControl->Buttons();
    ?>
    <input type="submit" name="Save" value="Сохранить настройки" class="adm-btn-save">
    
    <?
    // Завершаем отрисовку вкладок
    $tabControl->End();
    ?>
</form>

<?
// ... перед epilog_admin.php ...

Вывод:
Создание собственных административных страниц — это мощный способ расширения стандартного функционала Битрикс.

Следуя четкой структуре (пролог -> проверка прав -> контент -> эпилог) и используя стандартные классы вроде CAdminTabControl, вы можете создавать интерфейсы, которые выглядят и работают как «родные» страницы системы.

кастомная админка Битрикс, страница в админке, prolog_admin_before, prolog_admin_after, CAdminTabControl, административный интерфейс.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Верстка каталога товаров и умного фильтра для 1С-БитриксВерстка каталога товаров и умного фильтра для 1С-Битрикс

Качественная frontend-разработка и профессиональная натяжка макетов на 1С-Битрикс являются фундаментальным фактором конверсии сайта и его позиций в поисковых системах. Услуга «Верстка каталога товаров и умного фильтра для 1С-Битрикс» гарантирует разработка

Как использовать Bitrix::Prolog() в 1С-Битрикс: пример кодаКак использовать Bitrix::Prolog() в 1С-Битрикс: пример кода

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Как использовать Bitrix::Prolog() в 1С-Битрикс: пример кода», проанализируем

Изменить свойство товаров или вариаций catalog.productProperty.updateИзменить свойство товаров или вариаций catalog.productProperty.update

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Изменить свойство товаров или вариаций catalog.productProperty.update». Мы подготовили подробный разбор принципов работы и развернутые примеры