Блоки-меню
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Блок-меню заполняется ссылками автоматически. Вместо ручного списка пунктов блок получает их от Битрикс24: разделы каталога магазина или ссылки личного кабинета. Такое поведение включает subtype: menu в секции block манифеста блока.
Сценарий подходит магазинам, где структура каталога меняется, и страницам личного кабинета покупателя. Если пункты меню постоянные, подтип не нужен: ссылки описывают обычными карточками или ключом menu манифеста, который отвечает за многоуровневое меню с ручными пунктами.
Источник ссылок задают в параметре subtype_params.source: Меню каталога или Меню личного кабинета.
Параметры подтипа
|
Параметр |
Значение по умолчанию |
Что задает |
|
|
— |
Источник ссылок: |
|
|
|
Селектор ссылки пункта меню. В ноды по этому селектору система записывает подставленные пункты, поэтому селектор должен быть описан в ключе |
|
|
|
Максимальное число автоматически добавляемых пунктов. Действует только для |
|
|
|
Селектор сворачиваемой части навигации |
|
|
|
Селектор кнопки, которая разворачивает меню |
Что важно знать про selector:
- селектор должен быть описан в ключе
nodesманифеста. Иначе подтип не найдет, куда писать, и пункты не подставятся - в штатных блоках используют три значения:
.landing-block-node-menu-list-item-linkв блоках-шапках с горизонтальным меню,.landing-block-node-list-itemв блоках со списком ссылок и.landing-node-item-linkв блоках личного кабинета
Расширения для подстановки ссылок не нужны, но за поведение самого меню на странице они отвечают, поэтому их подключают в assets.ext:
landing_menu— во всех блоках-менюlanding_header— дополнительно в блоках-шапках
Что делает подтип при добавлении блока
Подтип не дописывает пункты к существующим, а заменяет их: он вызывает механизм обновления нод и записывает свой набор целиком. У каждого пункта задаются текст ссылки и адрес, у пунктов каталога дополнительно атрибут data-url с тем же адресом.
Помимо ссылок подтип готовит и сворачиваемое меню: он описывает в манифесте скрытые атрибуты для .navbar-collapse и кнопки button.navbar-toggler, а при добавлении блока записывает в них идентификатор вида navBar<ID блока>: в .navbar-collapse — атрибут id, в кнопку — aria-controls с тем же значением и data-target со значением через решетку. Благодаря этому два меню на одной странице не конфликтуют.
Меню каталога: source: catalog
При добавлении блока система подставляет в него разделы текущего каталога магазина.
Пример манифеста:
'block' => [
'name' => 'Меню с логотипом слева и пунктами меню справа',
'section' => 'menu',
'subtype' => 'menu',
'subtype_params' => [
'selector' => '.landing-block-node-menu-list-item-link',
'count' => 5,
'source' => 'catalog',
],
],
'nodes' => [
'.landing-block-node-menu-list-item-link' => [
'name' => 'Пункт меню',
'type' => 'link',
],
],
'assets' => [
'ext' => ['landing_menu'],
],
Пример разметки пункта меню:
<ul class="landing-block-node-menu-list">
<li>
<a class="landing-block-node-menu-list-item-link" href="#">Каталог</a>
</li>
</ul>
Меню каталога заполняется только на сайте типа «Магазин» и берет разделы того каталога, который выбран в настройках сайта. Если такого контекста нет, пункты не подставятся и блок останется с исходной разметкой.
Меню личного кабинета: source: personal
Если в source указать значение personal, система подставит готовый набор ссылок личного кабинета:
- Персональный раздел
- Текущие заказы
- Личный счет
- Личные данные
- История заказов
- Профили заказов
- Корзина
- Подписка
Набор фиксированный: он не зависит ни от разметки блока, ни от каталога, и параметр count на него не влияет. Манифест описывают так же, как для каталога, только source меняют на personal и count не задают.
Как проверить блок-меню
- Найдите подходящий штатный блок методом landing.block.getrepository в разделе
menu. - Посмотрите его манифест методом landing.block.getmanifestfile и сверьте
subtype_paramsсо своим блоком. - Свой блок зарегистрируйте методом landing.repo.register и добавьте на страницу методом landing.landing.addblock.
- Проверьте результат методом landing.block.getcontent с параметром
editMode = true: в разметке должны появиться подставленные ссылки. БезeditModeметод вернет опубликованную версию блока, где изменений еще нет.
Права и ограничения
Scope:
landingКто может выполнять метод: в зависимости от метода
Ограничения:
- источника данных два:
catalogиpersonal. В штатных блоках встречается третье значениеsource—structure, но в текущей версии модуля оно ничего не подставляет. Произвольный источник вsubtype_paramsне подключается - пункты подставляются один раз, при добавлении блока на страницу. Если каталог изменился, меню не перестроится само — обновите ссылки методом landing.block.updatenodes