Изменить стили блока landing.block.updateStyles

Scope: landing

Кто может выполнять метод: пользователь с правом «редактирования» сайта

Метод landing.block.updateStyles обновляет CSS-классы и инлайновые стили элементов блока в черновике страницы.

Если страница уже опубликована, изменения станут видны посетителям после повторной публикации через интерфейс или методом landing.landing.publication.

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

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

Название
тип

Описание

lid*
integer

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

Идентификатор страницы можно получить методом landing.landing.getList

block*
integer

Идентификатор блока в версии страницы для редактирования.

Идентификатор блока можно получить методом landing.block.getlist с параметром params.edit_mode = 1. Если передать идентификатор блока из опубликованной версии страницы, метод может вернуть ошибку

data*
object

Объект формата:

{
            "<селектор>": {
                "classList": [],
                "affect": [],
                "style": {}
            }
        }
        

где:

  • <селектор> — CSS-селектор из манифеста блока или #wrapper,
  • classList — список CSS-классов элемента после обновления,
  • affect — список CSS-свойств, которые нужно удалить у вложенных элементов,
  • style — набор инлайновых стилей самого элемента.

Подробное описание значения селектора приведено ниже

preventHistory
boolean

Если передать true, метод не добавит изменение в историю страницы.

По умолчанию false

Параметр data

Ключ
тип

Описание

<селектор>
string | array | object

CSS-селектор из раздела style манифеста блока или специальный селектор #wrapper для оболочки блока.

Если один и тот же селектор встречается несколько раз, можно указать позицию через @, например .landing-block-node-text@1. Позиции нумеруются с 0. Если позиция не указана, метод применяет изменения ко всем найденным элементам с этим селектором.

Формат значения зависит от передаваемых данных (подробное описание)

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

Значение селектора

Название
тип

Описание

classList
array

Список CSS-классов элемента после обновления.

Метод заменяет атрибут class целиком, а не добавляет классы к текущему списку

affect
array

Список CSS-свойств, которые нужно удалить из инлайновых стилей всех вложенных элементов найденного узла. Например, ["text-align", "color"]

style
object

Набор инлайновых стилей для найденного элемента в формате { "css-property": "value" }. Метод объединяет переданные значения с текущим атрибутом style.

Если поле не передано и у элемента нет background-image, текущий инлайновый стиль остается без изменений. Если background-image уже задан, метод сохраняет только это свойство, а остальные инлайновые стили удаляет

Вместо объекта можно передать строку с одним классом или массив классов напрямую. Такой формат эквивалентен полю classList.

Важно

Если не включить в classList системные классы блока, например landing-block-node-text, элемент может перестать корректно редактироваться через интерфейс. Метод полностью заменяет список классов

Примеры кода

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

curl -X POST \
          -H "Content-Type: application/json" \
          -d '{
            "lid": 313,
            "block": 6134,
            "data": {
              ".landing-block-node-text": {
                "classList": [
                  "landing-block-node-text",
                  "g-color-white",
                  "text-right"
                ],
                "affect": [
                  "text-align",
                  "color"
                ],
                "style": {
                  "font-weight": "700"
                }
              }
            }
          }' \
          "https://**put.your-domain-here**/rest/**user_id**/**webhook_code**/landing.block.updateStyles.json"
        
curl -X POST \
          -H "Content-Type: application/json" \
          -d '{
            "lid": 313,
            "block": 6134,
            "data": {
              ".landing-block-node-text": {
                "classList": [
                  "landing-block-node-text",
                  "g-color-white",
                  "text-right"
                ],
                "affect": [
                  "text-align",
                  "color"
                ],
                "style": {
                  "font-weight": "700"
                }
              }
            },
            "auth": "**put_access_token_here**"
          }' \
          "https://**put.your-domain-here**/rest/landing.block.updateStyles.json"
        
