В Joomla 5 плагины подписываются на события с помощью интерфейса Joomla\Event\SubscriberInterface
в нём всего один метод — getSubscribedEvents()
, который должен вернуть массив соответствий событий, которые будет прослушивать этот плагин и их обработчиков.
Например, в плагине «Content — Email Cloaking» этот метод выглядит следующим образом:
public static function getSubscribedEvents(): array
{
return ['onContentPrepare' => 'onContentPrepare'];
}
Ключи массива — имена событий, а элементы масива — имена методов класса плагина.
Но если посмотреть на этот же метод плагина «Behaviour — Backward Compatibility»:
public static function getSubscribedEvents(): array
{
/**
* Note that onAfterInitialise must be the first handlers to run for this
* plugin to operate as expected. These handlers load compatibility code which
* might be needed by other plugins
*/
return [
'onAfterInitialiseDocument' => ['onAfterInitialiseDocument', Priority::HIGH],
];
}
То видим что в нём элементы массива - тоже массивы, первый элементом которых - имя метода, второй - приоритет Joomla\Event\Priority::HIGH
. И комментарий объясняет что событие onAfterInitialise
этим плагином должно обрабатываться раньше чем другими плагинами, потому что этот плагин загружает код, необходимый для работы других плагинов.
Всего доступно семь уровней приоритета:
public const MIN = -3;
public const LOW = -2;
public const BELOW_NORMAL = -1;
public const NORMAL = 0;
public const ABOVE_NORMAL = 1;
public const HIGH = 2;
public const MAX = 3;
По-умолчанию устанавливается «нормальный» приоритет.
Если вы пишете свой плагин, то можете предоставить администратору сайта возможность настраивать приритеты для событий в настройках плагина.