Документация для разработчиков

GetMenuHtml

string
CMain::GetMenuHtml(
 string type = "left",
 bool MenuExt = false,
 mixed template = false,
 mixed InitDir = false
)

Возвращает HTML-код для отображения меню заданного типа. В отличии от метода CMain::GetMenuHtmlEx шаблон меню будет подключаться на каждый пункт меню. Нестатический метод.

Параметры

ПараметрОписание С версии
type Тип меню.
Необязателен. По умолчанию "left".
MenuExt Если значение - "true", то для формирования массива меню, помимо файлов .тип меню.menu.php будут также подключаться файлы с именами вида .тип меню.menu_ext.php. В которых вы можете манипулировать массивом меню $aMenuLinks произвольно, по вашему усмотрению (например, дополнять пункты меню значениями из инфо-блоков).
Необязателен. По умолчанию - "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-2019, «1С-Битрикс», 2019
Наверх