7  /  37

Размещение модуля в административном меню

Просмотров: 3784 (Статистика ведётся с 06.02.2017)

Размещение собственного модуля в меню административного раздела осуществляется точно так же как и размещение меню штатного модуля. Кроме того, можно использовать механизм Событий.

Иконки

В качестве параметра иконки для страницы и пункта меню класс CSS.

"icon" => "mnu_my_module",
"page_icon" => "my_module",

Стили прописываются в файле /bitrix/modules/my_module/install/themes/my_module.css

Пример файла:
/*Menu icon*/
#fcmch_menu_icon {background-image:url(icons/my_module/mnu_my_module.gif);}
#fcmch_page_icon {background-image:url(icons/my_module/my_module.gif);}

Сами иконки необходимо загрузить в папку модуля /bitrix/modules/my_module/install/themes/.default/icons/my_module/. При установке модуля содержимое папки /themes модуля должно быть скопировано в папку /bitrix/themes/ и удалено оттуда при деинсталяции модуля.

Кастомизация меню с помощью Событий

Вариант кастомизации административного меню - это создать свой обработчик события OnBuildGlobalMenu. Так можно вставить новые разделы, пункты или секции с подпунктами. Или изменить что угодно в уже сформированном меню. Обработчик можно прописать например в файл /bitrix/php_interface/init.php.

Пример:
// DOC: http://dev.1c-bitrix.ru/api_help/main/events/onbuildglobalmenu.php
AddEventHandler("main", "OnBuildGlobalMenu", "DoBuildGlobalMenu");

function DoBuildGlobalMenu(&$aGlobalMenu, &$aModuleMenu) {

   // пример формирования меню можно подсмотреть: /bitrix/modules/[module]/admin/menu.php
   // системные варианты parent_menu: global_menu_desktop, global_menu_content, global_menu_services, 
   //global_menu_store, global_menu_statistics, global_menu_marketplace, global_menu_settings

   // это на случай добавления новых пунктов или секций с подпунктами
   $aModuleMenu[] = array(
      "parent_menu" => "global_menu_settings", 
      "icon" => "default_menu_icon",
      "page_icon" => "default_page_icon",
      "sort"=>"900",
      "text"=>"APC Opcode Cache",
      "title"=>"APC INFO",
      "url"=>"/bitrix/admin/apc.php",
      "more_url"=>array(),
   );

   // а это на случай вклинивания в уже существующей секции
   foreach($aModuleMenu as $key => $menu) :

      // наверно достаточно идентифицировать только по $menu["items_id"]
      if ($menu["parent_menu"] == "global_menu_settings" && $menu["section"]=="TOOLS" && $menu["items_id"]=="menu_util") :
         // пункт добавится в конец списка существующих пунктов в секции
         $aModuleMenu[$key]["items"][] = array(
            "text" => "APC Opcode Cache",
            //"title" => "APC INFO",
            "url" => "/bitrix/admin/apc.php",
            "more_url" => array(),
         );
      endif;
      
   endforeach;


   /*
   // пример своего глобального раздела меню

   // нужен хотя бы один пункт в глобальном разделе, иначе раздел не появится
   $aModuleMenu[] = array(
      "parent_menu" => "global_menu_custom",
      "icon" => "default_menu_icon",
      "page_icon" => "default_page_icon",
      "sort"=>"100",
      "text"=>"Custom Item Text",
      "title"=>"Custom Item Tille",
      "url"=>"/bitrix/admin/custom_item.php",
      "more_url"=>array(),
   );

   // если нужно добавить глобальный раздел меню, то его можно отдать тут или заранее выше добавить в $aGlobalMenu
   $arRes = array(
      "global_menu_custom" => array(
         "menu_id" => "custom",
         "page_icon" => "services_title_icon",
         "index_icon" => "services_page_icon",
         "text" => "Custom text",
         "title" => "Custom title",
         "sort" => 900,
         "items_id" => "global_menu_custom",
         "help_section" => "custom",
         "items" => array()
      ),
   );

   return $arRes;
   */

} // function DoBuildGlobalMenu

12
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии