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

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

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

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

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

Архитектура административных скриптов: два файла

Ключевой принцип безопасности и правильной архитектуры — разделение на два файла:

  1. Основной файл логики: Лежит внутри папки вашего модуля по пути /local/modules/ID_модуля/admin/имя_скрипта.php. Этот файл содержит всю логику страницы.
  2. Вызывающий скрипт (враппер): Это небольшой файл-прокладка с таким же именем, который лежит в /bitrix/admin/. Его единственная задача — подключить основной файл из папки модуля.

Почему так сделано? Папка /bitrix/modules/ закрыта для прямого доступа из браузера, что обеспечивает безопасность. Вызывающий скрипт в /bitrix/admin/ служит безопасной «точкой входа».

Шаг 1: Создание основного файла логики (скелет страницы)

Создайте файл, например, my_custom_page.php в папке /local/modules/mymodule/admin/.
Этот файл должен иметь строгую структуру с подключением пролога, проверкой прав и подключением эпилога.

// /local/modules/mymodule/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__);

// Определяем константу для модуля, чтобы работала кнопка "Настройки модуля"
// Это необязательно, но является хорошей практикой
define("ADMIN_MODULE_NAME", "mymodule");

// 3. Проверяем права доступа текущего пользователя
// Например, разрешим доступ тем, у кого есть право 'R' (чтение) на наш модуль
if ($APPLICATION->GetGroupRight("mymodule") < "R") {
    $APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED"));
}

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

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

// ----------------------------------------------------
// ЗДЕСЬ БУДЕТ НАШ КОНТЕНТ (ФОРМА, СПИСОК И Т.Д.)
// ----------------------------------------------------
echo '<div class="adm-info-message">Страница успешно создана!</div>';


// 6. Подключаем эпилог (подвал админки, панель отладки)
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");

Шаг 2: Создание и установка вызывающего скрипта

  1. В структуре вашего модуля создайте папку install/admin.
  2. Внутри нее создайте файл my_custom_page.php с таким же именем, как и файл логики.codePHP// /local/modules/mymodule/install/admin/my_custom_page.php <?php // Подключаем наш основной файл с логикой require_once($_SERVER["DOCUMENT_ROOT"]."/local/modules/mymodule/admin/my_custom_page.php"); ?>
  3. В файле-инсталляторе модуля (install/index.php) добавьте копирование этого файла при установке и удаление при деинсталляции.codePHP// /local/modules/mymodule/install/index.php class mymodule extends CModule { // ... function DoInstall() { // ... // Копируем файлы административного интерфейса CopyDirFiles( $_SERVER["DOCUMENT_ROOT"]."/local/modules/mymodule/install/admin", $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin", true, true ); // ... } function DoUninstall() { // ... // Удаляем файлы административного интерфейса DeleteDirFiles( $_SERVER["DOCUMENT_ROOT"]."/local/modules/mymodule/install/admin", $_SERVER["DOCUMENT_ROOT"]."/bitrix/admin" ); // ... } }Теперь после установки/переустановки модуля ваш файл my_custom_page.php появится в /bitrix/admin/ и станет доступен по URL http://your-site.ru/bitrix/admin/my_custom_page.php.

Шаг 3: Добавление страницы в меню админки

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

  1. В папке /local/modules/mymodule/admin/ создайте файл menu.php.
  2. Опишите в нем структуру меню в виде массива $aMenu.
// /local/modules/mymodule/admin/menu.php
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);

// Добавляем пункт в меню только если у пользователя есть права на наш модуль
if ($APPLICATION->GetGroupRight("mymodule") >= "R") {
    $aMenu = [
        [
            "parent_menu" => "global_menu_services", // Привязываем к глобальному разделу "Сервисы"
            "sort" => 500,
            "text" => "Мой кастомный отчет",
            "title" => "Страница с моим кастомным отчетом",
            "url" => "my_custom_page.php?lang=".LANGUAGE_ID,
            "icon" => "fileman_sticker_icon", // Стандартная иконка
            "page_icon" => "fileman_sticker_icon",
            "items_id" => "menu_my_report", // Уникальный ID ветки меню
            "items" => [] // Здесь могут быть вложенные пункты
        ]
    ];
    return $aMenu;
}
return false;

