Битрикс всем хорошо, но создание меню и, тем более, меню с каталогом — может вызвать трудности для неподготовленного пользователя. В документации, конечно, описан весь процесс, но, по опыту автора данной статьи, он не всем понятен. В рамках данной краткой заметки, собственно, рассматривается процесс создания меню с каталогом на битриксе.
Создание меню с каталогом можно поделить на три шага: Создание компонента простого меню, создание файла меню с каталогом, подключение файла к компоненту меню. Итак, процесс происходит следующим образом:
Шаг 1. Создание компонента меню
Как известно, у битрикса есть стандартный компонент меню с набором шаблонов (в данном случае, неважно, какой шаблон применяется. В качестве примера пусть будет горизонтальный).
Вызов шаблона в хедере будет выглядеть примерно так:
<?$APPLICATION->IncludeComponent( "bitrix:menu", "catalog_horizontal", array( "ROOT_MENU_TYPE" => "top", "MENU_CACHE_TYPE" => "A", "MENU_CACHE_TIME" => "36000000", "MENU_CACHE_USE_GROUPS" => "N", "MENU_THEME" => "blue", "CACHE_SELECTED_ITEMS" => "N", "MENU_CACHE_GET_VARS" => array( ), "MAX_LEVEL" => "2", "CHILD_MENU_TYPE" => "", "USE_EXT" => "Y", "DELAY" => "N", "ALLOW_MULTI_SELECT" => "N", "COMPONENT_TEMPLATE" => "catalog_horizontal" ), false );?>
Далее, следует перейти в публичную часть, включить режим редактирования и создать пункты меню. Выглядеть это будет примерно следующим образом и сложностей, по-идее, возникнуть не должно:
После нажатия кнопки «сохранить» можно будет сразу увидеть изменения. К слову, уровень вложенности нужно ставить от 2 и выше. Тут, собственно, всё, можно переходить к более «интересным» пунктам.
Шаг 2. Создание файла каталога меню
Для меню-каталога нужно, (желательно) в корне сайта создать файл с произвольным префиксом и окончанием вида .menu_ext.php. Например, можно назвать так: .left.menu_ext.php
Внутри файла следует добавить следующий код:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); global $APPLICATION; $aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections", "", array( "ID" => $_REQUEST["ID"], "IBLOCK_TYPE" => "products", "IBLOCK_ID" => "10", "SECTION_URL" => "/products/#SECTION_CODE_PATH#/", "DEPTH_LEVEL" => "2", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "IS_SEF" => "N", "SEF_BASE_URL" => "/catalog/", "SECTION_PAGE_URL" => "#SECTION_ID#/", "DETAIL_PAGE_URL" => "#SECTION_ID#/#ELEMENT_ID#" ), false, array( "ACTIVE_COMPONENT" => "Y" ) ); //unset($aMenuLinksExt[0]); $aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt); ?>
Обратите внимание, что если каталог товаров находится по адресу /catalog/ — то products нужно поменять, соответственно, на catalog. Параметр Depth_level — это глубина вложенности. В данном случае — до 4-х разделов. Собственно, в данном пункте работа закончена, можно переходить в публичную часть к выводу данного меню.
Шаг 3. Вывод меню каталога
На данном шаге мы переходим в публичную часть и выводим наше меню каталога товаров. Для этого следует выполнить 3 простых шага:
- Открыть редактирование параметров компонента меню (основного)
- Поставить в данном пункте галку:
- Сбросить кеш.
Меню должно отобразиться. Если же оно не отобразилось, можно попробовать вызвать в настройках меню следующий пункт и там обновить кеш компонента (или включить его, если потребуется):
После этого всё точно должно заработать. На выходе получиться что-то вроде этого:
Выше был рассмотрен процесс создания меню в битриксе, на этом тему заметки можно считать исчерпанной. Но, представляется верным сделать, в заключение, небольшое примечание: Несмотря на описанный выше функционал, на больших проектах приходится прибегать к ручному (html) созданию меню (как бы это не было бы неудобно). Что касается сравнения с другими CMS — конечно, битрикс в данном функционале значительно проигрывает WP.