Пункт в меню настроек сайта и страницы LANDING_SETTINGS

Scope: landing

Виджет LANDING_SETTINGS добавляет пункт приложения в меню настроек сайта или страницы в режиме редактирования.

Для встраивания в разделе landing используется внутренний метод модуля landing.repo.bind, а не placement.bind.

Встройка не отображается в интерфейсе, пока установка приложения не завершена. Проверьте установку приложения

Куда встраивается виджет

Код встройки

Место

LANDING_SETTINGS

Пункт в меню настроек сайта или страницы

Где находится в интерфейсе

Откройте сайт или страницу в режиме редактирования. В правом верхнем углу перейдите в Возможности сайта > Настройки (⚙️). Пункт приложения с PLACEMENT=LANDING_SETTINGS отображается последним пунктом в левом меню слайдера.

Что получает обработчик

Данные передаются в виде POST-запроса

Array
        (
            [DOMAIN] => example.bitrix24.ru
            [PROTOCOL] => 1
            [LANG] => ru
            [APP_SID] => 0123456789abcdef0123456789abcdef
            [APPLICATION_SCOPE] => crm,placement,landing
            [APPLICATION_TOKEN] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            [AUTH_ID] => 6061e72600631fcd00005a4b00000001f0f1076700000000f69dd5fc643d9ce2fdbc1
            [AUTH_EXPIRES] => 3600
            [REFRESH_ID] => 50e00aa340631fcd00005a4b00000001f0f1071111116580a5b83c2de639ef28c12
            [SERVER_ENDPOINT] => https://oauth.bitrix24.tech/rest/
            [member_id] => abcdef1234567890abcdef1234567890
            [status] => F
            [PLACEMENT] => LANDING_SETTINGS
            [PLACEMENT_OPTIONS] => {"SITE_ID":"30","LID":"30"}
        )
        

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

Параметр
тип

Описание

DOMAIN*
string

Адрес Битрикс24, на котором был вызван обрабтчик виджета

PROTOCOL*
string

Защищенный или не защищенный протокол HTTP:

  • 0 - HTTP
  • 1 - HTTPS

LANG*
string

Язык интерфейса пользователя Битрикс24, который вызвал виджет. Вы можете локализовать язык интерфейса в своём виджете, ориентируясь на это значение

APP_SID
string

Строковый идентификатор приложения, зарегистрировавшего обработчик виджета

AUTH_ID
string

Авторизационный токен OAuth 2, выписанный для пользователя, вызвавшего виджет. Можно использовать для вызовов REST API от лица этого пользователя

AUTH_EXPIRES
integer

Время в секундах, после которого авторизационный токен станет неактуальным

REFRESH_ID
string

Refresh-токен OAuth 2, выписанный для пользователя, вызвавшего виджет. Можно использовать для обновления авторизационного токена от лица этого пользователя

member_id*
string

Уникальный строковый идентификатор Битрикс24, на котором был вызван обработчик виджета.

status
string

Тип приложения, зарегистрировавшего обработчик данного виджета. Принимает значения:

PLACEMENT*
string

Код места встройки виджета. Вы можете использовать один и тот же URL обработчика для всех своих виджетов. Значение, которое Битрикс24 будет сообщать в параметре PLACEMENT, поможет определить, из какого именно места встройки виджета был вызван ваш обработчик в каждом конкретном случае

PLACEMENT_OPTIONS
string

Дополнительные данные в виде JSON-строки, определяющие контекст выполнения виджета. Например, это может быть массив, содержащий числовой идентификатор элемента CRM, в карточке которого был вызван обработчик виджета, и т.д. Параметр PLACEMENT_OPTIONS вместе с параметром PLACEMENT позволяет точно определить, для какого именно места встройки виджета и объекта был вызван обработчик виджета.

Дополнительные данные

Параметр
тип

Описание

APPLICATION_SCOPE
string

Список scope, доступных приложению

APPLICATION_TOKEN
string

Токен приложения для безопасной обработки событий

SERVER_ENDPOINT
string

Адрес сервера авторизации Битрикс24, необходимый для обновления токенов OAuth 2.0

PLACEMENT_OPTIONS

Значение PLACEMENT_OPTIONS передается как JSON-строка с контекстом вызова.

Для LANDING_SETTINGS в контекст передаются ключи:

  • SITE_ID — идентификатор сайта, в настройках которого открыт виджет
  • LID — идентификатор страницы, из режима редактирования которой был вызван виджет

Примеры кода

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

curl -X POST \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -d '{
            "fields": {
              "PLACEMENT": "LANDING_SETTINGS",
              "PLACEMENT_HANDLER": "https://your-domain.com/widgets/landing-settings-handler.php",
              "TITLE": "Мои настройки"
            },
            "auth": "**put_access_token_here**"
          }' \
          https://**put_your_bitrix24_address**/rest/landing.repo.bind
        
try
        {
            const response = await $b24.callMethod(
                'landing.repo.bind',
                {
                    fields: {
                        PLACEMENT: 'LANDING_SETTINGS',
                        PLACEMENT_HANDLER: 'https://your-domain.com/widgets/landing-settings-handler.php',
                        TITLE: 'Мои настройки'
                    }
                }
            );
        
            const result = response.getData().result;
            if (result.error())
                console.error(result.error());
            else
                console.info(result.data());
        }
        catch (error)
        {
            console.error('Error:', error);
        }
        
try {
            $response = $b24Service
                ->core
                ->call(
                    'landing.repo.bind',
                    [
                        'fields' => [
                            'PLACEMENT' => 'LANDING_SETTINGS',
                            'PLACEMENT_HANDLER' => 'https://your-domain.com/widgets/landing-settings-handler.php',
                            'TITLE' => 'Мои настройки',
                        ],
                    ]
                );
        
            $result = $response->getResponseData()->getResult();
            if ($result->error()) {
                error_log($result->error());
            } else {
                echo 'Success: ' . print_r($result->data(), true);
            }
        } catch (Throwable $e) {
            error_log($e->getMessage());
            echo 'Error binding landing settings: ' . $e->getMessage();
        }
        
BX24.callMethod(
            'landing.repo.bind',
            {
                fields: {
                    PLACEMENT: 'LANDING_SETTINGS',
                    PLACEMENT_HANDLER: 'https://your-domain.com/widgets/landing-settings-handler.php',
                    TITLE: 'Мои настройки'
                }
            },
            function(result)
            {
                if (result.error()) {
                    console.error(result.error());
                } else {
                    console.info(result.data());
                }
            }
        );
        
require_once('crest.php');
        
        $result = CRest::call(
            'landing.repo.bind',
            [
                'fields' => [
                    'PLACEMENT' => 'LANDING_SETTINGS',
                    'PLACEMENT_HANDLER' => 'https://your-domain.com/widgets/landing-settings-handler.php',
                    'TITLE' => 'Мои настройки',
                ],
            ]
        );
        
        echo '<PRE>';
        print_r($result);
        echo '</PRE>';
        

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