Дата последнего изменения: 07.02.2024
Размещение собственного модуля в меню административного раздела осуществляется точно так же, как и размещение меню штатного модуля. Кроме того, можно использовать механизм Событий.
В качестве параметра иконки для страницы и пункта меню класс CSS.
"icon" => "mnu_my_module", "page_icon" => "my_module",
Стили прописываются в файле /local/modules/my_module/install/themes/.default/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);}
Сами иконки необходимо загрузить в папку модуля /local/modules/my_module/install/themes/.default/icons/my_module/
. При установке модуля содержимое папки /themes
модуля должно быть скопировано в папку /local/themes/
и удалено оттуда при деинсталяции модуля.
Вариант кастомизации административного меню - это создать свой обработчик события OnBuildGlobalMenu. Так можно вставить новые разделы, пункты или секции с подпунктами. Или изменить что угодно в уже сформированном меню. Обработчик можно прописать например в файл /local/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"=>"/local/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
Код сохранения настроек модуля, передаваемый в запросе, должен располагаться перед кодом вывода формы полей настроек модуля. Иначе параметры модуля не выведутся сразу после сохранения. Пример, код:
<?//Save form if($request->isPost() && $request["save"] && check_bitrix_sessid()){ foreach($aTabs as $aTab){ if(count($aTab['OPTIONS'])) { __AdmSettingsSaveOptions($module_id, $aTab["OPTIONS"]); } } }?>
должен стоять перед выводом формы:
<!-- FORM TAB --> <?php $tabControl = new CAdminTabControl("tabControl", $aTabs); ?> <? $tabControl->Begin(); ?> <form method="post" action="<?=$APPLICATION->GetCurPage();?>?mid=<?=htmlspecialcharsbx($request["mid"]);?>&lang=<?=LANGUAGE_ID?>" name="<?=$module_id;?>"> <? $tabControl->BeginNextTab(); ?> <? foreach ($aTabs as $aTab) { if(count($aTab['OPTIONS'])) { //$tabControl->BeginNextTab(); __AdmSettingsDrawList($module_id, $aTab['OPTIONS']); } } ?> <? $tabControl->BeginNextTab(); ?> <?require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/group_rights.php");?> <? $tabControl->Buttons(array('btnApply' => false, 'btnCancel' => false, 'btnSaveAndAdd' => false)); ?> <?=bitrix_sessid_post(); ?> </form> <? $tabControl->End(); ?> <!-- X FORM TAB -->