This is documentation for Plesk Onyx.
Go to documentation for the latest version, Plesk Obsidian.
Вставка компонентов Активного списка
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,
],
],
],
];
}
}