Типы нод
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Ноды описываются в ключе nodes файла манифеста блока. Каждая нода привязывается к CSS-селектору и задает, как конкретный элемент блока редактируется в интерфейсе.
Поля ноды
У ноды есть общие поля, которые используются у разных типов и задают базовую настройку элемента в редакторе. Отдельно от них есть типозависимые поля, которые работают только для конкретных типов.
Общие поля:
name— название ноды в интерфейсе редактированияtype— тип нодыallowInlineEdit— управление доступностью ноды для инлайн-редактирования. Если передатьfalse, нода будет недоступна для инлайн-редактирования, но останется доступной в форме редактирования блокаuseInDesigner— управление участием ноды в дизайнере блока. Если передатьfalse, элемент будет проигнорирован в дизайнере блокаgroup— группировка нод. Если нескольким нодам в одном блоке задать одинаковое значение, при клике на любую из них откроется общая форма редактирования группы
Поля для отдельных типов:
dimensions— параметры размеров изображения дляimgcreate2xByDefault— включать создание версии2xпо умолчанию дляimgskipContent— не изменять внутренний контент при сохранении дляlinkextra— описание редактируемых параметров компонента дляcomponent
Набор полей зависит от типа ноды и конкретного сценария блока.
Типы нод
text
Текстовая нода для заголовков, абзацев и других текстовых элементов.
'.landing-block-node-card-title' => [
'name' => 'Заголовок',
'type' => 'text',
],
<h2 class="landing-block-node-card-title">Company24 video</h2>
img
Нода изображения. Допускается как отдельный тег <img>, так и фоновое изображение для контейнера, например <div>.
Для этого типа рекомендуется задавать dimensions, чтобы контролировать размер загружаемых изображений и не перегружать портал слишком большими файлами.
Поддерживаются варианты dimensions:
width/height— привести к фиксированному размеруmaxWidth/maxHeight— уменьшать, если изображение больше заданного размераminWidth/minHeight— увеличивать, пока не достигнут минимум
'.landing-block-node-card-image' => [
'name' => 'Изображение',
'type' => 'img',
'dimensions' => [
'maxWidth' => 1920,
'maxHeight' => 1080,
],
],
<img class="landing-block-node-card-image" src="/upload/demo.jpg" alt="">
Чтобы изображение отображалось, у ноды должен быть задан источник изображения:
- для тега
<img>используется атрибутsrc - для фонового элемента, например,
<div>, используется CSS-свойствоbackground-image
link
Нода ссылки. Позволяет редактировать адрес и связанные параметры ссылки, например текст ссылки или режим открытия.
'.landing-block-node-card-button' => [
'name' => 'Кнопка',
'type' => 'link',
],
<a class="landing-block-node-card-button btn btn-primary" href="/">Read more</a>
Если ссылка оборачивает нетекстовый контент, можно указать skipContent => true, чтобы не изменять внутреннее содержимое при сохранении:
'.landing-block-node-card-button' => [
'name' => 'Кнопка',
'type' => 'link',
'skipContent' => true,
],
icon
Нода иконки. Обычно меняет CSS-класс, который определяет отображаемую иконку.
'.landing-block-node-list-item-icon' => [
'name' => 'Иконка',
'type' => 'icon',
],
<i class="landing-block-node-list-item-icon fa fa-check"></i>
embed
Нода встраиваемого медиа-контента, например видео.
В типовом сценарии для этой ноды используются поля:
src— адрес встраиваемого контента. Для<iframe>сохраняется в атрибутsrc, для других вариантов встраивания может использоватьсяdata-srcsource— исходный URL, сохраняется в атрибутdata-sourcepreview— URL превью-изображения, сохраняется вdata-previewratio— соотношение сторон контейнера. Используется служебный CSS-класс видаembed-responsive-*
'.landing-block-node-video' => [
'name' => 'Видео',
'type' => 'embed',
],
<div class="embed-responsive embed-responsive-16by9">
<iframe
class="landing-block-node-video"
width="100%"
src="//www.youtube.com/embed/q4d8g9Dn3ww"
data-source="https://www.youtube.com/watch?v=q4d8g9Dn3ww"
data-preview="https://example.com/preview.jpg"
frameborder="0"
allowfullscreen>
</iframe>
</div>
map
Нода карты для блоков с географической привязкой.
В текущей реализации используются провайдеры google и yandex. Если провайдер явно не задан, используется google по умолчанию.
Типовая структура значения карты в data-map включает:
center— координаты центра картыzoom— уровень масштабированияmarkers— массив маркеров
'.landing-block-node-map' => [
'name' => 'Карта',
'type' => 'map',
],
<div
class="landing-block-node-map"
data-map-provider="google"
data-map='{
"center":{"lat":55.751244,"lng":37.618423},
"zoom":12,
"markers":[
{
"title":"Офис",
"description":"Москва, центр",
"showByDefault":true,
"latLng":{"lat":55.751244,"lng":37.618423}
}
]
}'>
</div>
component
Нода для встраивания компонента в структуру блока.
'.landing-block-node-catalog' => [
'name' => 'Каталог',
'type' => 'component',
],
<div class="landing-block-node-catalog"></div>
styleimg
Нода изображения, которым управляют через стилевые настройки блока.
'.landing-block-node-cover' => [
'name' => 'Фоновое изображение',
'type' => 'styleimg',
],
<div class="landing-block-node-cover"></div>
Группировка нод
Чтобы несколько нод открывались в одной форме редактирования, укажите одинаковое значение group.
'.landing-block-node-title' => [
'name' => 'Заголовок',
'type' => 'text',
'group' => 'hero-content',
],
'.landing-block-node-text' => [
'name' => 'Текст',
'type' => 'text',
'group' => 'hero-content',
],
'.landing-block-node-button' => [
'name' => 'Кнопка',
'type' => 'link',
// без group: редактируется отдельно
],