Проблема с меню и подменю на сайтах Битрикс

Углубленное изучение Битрикс
  • Проблема с меню и подменю на сайтах Битрикс

    Антон Долганин 7 Июня 2016 14:54 3540
    В иерархии меню Битрикс есть такой неприятный (скорее для редакторов) баг.  Как сделать вот такое вот меню?

    Screenshot_1.png

    Все правильно, в корне создаем основной файл меню, а внутри разделов уже меню подразделов. И компонент меню вызываем как-то так

    Screenshot_2.png
    Все бы ничего, но зайдя в какой-то раздел и пытаясь создать меню внутри него, нас ждет разочарование - такого действия нет (нельзя создать подменю).

    Screenshot_3.png

    Все потому, что мы явно не вызываем меню для второго типа меню (в моем случае это left_inner). И панель админа его не отслеживает и не выводит кнопку создания.

    Битрикс почему-то настойчиво не хочет это исправлять, причем очень много лет не хочет, отправляет в тикетах на данное решение.
    По факту же все решается гораздо проще, нам надо внутри нашего шаблона меню сделать вот такой вызов:
    <?
    if ($arParams['CHILD_MENU_TYPE'] != '' && $USER->CanDoOperation('fileman_edit_menu_elements')) {
       $APPLICATION->IncludeComponent('bitrix:menu', 'pr_empty', Array('ROOT_MENU_TYPE' => $arParams['CHILD_MENU_TYPE']));
    }
    ?>


    То есть, если есть подменю и есть права на редактирование меню (эта проверка скорее для оптимизации вызова), то вставь мне компонент для подтипа. Обратите внимание, я вызываю его с пустым шаблоном - его тоже надо будет создать (именно пустой шаблон меню).

    Вот и все:

    Screenshot_4.png