GetMenuHtml
string CMain::GetMenuHtml( string type = "left", bool MenuExt = false, mixed template = false, mixed InitDir = false )
The method returns the HTML code which displays the menu of the specified type. Unlike the CMain::GetMenuHtmlEx method, the menu template is applied to every item of the menu. Non-static method.
Parameters
Parameter | Description | Available from version |
---|---|---|
type | Menu type. Optional parameter. By default value is left. | |
MenuExt | If true, the menu is built using files Optional; false by default. | |
template | Path relative to the site root to the menu template. Optional; false by default, which specifies to search for the template using the algorithm described in the "Menu" section. | |
InitDir | Folder for which the menu is to be built. Optional; false by default, which means the current folder. |
See Also
The following is an example of the left menu with items collected from the information block.
Displaying the menu in the file /bitrix/templates/demo/header.php
:
<? echo $APPLICATION->GetMenuHtml("left", true); ?>
File /.left.menu.php
:
<? // main menu // this file can be edited in the menu editor $aMenuLinks = Array( ); ?>
File /.left.menu_ext.php
:
<? // additional menu // adds sections of the phone catalogue to the main menu array if (CModule::IncludeModule("iblock")): $IBLOCK_TYPE = "catalog"; // information block type $IBLOCK_ID = 21; // information block ID $CACHE_TIME = 3600; // cache for 1 hour $aMenuLinksNew = array(); // create an object to cache the menu $CACHE_ID = __FILE__.$IBLOCK_ID; $obMenuCache = new CPHPCache; // if the array is cached... if($obMenuCache->InitCache($CACHE_TIME, $CACHE_ID, "/")) { // take data from the cache $arVars = $obMenuCache->GetVars(); $aMenuLinksNew = $arVars["aMenuLinksNew"]; } else { // otherwise, build it $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"]); // iterate the section elements 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); } } // store data in the cache if($obMenuCache->StartDataCache()) { $obMenuCache->EndDataCache(Array("aMenuLinksNew" => $aMenuLinksNew)); } // merge the main and additional menu arrays $aMenuLinks = array_merge($aMenuLinksNew, $aMenuLinks); endif; ?>
Menu template /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='Private section'></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='Private section'></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>'; } ?>
© «Bitrix24», 2001-2024