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
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.