Система автоматически найдет этот файл и добавит пункт в меню.

Шаг 4: Построение интерфейса

Теперь наполним контентом нашу страницу. Рассмотрим два самых частых сценария: вывод списка и форма редактирования.

Сценарий A: Список данных (CAdminList)
Это самый распространенный тип административной страницы. Класс CAdminList позволяет создать таблицу с сортировкой, фильтром, постраничной навигацией и групповыми действиями.

// ... код страницы my_custom_page.php после prolog_admin_after.php ...

$sTableID = "tbl_my_entity_list";
$oSort = new CAdminSorting($sTableID, "ID", "desc");
$lAdmin = new CAdminList($sTableID, $oSort);

// ... здесь должна быть логика обработки фильтра и групповых действий ...

// Выборка данных
$rsData = MyCustomTable::getList([
    'order' => [$by => $order],
]);
$rsData = new CAdminResult($rsData, $sTableID);
$lAdmin->NavStart($rsData);

// Заголовки
$lAdmin->AddHeaders([
    ['id' => 'ID', 'content' => 'ID', 'sort' => 'id', 'default' => true],
    ['id' => 'NAME', 'content' => 'Название', 'sort' => 'name', 'default' => true],
]);

// Наполнение строк
while($arRes = $rsData->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arRes);
    $row->AddViewField("NAME", '<a href="my_entity_edit.php?ID='.$f_ID.'">'.$f_NAME.'</a>');
}

// Вывод списка
$lAdmin->CheckListMode();
$lAdmin->DisplayList();

Сценарий Б: Форма редактирования (CAdminForm / CAdminTabControl)
Используется для страниц создания/редактирования записей.

// ... код страницы my_entity_edit.php после prolog_admin_after.php ...

// Настройка вкладок
$aTabs = [["DIV" => "edit1", "TAB" => "Основное", "TITLE"=>"Основные параметры"]];
$tabControl = new CAdminForm("my_entity_edit_form", $aTabs);

$tabControl->Begin(["FORM_ACTION" => $APPLICATION->GetCurPage()."?ID=".$ID."&lang=".LANG]);
$tabControl->BeginNextFormTab();

// Поля формы
$tabControl->AddEditField('NAME', 'Название:', true, ['size' => 50], $item['NAME']);
$tabControl->AddCheckBoxField("ACTIVE", "Активность:", false, "Y", ($item['ACTIVE'] == "Y"));

// Кнопки
$tabControl->Buttons(["back_url" => "my_entity_list.php?lang=".LANG]);
$tabControl->Show();

Этот код создаст стандартную форму редактирования Битрикс с вкладками и кнопками «Сохранить», «Применить», «Отмена».

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

Следуя четкой архитектуре (основной файл + враппер), проверяя права и используя стандартные классы CAdminList и CAdminForm, вы можете создавать интерфейсы, которые будут полностью интегрированы в систему, удобны для пользователей и легки в поддержке.

кастомная админка Битрикс, страница в админке, prolog_admin_before, CAdminTabControl, CAdminList, CAdminForm, admin/menu.php, DoInstall, CopyDirFiles, административный интерфейс.

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

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

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

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

Related Post

Разработка кастомных компонентов и комплексных модулей для 1С-БитриксРазработка кастомных компонентов и комплексных модулей для 1С-Битрикс

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

Разработка интернет-магазина на 1С-Битрикс с мобильным PWA-приложением для оформления заказовРазработка интернет-магазина на 1С-Битрикс с мобильным PWA-приложением для оформления заказов

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

Получить список служб доставки sale.delivery.getlistПолучить список служб доставки sale.delivery.getlist

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Получить список служб доставки sale.delivery.getlist», проанализируем лучшие практики