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

Init

bool
CMenu::Init(
 string InitDir
 bool MenuExt = false,
 string template = false,
 onlyCurrentDir=false
)

Инициализирует (заполняет пунктами) объект класса CMenu. Возвращает "true" если в каталоге сайта найден файл меню .тип меню.menu.php (поиск идет вверх по иерархии начиная с каталога dir), и "false" в противном случае. Нестатический метод.

Параметры

ПараметрОписание С версии
InitDir Папка, начиная с которой, объект будет искать файл .тип меню.menu.php (файл с параметрами и пунктами меню).
MenuExt Если значение - "true", то для формирования массива меню, помимо файлов .тип меню.menu.php будут также подключаться файлы с именами вида .тип меню.menu_ext.php. В которых вы можете манипулировать массивом меню $aMenuLinks произвольно, по вашему усмотрению (например, дополнять пункты меню значениями из инфо-блоков).
Необязателен. По умолчанию - "false".
3.2.5
template Шаблон для вывода меню.
Необязателен. По умолчанию - "false", что означает искать шаблон меню сначала в файле /bitrix/templates/ID текущего шаблона сайта/тип меню.menu_template.php, затем если шаблон не будет найден, то искать в файле /bitrix/templates/.default/тип меню.menu_template.php. В самом шаблоне меню вам будут доступны следующие предустановленные переменные:
  • $arMENU - копия массива меню
  • $arMENU_LINK - ссылка на текущий массив меню
  • $TEXT - текст текущего пункта меню
  • $LINK - ссылка текущего пункта меню
  • $SELECTED - выбран ли пункт меню в данный момент
  • $PERMISSION - доступ на страницу указанную в $LINK, возможны следующие значения:
    • D - доступ запрещён
    • R - чтение (право просмотра содержимого файла)
    • U - документооборот (право на редактирование файла в режиме документооборота)
    • W - запись (право на прямое редактирование)
    • X - полный доступ (право на прямое редактирование файла и право на изменение прав доступа на данных файл)
  • $ADDITIONAL_LINKS - дополнительные ссылки для подсветки меню
  • $ITEM_TYPE - "D" - директория (если $LINK заканчивается на "/"), иначе "P" - страница
  • $ITEM_INDEX - порядковый номер пункта меню
  • $PARAMS - параметры пунктов меню
При этом в шаблоне для построения меню необходимо будет инициализировать следующие перменные:
  • $sMenuProlog - HTML который будет добавлен перед пунктами меню
  • $sMenuEpilog - HTML который будет добавлен после пунктов меню
  • $sMenuBody - HTML представляющий из себя один пункт меню
  • $sMenu - HTML представляющий из себя все меню целиком (только для метода GetMenuHtmlEx)
3.3.7
$onlyCurrentDir Если значение - "true", то отключается поиск файла меню в родительских каталогах.5.9.0

См. также

Примеры использования

<?
$lm = new CMenu("left");
$lm->Init($APPLICATION->GetCurDir(), true);
$lm->template = "/bitrix/templates/demo/left.menu_template.php";
echo $lm->GetMenuHtml();
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Андрей Казанов
Комментарий выше не совсем корректен
Код
<?
$aMenuLinks = Array(
   Array(
      "Покупателю1", 
      "", 
      Array(), 
      Array("FROM_IBLOCK" => 5, "DEPTH_LEVEL" => 1, "IS_PARENT" => true), 
      "" 
   ),
   Array(
      "Поставщику", 
      "", 
      Array(), 
     Array("FROM_IBLOCK" => 5, "DEPTH_LEVEL" => 2),
      "" 
   ),
   Array(
      "Будущему сотруднику", 
      "", 
      Array(), 
     Array("FROM_IBLOCK" => 5, "DEPTH_LEVEL" => 1), 
      ""                     
   ),
   Array(
      "Журналисту", 
      "", 
      Array(), 
      Array("FROM_IBLOCK" => 5, "DEPTH_LEVEL" => 1), 
      "" 
   )
);
?>
1
Пётр Невенчанный
Обошёл всю документацию так и не нашел как можно руками сформировать многоуровневое меню.
Поняв как работает компонент понял более подробную структуру массива для формирования меню:
Код
$aMenuLinks[] = Array(
   "NAME", //Название пункта меню
   "/test/index.php", //Ссылка пункта меню 
   Array(), //ADDITIONAL_LINKS - дополнительные ссылки для подсвечивания
   Array("FROM_IBLOCK" => 1, "DEPTH_LEVEL" => 1), //Указание дополнительных параметров, FROM_IBLOCK - какое должен иметь значение не знаю но без него нельзя указать уровень вложенности, DEPTH_LEVEL - уровень вложенности
);
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх