Зарегистрировать шаблон в мастере создания сайта landing.demos.register

Выберите инструмент для разработки с AI-агентом:

  • используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
  • используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации

Scope: landing

Кто может выполнять метод: пользователь с правом Просмотр в разделе Сайты

Метод landing.demos.register регистрирует пользовательский шаблон в мастере создания сайта и страниц.

Метод обновляет шаблон, если он уже существует с этим же кодом для текущего приложения. Если не существует — создает новый.

Параметры метода

Обязательные параметры отмечены *

Название
тип

Описание

data*
object | array

Данные шаблона.

Обычно передается результат метода landing.site.fullExport.

Метод принимает как экспорт сайта с items, так и массив отдельных элементов шаблона подробнее

params
object

Дополнительные параметры регистрации подробнее

Тип data

Обязательные параметры отмечены *

Название
тип

Описание

charset
string

Кодировка экспортируемого шаблона

code*
string

Внешний код шаблона

site_code
string

Код сайта (путь)

name
string

Название шаблона

description
string | null

Описание шаблона

type
string

Тип шаблона.

Возможные значения:

  • page — шаблоны для страниц
  • store — шаблоны для магазинов
  • knowledge — шаблоны для баз знаний
  • group — шаблоны для групп
  • mainpage — шаблоны для главных страниц

tpl_type
string

Тип использования шаблона в мастере.

Возможные значения:

  • S — шаблон сайта
  • P — шаблон страницы

fields
object

Поля сайта из экспорта подробнее

folders
array | object

Папки из экспорта подробнее

items
object

Карта страниц шаблона в формате { "код_страницы": items } подробнее

layout
array | object

Данные layout из экспорта подробнее

preview
string

Ссылка на preview 1x

preview2x
string

Ссылка на preview 2x

preview3x
string

Ссылка на preview 3x

preview_url
string

Ссылка на предпросмотр

show_in_list
string

Признак показа в списке (Y/N)

syspages
array | object

Системные страницы из экспорта подробнее

version
integer

Версия формата экспорта

Тип элемента data.items

Обязательные параметры отмечены *

Название
тип

Описание

old_id
string | integer

Исходный идентификатор страницы

code*
string

Внешний код страницы

name
string

Название страницы

description
string | null

Описание страницы

type
string

Тип страницы.

Возможные значения:

  • page — шаблоны для страниц
  • store — шаблоны для магазинов
  • knowledge — шаблоны для баз знаний
  • group — шаблоны для групп
  • mainpage — шаблоны для главных страниц

tpl_type
string

Тип использования шаблона в мастере.

Возможные значения:

  • S — шаблон сайта
  • P — шаблон страницы

version
integer

Версия формата страницы

fields
object

Поля страницы из экспорта подробнее.

Коды fields.ADDITIONAL_FIELDS смотрите в разделе Дополнительные поля страницы

layout
array | object

Layout страницы из экспорта подробнее

items
object | array

Блоки страницы подробнее

preview
string

Ссылка на preview 1x

preview2x
string

Ссылка на preview 2x

preview3x
string

Ссылка на preview 3x

preview_url
string

Ссылка на предпросмотр

show_in_list
string

Признак показа в списке (Y/N)

Тип элемента data.items.items

Название
тип

Описание

code
string

Код блока

access
string

Уровень доступа к блоку

anchor
string

Якорь блока

old_id
integer

Исходный идентификатор блока

cards
object

Карточки блока

nodes
object

Узлы блока

style
object

Стили блока

attrs
object

Атрибуты блока

Параметр params

Название
тип

Описание

site_template_id
string

Идентификатор шаблона сайта главного модуля.

Используется в коробочных версиях

lang
object

Локализация основных фраз шаблона.

Подробности в статье Локализация шаблона

lang_original
string

Код исходного языка для массива lang

Примеры кода

Как использовать примеры в документации

Пример регистрации шаблона, где:

  • data — структура шаблона для регистрации
  • data в примерах предварительно получен методом landing.site.fullExport
curl -X POST \
          -H "Content-Type: application/json" \
          -d '{
            "data": {
              "charset": "UTF-8",
              "code": "ftmlt",
              "site_code": "/ftmlt/",
              "name": "Бизнес",
              "description": null,
              "type": "page",
              "fields": {
                "TITLE": "Бизнес",
                "LANDING_ID_INDEX": "0",
                "LANDING_ID_404": "0",
                "ADDITIONAL_FIELDS": {}
              },
              "folders": [],
              "items": {
                "ftmlt": {
                  "old_id": "16",
                  "code": "ftmlt",
                  "name": "Бизнес",
                  "description": null,
                  "preview": "",
                  "preview2x": "",
                  "preview3x": "",
                  "preview_url": "",
                  "show_in_list": "Y",
                  "type": "page",
                  "version": 3,
                  "fields": {
                    "TITLE": "Бизнес"
                  },
                  "layout": [],
                  "items": {}
                }
              },
              "layout": [],
              "preview": "",
              "preview2x": "",
              "preview3x": "",
              "preview_url": "",
              "show_in_list": "Y",
              "syspages": [],
              "version": 3
            }
          }' \
          "https://**put.your-domain-here**/rest/**user_id**/**webhook_code**/landing.demos.register.json"
        
curl -X POST \
          -H "Content-Type: application/json" \
          -d '{
            "data": {
              "charset": "UTF-8",
              "code": "ftmlt",
              "site_code": "/ftmlt/",
              "name": "Бизнес",
              "description": null,
              "type": "page",
              "fields": {
                "TITLE": "Бизнес",
                "LANDING_ID_INDEX": "0",
                "LANDING_ID_404": "0",
                "ADDITIONAL_FIELDS": {}
              },
              "folders": [],
              "items": {
                "ftmlt": {
                  "old_id": "16",
                  "code": "ftmlt",
                  "name": "Бизнес",
                  "description": null,
                  "preview": "",
                  "preview2x": "",
                  "preview3x": "",
                  "preview_url": "",
                  "show_in_list": "Y",
                  "type": "page",
                  "version": 3,
                  "fields": {
                    "TITLE": "Бизнес"
                  },
                  "layout": [],
                  "items": {}
                }
              },
              "layout": [],
              "preview": "",
              "preview2x": "",
              "preview3x": "",
              "preview_url": "",
              "show_in_list": "Y",
              "syspages": [],
              "version": 3
            },
            "auth": "**put_access_token_here**"
          }' \
          "https://**put.your-domain-here**/rest/landing.demos.register.json"
        
try
        {
        	const data = {
        		charset: 'UTF-8',
        		code: 'ftmlt',
        		site_code: '/ftmlt/',
        		name: 'Бизнес',
        		description: null,
        		type: 'page',
        		fields: {
        			TITLE: 'Бизнес',
        			LANDING_ID_INDEX: '0',
        			LANDING_ID_404: '0',
        			ADDITIONAL_FIELDS: {}
        		},
        		folders: [],
        		items: {
        			ftmlt: {
        				old_id: '16',
        				code: 'ftmlt',
        				name: 'Бизнес',
        				description: null,
        				preview: '',
        				preview2x: '',
        				preview3x: '',
        				preview_url: '',
        				show_in_list: 'Y',
        				type: 'page',
        				version: 3,
        				fields: {
        					TITLE: 'Бизнес'
        				},
        				layout: [],
        				items: {}
        			}
        		},
        		layout: [],
        		preview: '',
        		preview2x: '',
        		preview3x: '',
        		preview_url: '',
        		show_in_list: 'Y',
        		syspages: [],
        		version: 3
        	};
        
        	const response = await $b24.callMethod(
        		'landing.demos.register',
        		{
        			data
        		}
        	);
        
        	console.info(response.getData().result);
        }
        catch (error)
        {
        	console.error(error);
        }
        
try {
            $data = [
                'charset' => 'UTF-8',
                'code' => 'ftmlt',
                'site_code' => '/ftmlt/',
                'name' => 'Бизнес',
                'description' => null,
                'type' => 'page',
                'fields' => [
                    'TITLE' => 'Бизнес',
                    'LANDING_ID_INDEX' => '0',
                    'LANDING_ID_404' => '0',
                    'ADDITIONAL_FIELDS' => [],
                ],
                'folders' => [],
                'items' => [
                    'ftmlt' => [
                        'old_id' => '16',
                        'code' => 'ftmlt',
                        'name' => 'Бизнес',
                        'description' => null,
                        'preview' => '',
                        'preview2x' => '',
                        'preview3x' => '',
                        'preview_url' => '',
                        'show_in_list' => 'Y',
                        'type' => 'page',
                        'version' => 3,
                        'fields' => [
                            'TITLE' => 'Бизнес',
                        ],
                        'layout' => [],
                        'items' => [],
                    ],
                ],
                'layout' => [],
                'preview' => '',
                'preview2x' => '',
                'preview3x' => '',
                'preview_url' => '',
                'show_in_list' => 'Y',
                'syspages' => [],
                'version' => 3,
            ];
        
            $response = $b24Service
                ->core
                ->call(
                    'landing.demos.register',
                    [
                        'data' => $data,
                    ]
                );
        
            $result = $response
                ->getResponseData()
                ->getResult();
        
            echo 'Success: ' . print_r($result, true);
        } catch (Throwable $e) {
            error_log($e->getMessage());
            echo 'Error registering demo: ' . $e->getMessage();
        }
        
BX24.callMethod(
            'landing.demos.register',
            {
                data: {
                    charset: 'UTF-8',
                    code: 'ftmlt',
                    site_code: '/ftmlt/',
                    name: 'Бизнес',
                    description: null,
                    type: 'page',
                    fields: {
                        TITLE: 'Бизнес',
                        LANDING_ID_INDEX: '0',
                        LANDING_ID_404: '0',
                        ADDITIONAL_FIELDS: {}
                    },
                    folders: [],
                    items: {
                        ftmlt: {
                            old_id: '16',
                            code: 'ftmlt',
                            name: 'Бизнес',
                            description: null,
                            preview: '',
                            preview2x: '',
                            preview3x: '',
                            preview_url: '',
                            show_in_list: 'Y',
                            type: 'page',
                            version: 3,
                            fields: {
                                TITLE: 'Бизнес'
                            },
                            layout: [],
                            items: {}
                        }
                    },
                    layout: [],
                    preview: '',
                    preview2x: '',
                    preview3x: '',
                    preview_url: '',
                    show_in_list: 'Y',
                    syspages: [],
                    version: 3
                }
            },
            function(result)
            {
                if (result.error())
                {
                    console.error(result.error());
                }
                else
                {
                    console.info(result.data());
                }
            }
        );
        
require_once('crest.php');
        
        $data = [
            'charset' => 'UTF-8',
            'code' => 'ftmlt',
            'site_code' => '/ftmlt/',
            'name' => 'Бизнес',
            'description' => null,
            'type' => 'page',
            'fields' => [
                'TITLE' => 'Бизнес',
                'LANDING_ID_INDEX' => '0',
                'LANDING_ID_404' => '0',
                'ADDITIONAL_FIELDS' => [],
            ],
            'folders' => [],
            'items' => [
                'ftmlt' => [
                    'old_id' => '16',
                    'code' => 'ftmlt',
                    'name' => 'Бизнес',
                    'description' => null,
                    'preview' => '',
                    'preview2x' => '',
                    'preview3x' => '',
                    'preview_url' => '',
                    'show_in_list' => 'Y',
                    'type' => 'page',
                    'version' => 3,
                    'fields' => [
                        'TITLE' => 'Бизнес',
                    ],
                    'layout' => [],
                    'items' => [],
                ],
            ],
            'layout' => [],
            'preview' => '',
            'preview2x' => '',
            'preview3x' => '',
            'preview_url' => '',
            'show_in_list' => 'Y',
            'syspages' => [],
            'version' => 3,
        ];
        
        $result = CRest::call(
            'landing.demos.register',
            [
                'data' => $data,
            ]
        );
        
        if (isset($result['error']))
        {
            echo 'Ошибка: ' . $result['error_description'];
        }
        else
        {
            echo '<pre>';
            print_r($result['result']);
            echo '</pre>';
        }
        

Обработка ответа

HTTP-статус: 200

{
            "result": [5, 7],
            "time": {
                "start": 1774611129,
                "finish": 1774611129.843163,
                "duration": 0.843163013458252,
                "processing": 0,
                "date_start": "2026-03-27T14:32:09+03:00",
                "date_finish": "2026-03-27T14:32:09+03:00",
                "operating_reset_at": 1774611729,
                "operating": 0
            }
        }
        

Возвращаемые данные

Название
тип

Описание

result
integer[]

Массив идентификаторов шаблонов, которые были созданы или обновлены

time
time

Информация о времени выполнения запроса

Обработка ошибок

HTTP-статус: 400

{
            "error": "ERROR_ARGUMENT",
            "error_description": "The value of an argument 'data' has an invalid type",
            "argument": "data"
        }
        
{
            "error": "REGISTER_ERROR_DATA",
            "error_description": "Данные пусты или некорректны"
        }
        

Название
тип

Описание

error
string

Строковый код ошибки. Может состоять из цифр, латинских букв и знака подчеркивания

error_description
error_description

Текстовое описание ошибки. Описание не предназначено для показа конечному пользователю в необработанном виде

Возможные коды ошибок

Код

Описание

Значение

ERROR_ARGUMENT

The value of an argument 'data' has an invalid type

Параметр data передан в неверном типе

REGISTER_ERROR_DATA

Данные пусты или некорректны

Параметр data пустой или невалидный

CONTENT_IS_BAD

Содержимое определено как небезопасное. Определить небезопасные части можно через метод landing.repo.checkcontent

В переданном шаблоне найден небезопасный контент

BX_EMPTY_REQUIRED

Не заполнено обязательное поле "Внешний код"

В data не заполнен code (внешний код) у шаблона/элемента

ACCESS_DENIED

Access denied!

Недостаточно прав для вызова метода

Статусы и коды системных ошибок

HTTP-статус: 20x, 40x, 50x

Описанные ниже ошибки могут возникнуть при вызове любого метода

Статус

Код
Текст ошибки

Описание

500

INTERNAL_SERVER_ERROR
Internal server error

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

503

QUERY_LIMIT_EXCEEDED
Too many requests

Превышен лимит на интенсивность запросов

429

OPERATION_TIME_LIMIT
Method is blocked due to operation time limit

Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически через 10 минут

405

ERROR_BATCH_METHOD_NOT_ALLOWED
Method is not allowed for batch usage

Текущий метод не разрешен для вызова с помощью batch

400

ERROR_BATCH_LENGTH_EXCEEDED
Max batch length exceeded

Превышена максимальная длина параметров, переданных в метод batch

401

NO_AUTH_FOUND
Wrong authorization data

Неверный access-токен или код вебхука

400

INVALID_REQUEST
Https required

Для вызовов методов требуется использовать протокол HTTPS

503

OVERLOAD_LIMIT
REST API is blocked due to overload

REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка, для снятия необходимо обращаться в техническую поддержку Битрикс24

403

ACCESS_DENIED
REST API is available only on commercial plans

REST API доступен только на коммерческих планах

403

INVALID_CREDENTIALS
Invalid request credentials

У пользователя, с чьим access-токеном или вебхуком был вызван метод, не хватает прав

404

ERROR_MANIFEST_IS_NOT_AVAILABLE
Manifest is not available

Манифест недоступен

403

insufficient_scope
The request requires higher privileges than provided by the webhook token

Запрос требует более высоких привилегий, чем предоставляет токен вебхука

401

expired_token
The access token provided has expired

Предоставленный access-токен доступа истек

403

user_access_error
The user does not have access to the application

Пользователь не имеет доступа к приложению. Это означает, что приложение установлено, но администратор портала разрешил доступ к этому приложению только конкретным пользователям

500

PORTAL_DELETED
Portal was deleted

Публичная часть сайта закрыта. Чтобы открыть публичную часть сайта на коробочной установке отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта

Продолжите изучение