Separator

 

Bitrix: Изменение функционала и дизайна административного раздела

Административные возможности интерфейса Битрикса велики и практически всегда удовлетворяют потребность пользователя. Однако иногда заказчик может захотеть чего-то весьма необычного и перед вами встанет задача вмешаться в админку и доработать её. Каким образом это можно сделать? Рассмотрим варианты...

1. Косметический. Тривиальный

Создаём файл admin_header.php в папке /bitrix/php_interface/. Битрикс будет автоматически подключать этот файл перед построением шапки административной части. Здесь вы можете подключить свои CSS-стили JavaScript'ы а соответственно и серьёзно визуально менять административные страниц. Я использовал эту возможность когда была необходимость показывать доп. блок на странице просмотра заказа - блок "История смены статусов". Блок грузился AJAX из публичность части (естественно перед выводом нужно проверять права, т.к. скрипт может запросить кто угодно)

2. Полноценный. Простой

Если же нужно создать какие-то новые страницы, то первый метод уже не столь удобен. Второй заключается в создании страниц в папке /bitrix/admin/. Именно в создании, потому что изменение - вмешательство в систему, которое удалится после обновления, да и вообще опасно.
Жизненный пример: понадобилось создать ряд страниц, который позволяет пользователю просматривать инфоблоки\элементы без возможности чего-либо редактировать. В Битриксе таких прав нет, есть права на чтение из публичной части, но при этом в админке инфоблоки не видны и доступа к ним нет. Как я поступил? Берем из папки /bitrix/admin/ файлы ядра которые позволяют редактирование и создаём их дубли с другими именами. После этого редактируем код этих файлов так чтобы исключить возможность редактирования и удаляем соответствующие элементы интерфейса (типа кнопки "Создать"). Хочется посмотреть код? Скачиваем. Файлы надо распаковать в /bitrix/admin//. Рабоать будет для 10 версии. Для других не обещаю.
Обращаю внимание: непосредственно кода в файлах находящихся в /bitrix/admin/ обычно нет, однако там есть подключение нужного нам кода через include. Так вот, вам нужно пройтись по тому пути и забрать код для вашей копии.
Некоторые советы по изменению кода:

  • Обращайте внимание на подключение языкового файла (IncludeModuleLangFile), вам нужно изменить путь таким образом чтобы он вел туда куда и раньше. Например в оригинальном файле подключение языкового файла для /bitrix/admin/iblock_list_admin.php идёт так:
    IncludeModuleLangFile(__FILE__);
    Вам же нужно будет заметить код так чтобы вместо __FILE__ путь шёл к тому же файлу чему была равна __FILE__ в оригинальном файле
    IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/iblock/admin/iblock_list_admin.php');
  • Скорее всего вам понадобится изменить ссылки (допустим на элементы и секции), смотрите функции GetAdminSectionListLink, GetAdminElementListLink и подобные. Иногда ссылки захардкожены в HTML-коде, но чаще генерируются с помощью подобных методов.
  • Для изменения хлебных крошек поищите объект $adminChain
  • Меню действий (создать элемент, на уровень выше и т.п.) заполняется через класс объекта CAdminContextMenu. Найдите его создание и смотрите\изменяйте как он заполняется

3. Джедайский. Сложный

Создавайте свои модули. При этом с админкой можно сделать почти все - штатными методами. Рассматривать создание модуля тут я не буду, это достойно отдельной статьи.

Комментариев нет:

Отправить комментарий