Пример внесения правок в страницы административного раздела для CMS 1С Битрикс
Редактировать
Задача
Добавить вывод произвольного содержимого на страницу вывода информации о заказах в административном разделе Битрикс без кастомизации ядра системы.
Решение
- В init.php, а лучше в подключаемом в нем файле:
- подписываемся на событие
OnAdminTabControlBegin
(событие OnAdminTabControlBegin вызывается в функции CAdminTabControl::Begin() при выводе в административном интерфейсе формы редактирования). - подписываемся на событие
OnAdminListDisplay
(Событие OnAdminListDisplay вызывается в функции CAdminList::Display() при выводе в административном разделе списка элементов).
- подписываемся на событие
<?php
use \Bitrix\Main\EventManager;
$eventManager = EventManager::getInstance();
$eventManager->addEventHandler('main', 'OnAdminTabControlBegin', ['\LocalNamespase\Handlers', 'onAdminTabControlBegin']);
$eventManager->addEventHandler('main', 'OnAdminListDisplay', ['\LocalNamespase\Handlers', 'onAdminListDisplay']);
- В обработчиках событий внедряем нужные js-скрипты
<?php
public static function onAdminTabControlBegin(&$form)
{
static $init;
if (!$_REQUEST['ID']) {
return;
}
switch ($form->name) {
case 'order_edit_info':
// защита от повторной инициализации
if ($init[$form->name]) {
return;
}
// внедряем нужный скрипт
Asset::getInstance()->addJs('/local/templates/index/js/some_script.js');
break;
}
}
public static function onAdminListDisplay(&$list)
{
global $APPLICATION;
switch ($list->table_id) {
case 'tbl_sale_buyers_profile_tab1':
// внедряем нужный скрипт
Asset::getInstance()->addJs('/local/templates/index/js/some_script.js');
break;
}
}
- Во внедренном js-скрипте делаем нужные действия, например отправим ajax запрос, получим данные, выведем их в нужном нам месте, само место вывода можно определить на основе DOM-дерева разметки административной страницы, как правило в административных страницах БУС часто используются уникальные id для элементов интерфейса.