Файл манифеста
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Файл манифеста сопровождает каждый блок и описывает:
- редактируемые элементы в разметке блока
- стили, доступные в редакторе
- дополнительные атрибуты
- подключаемые ресурсы
Получить файл манифеста блока можно с помощью метода landing.block.getmanifestfile.
Пример файла манифеста
$manifest = [
'block' => [
'name' => 'Текст и изображение в две колонки',
'section' => ['text_image', 'columns'],
'type' => ['page', 'store', 'smn', 'knowledge', 'group', 'mainpage'],
'dynamic' => false,
'description' => 'Блок с заголовком, текстом, кнопкой и изображением',
],
'cards' => [
'.landing-block-card' => [
'name' => 'Колонка',
'label' => ['.landing-block-node-title'],
],
],
'nodes' => [
'.landing-block-node-title' => [
'name' => 'Заголовок',
'type' => 'text',
],
'.landing-block-node-text' => [
'name' => 'Текст',
'type' => 'text',
],
'.landing-block-node-button' => [
'name' => 'Кнопка',
'type' => 'link',
],
'.landing-block-node-image' => [
'name' => 'Изображение',
'type' => 'img',
'dimensions' => [
'maxWidth' => 1200,
'maxHeight' => 1200,
],
'allowInlineEdit' => false,
'useInDesigner' => true,
],
],
'style' => [
'block' => [
'type' => ['block-default'],
],
'nodes' => [
'.landing-block-card' => [
'name' => 'Колонка',
'type' => ['columns', 'animation'],
],
'.landing-block-node-title' => [
'title' => 'Заголовок',
'type' => ['typo', 'heading'],
],
'.landing-block-node-text' => [
'title' => 'Текст',
'type' => 'typo',
],
'.landing-block-node-button' => [
'title' => 'Кнопка',
'type' => 'button',
],
'.landing-block-node-image' => [
'name' => 'Изображение',
'type' => ['box'],
],
],
],
'attrs' => [
'.landing-block-node-text' => [
[
'name' => 'Режим отображения',
'type' => 'dropdown',
'attribute' => 'data-view',
'items' => [
['name' => 'Короткий', 'value' => 'short'],
['name' => 'Полный', 'value' => 'full'],
],
],
],
],
'assets' => [
'css' => ['https://example.com/landing/custom-block.css'],
'js' => ['https://example.com/landing/custom-block.js'],
'ext' => ['landing_form'],
],
];
Ключи манифеста
Манифест блока состоит из набора ключей. Каждый ключ отвечает за отдельную часть описания блока: структуру, редактируемые элементы, стили, атрибуты и подключаемые ресурсы. В одном манифесте можно использовать сразу несколько ключей.
Ключ block
Ключ block задает базовые свойства блока:
name— название блокаsection— раздел или массив разделов в каталоге блоков. Актуальные коды разделов можно получить методом landing.block.getrepositorydynamic— признак поддержки динамического режима блока. Если передатьfalse, блок нельзя использовать как динамическийsubtype— подтип спецблока, одно значение или массивsubtype_params— параметры подтипаtype— тип сайта, где доступен блок. Поддерживаемые типы сайта:page— обычные сайты и лендингиstore— магазиныsmn— служебный тип сайтов для раздела «Сайты24» в БУСknowledge— базы знанийgroup— базы знаний групп соцсетиmainpage— главная страница портала
В зависимости от редакции и версии продукта могут встречаться дополнительные служебные значения type.
Ключ nodes
Ключ nodes описывает элементы, которые можно редактировать как контент. Для указания нод используются CSS-селекторы. В качестве селектора рекомендуется выбирать понятные структурные классы, например с префиксом landing-block-node-.
Один и тот же селектор можно использовать в разных блоках, но селектор ноды не должен совпадать с селектором карточки этого же блока.
В nodes ключами выступают селекторы редактируемых элементов, а в значениях задаются метка ноды, ее тип и дополнительные параметры. От типа ноды зависит, как именно элемент будет редактироваться в интерфейсе.
Возможные типы нод:
text— текстовый контент элементаimg— изображениеlink— ссылкаicon— иконкаembed— встраиваемый медиа-контентmap— картаcomponent— встраиваемый компонентstyleimg— изображение, управляемое через стилевые настройки
Подробнее: Типы нод.
Ключ cards
Ключ cards описывает карточки. Карточки применяются для повторяемого контента, например списка услуг, сотрудников или элементов галереи.
В базовом варианте достаточно описания карточек в манифесте, а для более сложных сценариев используется расширенное управление карточками.
Рекомендации:
- используйте отдельные селекторы карточек и нод
- используйте понятные структурные классы, например
landing-block-card-* - не смешивайте карточки разных селекторов в одном общем родителе без расширенной схемы карточек
Подробнее о расширенной схеме: Расширенное описание карточек.
Ключ style
Ключ style задает, какие стилевые настройки доступны в редакторе.
При изменении внешнего вида блоков обычно меняются CSS-классы, а не инлайн-атрибут style у нод. Например, при изменении размера текста система может заменить условный класс g-font-size-12 на g-font-size-16, а не записывать font-size напрямую в style.
Структура:
style.block— стили блока целикомstyle.nodes— стили отдельных элементов внутри блока по CSS-селекторам
Типы стилей:
block-default— базовые настройки оформления блокаblock-default-background— базовый блок с фономblock-default-background-height-vh— блок с фоном и высотой во viewportpaddings— внешние и внутренние отступыmargins— внешние отступыbox— настройки контейнера (цвет, тень, прозрачность)bg— цвет фонаbutton— стили кнопкиtypo— расширенные типографические настройки текстаtypo-simple— упрощенные настройки типографикиtypo-link— оформление ссылокnavbar— настройки панели навигацииnavbar-bg-color— настройки панели навигации с фономnavbar-full— расширенные настройки панели навигацииblock-default-background-overlay— базовый блок с настройками фонового оверлеяblock-default-background-overlay-height-vh— вариант с оверлеем и настройкой высоты экранаblock-default-wo-background— базовый блок без настроек фонаblock-default-wo-paddings— блок без настроек отступовblock-default-wo-background-vh-animation— блок без фона, с настройкой высоты экрана и анимациейblock-border— настройки рамки блокаcontainer— настройки контейнера контентаheading— настройки заголовкаborder-colors— цвета рамки и рамки при наведенииbackground-gradient— градиентный фонbackground-hover— фон при наведенииwidget— стили для виджетов
Набор типов стиля и параметры внутри каждого типа расширяемые и зависят от подключенных style-манифестов и версии продукта.
Справочный список типов стиля и их параметров
$styleTypes = [
'block-default' => [
'display',
'background',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
'margin-top',
],
'block-default-background' => [
'display',
'background',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
'margin-top',
],
'block-default-background-height-vh' => [
'display',
'background',
'height-vh',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
'margin-top',
],
'paddings' => [
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
],
'margins' => [
'margin-top',
'margin-bottom',
'margin-left',
'margin-right',
],
'box' => [
'background-color',
'box-shadow',
'opacity',
],
'bg' => [
'background-color',
],
'button' => [
'button-color',
'button-color-hover',
'button-type',
'button-size',
'button-padding',
'border-radius',
'color',
'color-hover',
'border-color-hover',
'font-family',
'text-transform',
],
'typo' => [
'text-align',
'color',
'font-size',
'font-family',
'font-weight',
'text-decoration',
'text-transform',
'line-height',
'letter-spacing',
'word-break',
'text-shadow',
'padding-top',
'padding-left',
'padding-right',
'margin-bottom',
],
'typo-simple' => [
'font-size',
'font-family',
'font-weight',
'text-decoration',
'text-transform',
'line-height',
'letter-spacing',
],
'typo-link' => [
'color',
'color-hover',
'font-size',
'font-family',
'font-weight',
'text-decoration',
'text-transform',
'letter-spacing',
'text-shadow',
],
'navbar' => [
'navbar-align',
'navbar-color',
'navbar-color-hover',
],
'navbar-bg-color' => [
'navbar-align',
'navbar-color',
'navbar-bg',
'navbar-color-hover',
'navbar-bg-hover',
],
'navbar-full' => [
'navbar-align',
'navbar-color',
'navbar-color-hover',
'navbar-color-fix-moment',
'navbar-color-fix-moment-hover',
],
'block-default-background-overlay' => [
'display',
'background-attachment',
'background-size',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
'margin-top',
'background-overlay',
],
'block-default-background-overlay-height-vh' => [
'display',
'background-attachment',
'background-size',
'height-vh',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
'margin-top',
'background-overlay',
],
'block-default-wo-background' => [
'display',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
'margin-top',
],
'block-default-wo-paddings' => [
'display',
'background-color',
],
'block-default-wo-background-vh-animation' => [
'display',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
'margin-top',
'height-vh',
'animation',
],
'block-border' => [
'background',
'block-border-type',
'block-border-margin',
'border-radius',
'block-border-position',
],
'container' => [
'container-max-width',
'padding-left',
'padding-right',
],
'heading' => [
'text-align',
'heading-v2',
'border-color',
'border-color-hover',
'margin-bottom',
],
'border-colors' => [
'border-color',
'border-color-hover',
],
'background-gradient' => [
'background-color',
],
'background-hover' => [
'background-color-hover',
],
'widget' => [
'background',
'widget-type',
'margin-top',
'margin-bottom',
'padding-top',
'padding-bottom',
'padding-left',
'padding-right',
],
];
Ключ attrs
Ключ attrs описывает дополнительные параметры, значения которых сохраняются в атрибутах DOM-элементов.
Типы атрибутов:
text— однострочное текстовое полеdate— выбор даты и времениhtml— многострочное текстовое полеdropdown— выпадающий списокcheckbox— чекбокс или группа чекбоксовradio— выбор одного варианта из спискаmultiselect— множественный выборimage— выбор изображенияicon— выбор иконкиlink— ссылка с расширенными настройкамиurl— упрощенное поле URLslider— слайдер одного значенияrange-slider— слайдер диапазона значенийpalette— выбор из палитрыcolor— выбор цветаsortable-list— сортируемый список значенийposition— выбор позиции/направления элементаcatalog-view— настройки отображения каталожных данныхfilter— настройки фильтраuser-select— выбор пользователяdynamic_source— выбор динамического источника данных
Подробнее: Атрибуты.
Ключи lang_original и lang
Ключи lang_original и lang задают локализацию подписей в манифесте блока.
lang_original— исходный язык фраз в манифестеlang— набор переводов по языкам
Рекомендации:
- задавайте
lang_originalв соответствии с фактическим языком манифеста - используйте одинаковые фразы-ключи в
lang, как в исходном манифесте
Подробнее: Локализация блока.
Ключ menu
Ключ menu используется, когда нужно многоуровневое меню с отдельными настройками корневых и дочерних пунктов.
Если достаточно одного уровня, меню можно реализовать и как обычные карточки со ссылками.
Пример многоуровневого меню:
'menu' => [
'.landing-block-node-menu' => [
'item' => '.landing-block-node-menu-item',
'name' => 'Меню',
'root' => [
'ulClassName' => 'landing-block-node-menu navbar-nav',
'liClassName' => 'landing-block-node-menu-item nav-item',
'aClassName' => 'landing-block-node-menu-link nav-link',
],
'children' => [
'ulClassName' => 'landing-block-node-menu navbar-nav',
'liClassName' => 'landing-block-node-menu-item nav-item',
'aClassName' => 'landing-block-node-menu-link nav-link',
],
'nodes' => [
'.landing-block-node-menu-link' => [
'name' => 'Ссылка',
'type' => 'link',
],
],
],
]
Основные поля:
- ключ массива
.landing-block-node-menu— селектор корневого<ul> item— селектор элементов<li>name— название меню в интерфейсеroot— классы для корневого уровня меню:ulClassNameдля контейнера<ul>liClassNameдля пунктов<li>aClassNameдля ссылок<a>
children— классы для дочерних уровней меню:ulClassNameдля вложенного<ul>liClassNameдля вложенных<li>,aClassNameдля ссылок<a>в дочерних пунктах
nodes— редактируемые элементы внутри пункта меню, например, ссылка
В одном манифесте можно описать несколько многоуровневых меню, то есть несколько корневых селекторов в menu.
Ключ assets
Ключ assets задает JS- и CSS-ресурсы, которые подключаются при добавлении блока на страницу.
css— внешние CSS-файлыjs— внешние JS-файлыext— JS-расширения ядра Битрикс
Если один и тот же файл уже подключен другим блоком, повторно он не добавляется.
Ключ ext используется для подключения библиотек ядра. Подключать следует только поддерживаемые расширения, доступные в окружении блока.
Поддерживаются:
landing_form— логика и интерфейсы для блоков формlanding_carousel— логика карусели/слайдера для карточек и изображенийlanding_google_maps_new— интеграция с картами Google в актуальном сценарииlanding_map— базовая логика карт в блокахlanding_countdown— таймер обратного отсчетаlanding_gallery_cards— галерея карточек/изображенийlanding_chat— чатовые сценарии в лендингах
Для репозиторных блоков дополнительно используется расширение для Vue-виджетов landing.widgetvue.
Если скрипт использует библиотеки, которые загружаются ядром, инициализацию лучше оборачивать в BX.ready(...), чтобы код выполнялся после системных подключений:
BX.ready(function () {
console.log($(window));
});
Анимация
Чтобы анимация работала в штатном режиме:
- у ноды должен быть класс
js-animation - в
styleдля этой ноды должен быть указан типanimation - при необходимости можно сразу добавить класс эффекта, например,
fadeIn