Двухуровневое меню в Битрикс

К моему удивлению в битриксе не оказалось встроенных инструментов для построения двухуровневого меню. Пришлось сочинять свое в шаблоне.

Не уверен, что я все сделал правильно, но, погуглив, никаких готовых решений не нашел, потому сделал свое.

По порядку для создания двухуровневого меню:

  1. Создать меню, пусть будет "Нижнее"(bottom), и заполнить его пунктами.
  2. В подразделах(в папках подразделов сайта) также заполнить подменю пунктами.
  3. В нужном месте макета вызываем компонент меню 
          IncludeComponent(
            "bitrix:menu",
            "bottom", // Имя шаблона
            Array(
              "COMPONENT_TEMPLATE" => ".default",
              "ROOT_MENU_TYPE" => "bottom",
              "MENU_CACHE_TYPE" => "N",
              "MENU_CACHE_TIME" => "3600",
              "MENU_CACHE_USE_GROUPS" => "Y",
              "MENU_CACHE_GET_VARS" => array(""),
              "MAX_LEVEL" => "2", // Уровень вложенности
              "CHILD_MENU_TYPE" => "bottom", // Имя дочернего меню
              "USE_EXT" => "Y",
              "DELAY" => "N",
              "ALLOW_MULTI_SELECT" => "N"
            )
          );?>
  4. Чтобы в $arResult добавились подпункты нужно установить параметр MAX_LEVEL=2 для двух уровней и CHILD_MENU_TYPE="bottom"
  5. Далее нужно создать папку с шаблоном меню bottom. У меня эта папка получилась по адресу \bitrix\templates\main\components\bitrix\menu\bottom
  6. В папке создаем template.php и помещаем в него код файла template.php

Ну а дальше остается скорректировать шаблон под свои нужды.

UPD 9.09.15: Выяснил, что я изобрел велосипед. Шаблон для многоуровневого меню хранится в файле bitrix\components\bitrix\menu\templates\tree\template.php . Логика кода примерно соответствует моей, только встроенный шаблон более универсален и поддерживает более 2 уровней.

comments powered by Disqus


Следующий "Подозрительное, потенциально вредоносное, содержимое" К списку Предыдущий "Что делать если в dokuwiki пропал sidebar и некоторые страницы?"