Для разработчиков

Блоки плагина в карточке заявки

Обновлено

Плагин может добавить в карточку заявки свой блок — например, список товаров из корзины или ссылку на созданную сделку. Блок описывается декларативно: плагин отдаёт структуру, а приложение само её рисует. Вёрстку писать не нужно, и блок автоматически выглядит как остальной интерфейс.

Точка расширения — хук backend_request_view.

Из чего состоит блок

У блока есть заголовок, иконка и набор секций:

$params['data']['shop'] = [
    'id'       => 'shop',
    'title'    => 'Товары корзины',
    'icon'     => 'ShoppingCart',       // имя иконки lucide
    'sections' => [ /* … */ ],
];

Незнакомые типы секций пропускаются молча — старая версия приложения не сломается о блок от нового плагина.

Типы секций

status — строка состояния

['type' => 'status', 'variant' => 'success', 'text' => 'Заказ №1 создан',
 'link' => ['url' => '...', 'label' => 'Открыть в Shop-Script']],

kv — пары «поле — значение»

['type' => 'kv', 'rows' => [['label' => 'Сумма', 'value' => '120,00']]],

items — список объектов с картинками

['type' => 'items', 'items' => [[
    'image' => '...', 'title' => 'Кофеварка', 'subtitle' => 'Артикул',
    'meta' => '1 × 120,00', 'url' => '...', 'note' => 'Товар удалён']]],

actions — кнопки

['type' => 'actions', 'actions' => [[
    'id' => 'createOrder', 'label' => 'Создать заказ', 'url' => '...',
    'variant' => 'default', 'confirm' => 'Точно создать заказ?']]],

Ключ confirm добавляет подтверждение перед действием.

input — поле ввода

Значение приходит в действие полем value.

Как работает кнопка

Действие получает POST с номером заявки (request_id) и идентификатором кнопки (action_id), а отвечает пересобранным блоком:

['success' => true,  'block' => /* блок целиком */]
['success' => false, 'error' => 'Текст ошибки']

Приложение подменяет блок на месте — страница не перезагружается. Поэтому в ответе нужно вернуть весь блок, а не только изменившуюся часть: так после нажатия «Создать заказ» кнопка исчезает, а на её месте появляется строка состояния со ссылкой на заказ.