try
        {
            const response = await $b24.callMethod(
                'landing.block.updateStyles',
                {
                    lid: 313,
                    block: 6134,
                    data: {
                        '.landing-block-node-text': {
                            classList: [
                                'landing-block-node-text',
                                'g-color-white',
                                'text-right'
                            ],
                            affect: [
                                'text-align',
                                'color'
                            ],
                            style: {
                                'font-weight': '700'
                            }
                        }
                    }
                }
            );
        
            const result = response.getData().result;
            console.info(result);
        }
        catch (error)
        {
            console.error(error);
        }
        
try {
            $response = $b24Service
                ->core
                ->call(
                    'landing.block.updateStyles',
                    [
                        'lid' => 313,
                        'block' => 6134,
                        'data' => [
                            '.landing-block-node-text' => [
                                'classList' => [
                                    'landing-block-node-text',
                                    'g-color-white',
                                    'text-right',
                                ],
                                'affect' => [
                                    'text-align',
                                    'color',
                                ],
                                'style' => [
                                    'font-weight' => '700',
                                ],
                            ],
                        ],
                    ]
                );
        
            $result = $response
                ->getResponseData()
                ->getResult();
        
            echo 'Success: ' . var_export($result, true);
        } catch (Throwable $e) {
            error_log($e->getMessage());
            echo 'Error updating block styles: ' . $e->getMessage();
        }
        
BX24.callMethod(
            'landing.block.updateStyles',
            {
                lid: 313,
                block: 6134,
                data: {
                    '.landing-block-node-text': {
                        classList: [
                            'landing-block-node-text',
                            'g-color-white',
                            'text-right'
                        ],
                        affect: [
                            'text-align',
                            'color'
                        ],
                        style: {
                            'font-weight': '700'
                        }
                    }
                }
            },
            function(result)
            {
                if (result.error())
                {
                    console.error(result.error());
                }
                else
                {
                    console.info(result.data());
                }
            }
        );
        
require_once('crest.php');
        
        $result = CRest::call(
            'landing.block.updateStyles',
            [
                'lid' => 313,
                'block' => 6134,
                'data' => [
                    '.landing-block-node-text' => [
                        'classList' => [
                            'landing-block-node-text',
                            'g-color-white',
                            'text-right',
                        ],
                        'affect' => [
                            'text-align',
                            'color',
                        ],
                        'style' => [
                            'font-weight' => '700',
                        ],
                    ],
                ],
            ]
        );
        
        if (isset($result['error']))
        {
            echo 'Ошибка: ' . $result['error_description'];
        }
        else
        {
            echo '<pre>';
            print_r($result['result']);
            echo '</pre>';
        }
        

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

HTTP-статус: 200

{
            "result": true,
            "time": {
                "start": 1774520356,
                "finish": 1774520356.142134,
                "duration": 0.1421339511871338,
                "processing": 0,
                "date_start": "2026-03-26T13:19:16+03:00",
                "date_finish": "2026-03-26T13:19:16+03:00",
                "operating_reset_at": 1774520956,
                "operating": 0
            }
        }
        

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

Название
тип

Описание

result
boolean

Результат обновления стилей. При успешном выполнении метод возвращает true

time
time

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

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

HTTP-статус: 400

{
            "error": "BLOCK_NOT_FOUND",
            "error_description": "Блок не найден"
        }
        

Название
тип

Описание

error
string

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

error_description
error_description

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

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

Код

Описание

MISSING_PARAMS

Не передан обязательный параметр lid, block или data

ACCESS_DENIED

Недостаточно прав для редактирования сайта

LANDING_NOT_EXIST

Страница с идентификатором lid не найдена или недоступна текущему пользователю

BLOCK_NOT_FOUND

Блок с идентификатором block не найден на странице lid или недоступен в версии страницы для редактирования

TYPE_ERROR

Передан неверный тип одного из параметров метода, например data в неподходящем формате

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

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

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

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

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

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