Андрей Смирнов
Время чтения: ~4 мин.
Просмотров: 9

Создание меню с каталогом в битриксе

Не в первый раз поступает задача по созданию меню на основе разделов и элементов инфоблока. За основу я взял наработку, которую выложил Дмитрий Зеленецкий на форуме 1с-Битрикс.

Содержание:

Предварительно подготовим инфоблок, который будет использовать меню. Пусть его ID=1. Во-первых нужно настроить(рис. 1):

  • URL страницы раздела
  • URL страницы детального просмотра

QIP-Shot-Screen-218.png

рис. 1

Далее настройка доступа — чтение для всех пользователей(рис.  2)

QIP-Shot-Screen-219.png

рис. 2

Для реализации потребуется перенести menu.sections в своё пространство имён и кастомизировать его. В папке /local/components/ создаёте своё пространство имён(например my_namespace). Копируйте компонент menu.sections по адресу /local/components/my_namespace/. Конечный вариант компонента можно скачать тут.

Шаг 1

Я буду размещать меню в файле /company/index.php Добавляем в индексный файл код вызова меню:

 <?$APPLICATION->IncludeComponent( "bitrix:menu",  "sections-elements",  array( "ALLOW_MULTI_SELECT" => "Y", "CHILD_MENU_TYPE" => "left", "COMPONENT_TEMPLATE" => ".default", "DELAY" => "N", "MAX_LEVEL" => "3", "MENU_CACHE_GET_VARS" => array( ), "MENU_CACHE_TIME" => "3600", "MENU_CACHE_TYPE" => "A", "MENU_CACHE_USE_GROUPS" => "N", "MENU_THEME" => "site", "ROOT_MENU_TYPE" => "left", "USE_EXT" => "Y" ), false ); 

Шаблон "sections-elements" я тоже выкладываю его нужно закинуть по адресу /local/templates/шаблон-сайта/components/bitrix/menu/. Он корректно поддерживает следующую структуру разделов и элементов: Разделы в корне и элементы в этих разделах. Чтобы правильно отображались вложенные разделы, нужна доработка шаблона.

Шаг 2

   if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();  global $APPLICATION;  $aMenuLinksExt = $APPLICATION->IncludeComponent( "my_namespace:menu.sections",  "",  array( "IS_SEF" => "Y", "ID" => $_REQUEST["ID"], "IBLOCK_TYPE" => "data", "IBLOCK_ID" => "1", "SECTION_URL" => "", "DEPTH_LEVEL" => "3", "CACHE_TYPE" => "Y", "CACHE_TIME" => "3600", "SEF_BASE_URL" => "/company/", "SECTION_PAGE_URL" => "#SECTION_CODE#/", "DETAIL_PAGE_URL" => "#SECTION_CODE#/#ELEMENT_CODE#/" ), false );  $aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks);  

QIP-Shot-Screen-217.png

результат

Задумываетесь о защите данных для своего сайта? ssl сертификат — это то что вам нужно. Узнать цены на ssl сертификаты можно на сайте rus.gogetssl.com.

Битрикс всем хорошо, но создание меню и, тем более, меню с каталогом — может вызвать трудности для неподготовленного пользователя. В документации, конечно, описан весь процесс, но, по опыту автора данной статьи, он не всем понятен. В рамках данной краткой заметки, собственно, рассматривается процесс создания меню с каталогом на битриксе. 

58-1024x1024.jpg

Создание меню с каталогом можно поделить на три шага: Создание компонента простого меню, создание файла меню с каталогом, подключение файла к компоненту меню. Итак, процесс происходит следующим образом:

Шаг 1. Создание компонента меню

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

Вызов шаблона в хедере будет выглядеть примерно так:

Далее, следует перейти в публичную часть, включить режим редактирования и создать пункты меню. Выглядеть это будет примерно следующим образом и сложностей, по-идее, возникнуть не должно:

k6wohAoE.png

После нажатия кнопки «сохранить» можно будет сразу увидеть изменения. К слову, уровень вложенности нужно ставить от 2 и выше. Тут, собственно, всё, можно переходить к более «интересным» пунктам.

Шаг 2. Создание файла каталога меню

Для меню-каталога нужно, (желательно) в корне сайта создать файл с произвольным префиксом и окончанием вида .menu_ext.php. Например, можно назвать так: .left.menu_ext.php

Внутри файла следует добавить следующий код:

Обратите внимание, что если каталог товаров находится по адресу /catalog/ — то products нужно поменять, соответственно, на catalog. Параметр Depth_level — это глубина вложенности. В данном случае — до 4-х разделов. Собственно, в данном пункте работа закончена, можно переходить в публичную часть к выводу данного меню.

Шаг 3. Вывод меню каталога

На данном шаге мы переходим в публичную часть и выводим наше меню каталога товаров. Для этого следует выполнить 3 простых шага:

  1. Открыть редактирование параметров компонента меню (основного)
  2. Поставить в данном пункте галку:Htrz8ALK.png
  3. Сбросить кеш.

Меню должно отобразиться. Если же оно не отобразилось, можно попробовать вызвать в настройках меню следующий пункт и там обновить кеш компонента (или включить его, если потребуется):

XfxpDQNn.png

После этого всё точно должно заработать. На выходе получиться что-то вроде этого:

DmWDKT3L-1024x75.png

Выше был рассмотрен процесс создания меню в битриксе, на этом тему заметки можно считать исчерпанной. Но, представляется верным сделать, в заключение, небольшое примечание: Несмотря на описанный выше функционал, на больших проектах приходится прибегать к ручному (html) созданию меню (как бы это не было бы неудобно). Что касается сравнения с другими CMS — конечно, битрикс в данном функционале значительно проигрывает WP.

Используемые источники:

  • https://thisis-blog.ru/menyu-na-osnove-razdelov-i-elementov-v-bitriks/
  • https://alexryabikov.ru/2018/08/06/bitrix-menu-with-catalog/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации