Как добавить страницу в админку Bitrix?
Как добавить страницу в админку Bitrix??
Я это делаю так.
Допустим, мне нужно сделать хитрую вгружалку новых студентов из файла Excell в инфоблок. При том, делать это планируется со страницы в админке. Чтобы этим могли заниматься только авторизованные, ну и вообще чтобы не отсвечивало нигде.
Выгружалку назовём ИмпортСтудентс. Знаю, звучит глупо, но для примера сойдёт.
Кстати, код самой вгружалки я не привожу, ибо пост не про это.
Поехали! Ну или поползли.
1. Сначала идем в папку /bitrix/admin и откладываем там файл lex_import_students.php
Вот содержимое этого файла:
<?php require_once($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/include/lex_import_students.php"); ?>
По сути здесь происходит подгрузка содержимого файла с тем же имененм, но лежащего в другом месте. Мне удобнее когда все мои доделки лежат в одной папке — local.
Сразу откладываем пустой файл lex_import_students.php в /local/php_interface/include/. Чуть позже мы к нему вернёмся. А пока…
2. Теперь добавляем пункт в меню админки. Тут придется поискать.
Формально нам нужно кое-что добавить в init.php в папке /local/php_interface
Но чаще всего, в этом файле не сами директивы, а ссылки на другие файлы.
В моём случае эти ссылки/вложения выглядят так:
require('include/functions.php'); //Функции
require('include/const.php'); //Константы
require('include/events.php'); //События
Поэтому, для добавления нужного кода я иду в events.php и добавляю такой вот код:
/**
* Добавляю в меню страницу с таблицей
*/
AddEventHandler("main", "OnBuildGlobalMenu", "ModifiAdminMenu");
function ModifiAdminMenu(&$adminMenu, &$moduleMenu){
/* Тут был код вставки пункта меню в админку, но я его убрал из примера */
/* А вот наш код всавки пункта меню */
$moduleMenu[] = array(
"parent_menu" => "global_menu_content", // в раздел "Сервис"
"section" => "Импорт студентов",
"sort" => 11, // сортировка пункта меню - поднимем повыше
"url" => "/bitrix/admin/lex_import_students.php?lang=".LANG, // ссылка на пункте меню
"text" => 'Импортируем студентов из таблицы Excel в инфоблок',
"title" => 'Импортируем студентов в инфоблок',
"icon" => "smile_menu_icon", // малая иконка
"page_icon" => "smile_menu_icon", // большая иконка
"items_id" => "menu_testpagelex", // идентификатор ветви
"items" => array() // остальные уровни меню
);
}
3. Отлично. Пунтк меню добавился. Переходим в файл /local/php_interface/include/lex_import_students.php (который добавили ранее) и вставляем в него вот такое содержимое.
<?
/** @global CMain $APPLICATION */
/** @global CDatabase $DB */
/** @global CUser $USER */
use Bitrix\Main\Loader,
Bitrix\Main,
Bitrix\Iblock,
Bitrix\Currency,
Bitrix\Catalog;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
Loader::includeModule("iblock");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/prolog.php");
IncludeModuleLangFile(__FILE__);
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/interface/admin_lib.php");
CJSCore::Init(["jquery"]);
$APPLICATION->SetTitle('Импорт студентов');
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
?>
Ура!
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); ?>
Вместо «Ура!» добавим свой код.
Готово.
Напишите комментарий