GetMenuHtmlEx
Описание и параметры
string CMain::GetMenuHtmlEx( string type = "left", bool MenuExt = false, mixed template = false, mixed InitDir = false )
Возвращает HTML-код для отображения меню заданного типа. В отличие от метода CMain::GetMenuHtml шаблон меню будет подключаться только один раз. Нестатический метод.
Примечание. В шаблоне меню, используемом данным методом, в обязательном порядке необходимо инициализировать переменную $sMenu, в которой должен храниться HTML представляющий из себя все меню целиком.
Параметры
Параметр | Описание | С версии |
---|---|---|
type | Тип меню. Необязателен. По умолчанию "left". | |
MenuExt | Если значение - "true", то для формирования массива меню, помимо файлов Необязателен. По умолчанию - "false". | |
template | Путь относительно корня к шаблону меню. Необязателен. По умолчанию - "false", что означает искать по алгоритму указанному на странице Построение и показ меню. | |
InitDir | Каталог для которого будет строится меню. Необязателен. По умолчанию - "false", что означает - текущий каталог. | 3.3.21 |
Смотрите также
Примеры
Пример выпадающего верхнего меню
Вывод меню в файле /bitrix/templates/demo/header.php
:
<script language="JavaScript1.2" src="/bitrix/templates/demo/js/ddnmenu.js"></script> <?echo $APPLICATION->GetMenuHtmlEx("top");?>
Файл /.top.menu.php
:
<? // основной файл меню // данный файл может редактироваться в редакторе меню $aMenuLinks = Array( Array( "Главная", "/index.php", Array(), Array(), "" ), Array( "Каталог", "/catalog/", Array(), Array(), "" ), Array( "Поддержка", "/support/", Array(), Array(), "" ), Array( "Партнёры", "/partners/", Array(), Array(), "" ), Array( "Компания", "/about/", Array(), Array(), "" ) ); ?>
Файл /bitrix/templates/demo/top.menu_template.php
:
<? // шаблон меню $sMenu = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="0%"><img src="/bitrix/templates/demo/images/top_menu_corner.gif" alt="" width="15" height="19"></td>'; for($i=0; $i<count($arMENU); $i++) { $MENU_ITEM = $arMENU[$i]; extract($MENU_ITEM); if($SELECTED) $clrtext = 'topmenuact'; else $clrtext = 'topmenu'; $sMenu .= '<td>'; $sMenu .= '<table border="0" cellspacing="0" cellpadding="0"><tr>'; $sMenu .= '<td bgcolor="#7B9DBB" onmouseover="show('.$i.')" onmouseout="hidden('.$i.')"><a href="'.$LINK.'" class="'.$clrtext.'"><nobr> '.$TEXT.' </nobr></a></td>'; $sMenu .= '<td width="0%" bgcolor="#7B9DBB">'; if($iInit($LINK); if(count($popup_menu->arMenu) > 0) { //if left menu exists then we display it in the hidden layer $popup_menu->template = "/bitrix/templates/demo/popup.menu_template.php"; $sMenu .= '<div style="position:relative; width: 100%;">'; $sMenu .= '<div onMouseOver="show('.$i.')" onMouseOut="hidden('.$i.')" id="menu'.$i.'" style="visibility: hidden; position: absolute; z-index: +1; top: 0px;" >'; $sMenu .= $popup_menu->GetMenuHtmlEx(); $sMenu .= '</div></div>'; } $sMenu .= '</td>'; } $sMenu .= '<td width="100%" bgcolor="#7B9DBB"><img src="/bitrix/templates/demo/images/1.gif" width="50" height="1" alt=""></td></tr></table>'; ?>
Файл /bitrix/templates/demo/popup.menu_template.php
:
<? $sMenu = '<table border="0" cellspacing="0" cellpadding="0" width="110">'. '<tr><td bgcolor="#E6EFF7" valign="top"><table border="0" cellspacing="0" cellpadding="0" width="100%">'; for($i=0; $i<count($arMENU); $i++) { $MENU_ITEM = $arMENU[$i]; extract($MENU_ITEM); if ($PERMISSION > "D") { $sMenu .= '<tr valign="top"><td nowrap onmouseover="this.className=\'popupmenuact\'" onmouseout="this.className=\'popupmenu\'" onclick="window.location=\''.$LINK.'\'" class="popupmenu" style="cursor: hand">'. '<nobr><a href="'.$LINK.'" style="text-decoration: none;"><font class="popupmenutext">'.$TEXT.'</font></a>'. '</nobr></td></tr>'; } else { $sMenu .= '<tr valign="top"><td nowrap onmouseover="this.className=\'popupmenuact\'" onmouseout="this.className=\'popupmenu\'" onclick="window.location=\''.$LINK.'\'" class="popupmenu" style="cursor: hand">'. '<nobr><font class="popupmenuclosed">'.$TEXT.'</font>'. '</nobr></td></tr>'; } } $sMenu .= '</table></td></tr></table>'; ?>
Файл /bitrix/templates/demo/js/ddnmenu.js
:
var brname=navigator.appName, BrVer=''; if(brname.substring(0,2)=="Mi") BrVer='E'; var timer = 0; lastid = -1; function show(id) { if(!((document.all)?document.all['menu'+id]:document.getElementById('menu'+id))) return; clearTimeout(timer); if((id != lastid) && (lastid!=-1)) ((document.all)?document.all['menu'+lastid]:document.getElementById('menu'+lastid)).style.visibility = 'hidden'; hideElement("SELECT", document.getElementById('menu'+lastid)); lastid = id; ((document.all)?document.all['menu'+lastid]:document.getElementById('menu'+lastid)).style.visibility = 'visible'; } function hidden(id) { if(!((document.all)?document.all['menu'+id]:document.getElementById('menu'+id))) return; showElement("SELECT"); timer = setTimeout("if('"+id+"' == '"+lastid+"'){((document.all)?document.all['menu"+lastid+"']:document.getElementById('menu"+lastid+"')).style.visibility = 'hidden';}", 500) } function GetPos(el) { if (!el || !el.offsetParent)return false; var res=Array() res["left"] = el.offsetLeft; res["top"] = el.offsetTop; var objParent = el.offsetParent; while (objParent.tagName.toUpperCase()!="BODY") { res["left"] += objParent.offsetLeft; res["top"] += objParent.offsetTop; objParent = objParent.offsetParent; } res["right"]=res["left"]+el.offsetWidth; res["bottom"]=res["top"]+el.offsetHeight; return res; } function hideElement(elName, Menu) { if(BrVer!='E') return; for (i = 0; i < document.all.tags(elName).length; i++) { Obj = document.all.tags(elName)[i]; if(!(pMenu=GetPos(Menu)))continue; if(!(pObj=GetPos(Obj)))continue; if(pObj["left"]<pMenu["right"] && pMenu["left"]<pObj["right"] && pObj["top"]<pMenu["bottom"] && pMenu["top"]<pObj["bottom"]) Obj.style.visibility = "hidden"; } } function showElement(elName) { if(BrVer!='E') return; for (i = 0; i < document.all.tags(elName).length; i++) { obj = document.all.tags(elName)[i]; if (!obj || !obj.offsetParent)continue; if(obj.style.visibility=="hidden") obj.style.visibility = "visible"; } }
© «Битрикс», 2001-2024, «1С-Битрикс», 2024