# Вставка компонентов Активного списка

Plesk SDK API позволяет встраивать информацию (в настоящий момент только персональные услуги) в некоторые элементы существующих объектов Активного списка. Для этого необходимо создать интерфейс pm_Hook_ActiveList. Он содержит следующие методы:

- getItemServices($controller, $action, $itemId) возвращает массив параметров конфигурации службы, которые будут встроены в элемент с `id=$itemId` списка на странице `/$contorller/$action`. Параметры конфигурации службы:
  - `title` — название службы.
  - `icon` — значок службы.
  - `link` — ссылка на службу (необязательный параметр).
  - `toolbar` — массив инструментов службы (необязательный параметр).
  - `messages` — массив сообщений службы (необязательный параметр).

Чтобы проиллюстрировать этот подход, Plesk предлагает следующий пример проекта: https://github.com/plesk/ext-active-list-hook

## Пример: Добавление персональных услуг в активный список «Сайты и домены»

`src/plib/hooks/ActiveList.php`

    <?php
    class Modules_<YourExtensionName>_ActiveList extends pm_Hook_ActiveList
    {
        public function getItemServices($controller, $action, $itemId)
        {
            if ($controller !== 'web' || ($action !== 'view' && $action !== 'overview')) {
                return [];
            }

            return [
                [
                    'icon' => pm_Context::getBaseUrl() . 'images/icon-service1.png',
                    'title' => pm_Locale::lmsg('service1Title'),
                    'link' => pm_Context::getActionUrl('service1', 'index') . '/id/' . $itemId,
                    'toolbar' => [
                        [
                            'title' => pm_Locale::lmsg('action1Title'),
                            'link' => pm_Context::getActionUrl('service1', 'action1') . '/id/' . $itemId,
                        ],
                        [
                            'title' => pm_Locale::lmsg('action2Title'),
                            'link' => pm_Context::getActionUrl('service1', 'action2') . '/id/' . $itemId,
                        ],
                    ],
                ],
                [
                    'icon' => pm_Context::getBaseUrl() . 'images/icon-service2.png',
                    'title' => pm_Locale::lmsg('service2Title'),
                    'link' => pm_Context::getActionUrl('service2', 'index') . '/id/' . $itemId,
                    'toolbar' => [
                        [
                            'title' => pm_Locale::lmsg('action3Title'),
                            'link' => pm_Context::getActionUrl('service2', 'action3') . '/id/' . $itemId,
                        ],
                    ],
                    'messages' => [
                        [
                            'icon' => pm_Context::getBaseUrl() . 'images/attention.png',
                            'info' => pm_Locale::lmsg('serviceMessage1'),
                            'noEscape' => true,
                        ],
                    ],
                ],
            ];
        }
    }