Created
November 23, 2019 13:35
-
-
Save Elvinz/e4d3ce46d7d0fb907fc1262470837b25 to your computer and use it in GitHub Desktop.
Меню на основе разделов и элементов в битрикс
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Предварительно подготовим инфоблок, который будет использовать меню. Пусть его ID=1. | |
Во-первых нужно настроить(рис. 1): | |
URL страницы раздела | |
URL страницы детального просмотра | |
https://thisis-blog.ru/wp-content/uploads/2016/05/QIP-Shot-Screen-218.png | |
Далее настройка доступа — чтение для всех пользователей(рис. 2) | |
https://thisis-blog.ru/wp-content/uploads/2016/05/QIP-Shot-Screen-219-900x272.png | |
Кастомизация компонента | |
Для реализации потребуется перенести 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 | |
Далее в разделе /company/ создаём файл .left.menu.php | |
Его содержимое: | |
<?php | |
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); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment