Node Types
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
Nodes are described in the nodes key of the block manifest. Each node is tied to a CSS selector and defines how a specific element of the block is edited in the interface.
Node Fields
A node has common fields that are used across different types and set the basic configuration of the element in the editor. In addition to these, there are type-dependent fields that work only for specific types.
Common fields:
name— the name of the node in the editing interfacetype— the type of the nodeallowInlineEdit— controls the availability of the node for inline editing. If set tofalse, the node will be unavailable for inline editing but will remain accessible in the block editing formuseInDesigner— controls the participation of the node in the block designer. If set tofalse, the element will be ignored in the block designergroup— grouping of nodes. If multiple nodes in one block are assigned the same value, clicking on any of them will open a common editing form for the group
Fields for specific types:
dimensions— image size parameters forimgcreate2xByDefault— enable the creation of a2xversion by default forimgskipContent— do not modify internal content when saving forlinkextra— description of editable parameters for the component forcomponent
The set of fields depends on the type of node and the specific scenario of the block.
Node Types
text
Text node for headings, paragraphs, and other text elements.
'.landing-block-node-card-title' => [
'name' => 'Heading',
'type' => 'text',
],
<h2 class="landing-block-node-card-title">Company24 video</h2>
img
Image node. It can be a separate <img> tag or a background image for a container, such as <div>.
For this type, it is recommended to set dimensions to control the size of uploaded images and avoid overloading the account with excessively large files.
Supported options for dimensions:
width/height— set to a fixed sizemaxWidth/maxHeight— reduce if the image exceeds the specified sizeminWidth/minHeight— increase until the minimum is reached
'.landing-block-node-card-image' => [
'name' => 'Image',
'type' => 'img',
'dimensions' => [
'maxWidth' => 1920,
'maxHeight' => 1080,
],
],
<img class="landing-block-node-card-image" src="/upload/demo.jpg" alt="">
To display the image, the node must have an image source specified:
- for the
<img>tag, thesrcattribute is used - for a background element, such as
<div>, the CSS propertybackground-imageis used
link
Link node. Allows editing the address and related parameters of the link, such as link text or opening mode.
'.landing-block-node-card-button' => [
'name' => 'Button',
'type' => 'link',
],
<a class="landing-block-node-card-button btn btn-primary" href="/">Read more</a>
If the link wraps non-text content, you can specify skipContent => true to avoid modifying the internal content when saving:
'.landing-block-node-card-button' => [
'name' => 'Button',
'type' => 'link',
'skipContent' => true,
],
icon
Icon node. Typically changes the CSS class that defines the displayed icon.
'.landing-block-node-list-item-icon' => [
'name' => 'Icon',
'type' => 'icon',
],
<i class="landing-block-node-list-item-icon fa fa-check"></i>
embed
Node for embedding media content, such as video.
In a typical scenario for this node, the following fields are used:
src— the address of the embedded content. For<iframe>, it is saved in thesrcattribute; for other embedding options,data-srcmay be usedsource— the original URL, saved in thedata-sourceattributepreview— the URL of the preview image, saved indata-previewratio— the aspect ratio of the container. A utility CSS class of the formembed-responsive-*is used
'.landing-block-node-video' => [
'name' => 'Video',
'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
Map node for blocks with geographical references.
In the current implementation, google provider is used. If the provider is not explicitly specified, google is used by default.
The typical structure of the map value in data-map includes:
center— coordinates of the center of the mapzoom— zoom levelmarkers— an array of markers
'.landing-block-node-map' => [
'name' => 'Map',
'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":"Office",
"description":"New York, center",
"showByDefault":true,
"latLng":{"lat":55.751244,"lng":37.618423}
}
]
}'>
</div>
component
Node for embedding a component into the block structure.
'.landing-block-node-catalog' => [
'name' => 'Catalog',
'type' => 'component',
],
<div class="landing-block-node-catalog"></div>
styleimg
Image node managed through the style settings of the block.
'.landing-block-node-cover' => [
'name' => 'Background Image',
'type' => 'styleimg',
],
<div class="landing-block-node-cover"></div>
Node Grouping
To have multiple nodes open in a single editing form, specify the same group value.
'.landing-block-node-title' => [
'name' => 'Heading',
'type' => 'text',
'group' => 'hero-content',
],
'.landing-block-node-text' => [
'name' => 'Text',
'type' => 'text',
'group' => 'hero-content',
],
'.landing-block-node-button' => [
'name' => 'Button',
'type' => 'link',
// without group: edited separately
],