GetMenuHtml
Описание и параметры
string CMain::GetMenuHtml( string type = "left", bool MenuExt = false, mixed template = false, mixed InitDir = false )
Возвращает HTML-код для отображения меню заданного типа. В отличии от метода CMain::GetMenuHtmlEx шаблон меню будет подключаться на каждый пункт меню. Нестатический метод.
Параметры
Параметр | Описание | С версии |
---|---|---|
type | Тип меню. Необязателен. По умолчанию "left". | |
MenuExt | Если значение - "true", то для формирования массива меню, помимо файлов Необязателен. По умолчанию - "false". | 3.2.5 |
template | Путь относительно корня к шаблону меню. Необязателен. По умолчанию - "false", что означает искать по алгоритму указанному на странице Построение и показ меню. | 3.3.7 |
InitDir | Каталог для которого будет строится меню. Необязателен. По умолчанию - "false", что означает - текущий каталог. | 3.3.21 |
Смотрите также
Примеры
Пример левого меню элементы которого выбираются из инфо-блока
Вывод меню в файле /bitrix/templates/demo/header.php
:
<? echo $APPLICATION->GetMenuHtml("left", true); ?>
Файл /.left.menu.php
:
<? // основной файл меню // данный файл может редактироваться в редакторе меню $aMenuLinks = Array( ); ?>
Файл /.left.menu_ext.php
:
<? // дополнительный файл меню // добавляет в основной массив меню разделы каталога телефонов if (CModule::IncludeModule("iblock")): $IBLOCK_TYPE = "catalog"; // тип инфо-блока $IBLOCK_ID = 21; // ID инфо-блока $CACHE_TIME = 3600; // кэшируем на 1 час $aMenuLinksNew = array(); // создаем объект для кэширования меню $CACHE_ID = __FILE__.$IBLOCK_ID; $obMenuCache = new CPHPCache; // если массив закэширован то if($obMenuCache->InitCache($CACHE_TIME, $CACHE_ID, "/")) { // берем данные из кэша $arVars = $obMenuCache->GetVars(); $aMenuLinksNew = $arVars["aMenuLinksNew"]; } else { // иначе собираем разделы $rsSections = GetIBlockSectionList($IBLOCK_ID, false, array("SORT" => "ASC", "ID" => "ASC"), false, array("ACTIVE"=>"Y")); while ($arSection = $rsSections->Fetch()) { $arrAddLinks = array(SITE_DIR."catalog/phone/element.php?SECTION_ID=".$arSection["ID"]); // пройдемся по элементам раздела if ($rsElements = GetIBlockElementListEx($IBLOCK_TYPE, false, false, array(), false, array("ACTIVE" => "Y", "IBLOCK_ID" => $IBLOCK_ID, "SECTION_ID" => $arSection["ID"]), array("ID", "IBLOCK_ID", "DETAIL_PAGE_URL"))) { while ($arElement = $rsElements->GetNext()) $arrAddLinks[] = $arElement["DETAIL_PAGE_URL"]; } $aMenuLinksNew[] = array( $arSection["NAME"], SITE_DIR."catalog/phone/section.php?SECTION_ID=".$arSection["ID"], $arrAddLinks ); } } // сохраняем данные в кэше if($obMenuCache->StartDataCache()) { $obMenuCache->EndDataCache(Array("aMenuLinksNew" => $aMenuLinksNew)); } // объединяем основной массив меню с дополнительным $aMenuLinks = array_merge($aMenuLinksNew, $aMenuLinks); endif; ?>
Шаблон меню /bitrix/templates/demo/left.menu_template.php
:
<? // This file is the template for one menu item iteration // Set item mark: selected folder, folder, page if ($ITEM_TYPE=="D") { if ($SELECTED) $strDir = "<td width='0%' bgcolor='#A0C4E0' valign='middle' align='center'><img height='13' src='/bitrix/templates/demo/images/left_folder_open.gif' width='17' border='0'></td>"; else $strDir = "<td width='0%' bgcolor='#CCDFEE' valign='middle' align='center'><img height='13' src='/bitrix/templates/demo/images/left_folder.gif' width='17' border='0'></td>"; } else { if ($SELECTED) { $strDir = "<td width='0%' bgcolor='#A0C4E0' valign='middle' align='center'><img height='13' src='/bitrix/templates/demo/images/left_bullet.gif' width='17' border='0'></td>"; $strDir_d = "<td width='0%' bgcolor='#A0C4E0' valign='middle' align='center'><img height='13' src='/bitrix/templates/demo/images/left_bullet_d.gif' width='17' border='0' alt='Закрытый раздел'></td>"; } else { $strDir = "<td width='0%' bgcolor='#CCDFEE' valign='middle' align='center'><img height='13' src='/bitrix/templates/demo/images/left_bullet.gif' width='17' border='0'></td>"; $strDir_d = "<td width='0%' bgcolor='#CCDFEE' valign='middle' align='center'><img height='13' src='/bitrix/templates/demo/images/left_bullet_d.gif' width='17' border='0' alt='Закрытый раздел'></td>"; } } // if $SELECTED then this item is current (active) item if ($SELECTED) $strtext = "leftmenuact"; else $strtext = "leftmenu"; //if $PARAMS["SEPARATOR"]=="Y" this item should be shown with different style applied if ($PARAMS["SEPARATOR"]=="Y") { $strstyle = " style='background-color: #D5ECE6; border-top: 1px solid #A6D0D7; border-bottom: 1px solid #A6D0D7; padding:8;'"; $strDir = "<img height='13' src='/bitrix/templates/demo/images/1.gif' width='17' border='0'>"; $strtext = "leftmenu"; } else $strstyle = " style='padding:8;'"; // Content of variable $sMenuProlog is typed just before all menu items iterations // Content of variable $sMenuEpilog is typed just after all menu items iterations $sMenuProlog = "<table border='0' cellpadding='0' cellspacing='0' width='100%'>"; $sMenuEpilog = '<tr><td colspan=2 background="/bitrix/templates/demo/images/l_menu_border.gif"><img src="/bitrix/templates/demo/images/1.gif" width="1" height="1"></td></tr></table>'; // if $PERMISSION > "D" then current user can access this page if ($PERMISSION > "D") { $sMenuBody = '<tr><td colspan=2 background="/bitrix/templates/demo/images/l_menu_border.gif"><img src="/bitrix/templates/demo/images/1.gif" width="1" height="1"></td></tr><tr>'.$strDir.'<td valign="top"'.$strstyle.' width="100%"><a href="'.$LINK.'" class="'.$strtext.'">'.$TEXT.'</a></td></tr>'; } else { $sMenuBody = '<td colspan=2 background="/bitrix/templates/demo/images/l_menu_border.gif"><img src="/bitrix/templates/demo/images/1.gif" width="1" height="1"></td></tr><tr>'.$strDir_d.'</td><td valign="top"'.$strstyle.' width="100%"><a href="'.$LINK.'" class='.$strtext.'>'.$TEXT.'</a></td></tr>'; } ?>
Алексей Попович
|
||
Т.к. меня немного сбил с толку пример файла " /.left.menu_ext.php", то приведу тут немного другой кусок кода:
<?
Скопипастил вот | ||
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.