Примеры создания динамического меню

Урок 113 из 383
Автор: Ольга Пичужкина
Сложность урока:
4 уровень - сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
4 из 5
Просмотров: 7802
Дата изменения: 18.03.2024
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Ограничений нет

Существует несколько способов размещения на сайте динамического меню. Мы рассмотрим три, из них - два попроще, и один для опытных пользователей.

  Создаем динамическое меню

Какой из этих способов выбрать - зависит от ваших потребностей и структуры сайта. Например:

  • Если вы просто расширяете ассортимент продукции, продаваемой через сайт, и вам достаточно включить новую товарную группу в уже существующий перечень - используйте первый способ.
  • Второй способ пригодится, если вы решили не только продавать товары, но и оказывать услуги. Для услуг вы заведете отдельный инфоблок (ведь параметры услуг не совпадают с характеристиками товаров) и продавать их будете в отдельном разделе.
  • И третий способ - самый гибкий. Он позволяет использовать в качестве пунктов меню разделы любого инфоблока.

  Первой способ: добавляем раздел

Самый простой способ - добавить к каталогу демо-сайта свои разделы и подразделы. Они сразу автоматически добавятся в основное меню.

Посмотрите, как это сделать, в коротком видеоролике:

  Второй способ: меню для нового инфоблока

Второй способ применяется, если нужно настроить меню на собственный инфоблок:

  • добавляем инфоблок с его разделами и элементами
  • в Публичной части создаем нужный раздел
  • в визуальном редакторе размещаем в разделе компонент Каталог Комплексный компонент осуществляет вывод полного каталога товаров из определенного инфоблока.

    Описание компонента «Каталог (комплексный компонент)» в пользовательской документации.
    для работы с инфоблоками
  • указываем в параметрах компонента наш созданный инфоблок в качестве источника данных
  • в разделе сайта будет показан наш инфоблок в виде каталога с его собственным меню

Эти действия подробно показаны в видеоролике:

  Третий способ: сложный

Этим способом можно создать динамическое меню, основанное на произвольном инфоблоке. Но он предполагает изменения в коде. Поэтому рекомендуется только для самых опытных и "продвинутых" контент-менеджеров.

Потребуется внести изменения в код. Будьте внимательны и аккуратны!

Сначала пропишем алгоритм действий. Затем покажем пример в видео.

  • В Административной части в папке раздела создаем два файла меню - .left.menu.php (статическое) и .left.menu_ext.php (динамическое);
  • Очищаем файл динамического меню .left.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["ELEMENT_ID"], 
            "IBLOCK_TYPE" => "books", 
            "IBLOCK_ID" => "30", 
            "SECTION_URL" => "/e-store/books/index.php?SECTION_ID=#ID#", 
            "CACHE_TIME" => "3600" 
        )
    );
    
    $aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt);
    ?>
    
    
  • В коде требуется заменить значения трех параметров на актуальные значения для текущего инфоблока:
    • название типа инфоблока IBLOCK_TYPE
    • идентификатор инфоблока IBLOCK_ID
    • путь к разделам инфоблока SECTION_URL
  • Отключаем использование кеша Кеш - это некое хранилище для ускорения просмотра информации на сайте. Когда пользователь просматривает информацию на сайте, то она не всегда запрашивается из базы данных, а берется из кеша.
    Подробнее...
    для того, чтобы компонент меню обновлялся сразу при изменении данных. Рекомендуем отключать кеш в настройках самого компонента меню Материал о работе с компонентами Вы ещё не изучали. Если такая настройка покажется Вам
    сложной, можете вернуться к ней позже.
    Подробнее в уроке Как настроить компонент.

    ;
  • Готово! Динамическое меню автоматически изменится при открытии раздела с данными из инфоблока.

В видеоролике эти действия показаны подробно на примере:

Будьте внимательны при замене пути к разделу в коде! Для основного сайта (сайта по умолчанию, обычно он называется s1) для параметра SECTION_URL достаточно скопировать содержимое поля URL страницы раздела из настроек инфоблока без #SITE_DIR#. Например путь может выглядеть так (catalog - название раздела, как books в видео):
// без ЧПУ
"SECTION_URL" => "/catalog/index.php?SECTION_ID=#ID#"

//с ЧПУ
"SECTION_URL" => "/catalog/#SECTION_CODE#/"

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



Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас
Курсы разработаны в компании «1С-Битрикс»