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>';
}
?>
© «Битрикс», 2001-2025, «1С-Битрикс», 2025