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-2025, «1С-Битрикс», 2025