Как добавить страницу в админку 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"); ?>
Вместо “Ура!” добавим свой код.
Готово.
Напишите комментарий