- Введение в события
Plugin/Events/System
- Событие
onAfterInitialise
- Событие
onAfterRoute
- Событие
onAfterDispatch
- Событие
onBeforeRender
- Событие
onAfterRender
- Событие
onBeforeCompileHead
- Пример использования
Plugin/Events/System
Введение в события Plugin/Events/System
.
Эта тема предназначена для "глобальных" системных событий, включая те, которые запускаются при каждой загрузке страницы (onAfterInitialise
, onAfterRoute
, onAfterDispatch
, onAfterRender
). Посетите раздел События плагина для получения полного списка доступных событий ядра.
Событие onAfterInitialise
.
Описание
Событие onAfterInitialise
запускается после загрузки фреймворка и вызова метода инициализации приложения.
Параметры
Отсутствуют.
Возвращаемое значение
Отсутствует.
Используется в файлах
index.php
administrator/index.php
Событие onAfterRoute
.
Описание
Событие onAfterRoute
запускается после загрузки и инициализации фреймворка и маршрутизатора, который передал клиентский запрос.
Маршрутизация - это процесс изучения среды запроса для определения того, какой компонент должен получить запрос. Дополнительные параметры компонента затем устанавливаются в объекте запроса, который будет обрабатываться при выполнении запроса.
Когда срабатывает событие onAfterRoute
, маршрутизатор разобрал маршрут и поместил параметры запроса в JInput
для получения и использованием их приложением.
Осторожно:
Плохая практика - создавать объект Document
внутри этого и более ранних событий запущенного плагина. Не используйте Factory::getApplication()->getDocument()
, Factory::getDocument();
или методы HTMLHelper/JHtml
в функции onAfterRoute()
, которые создают Document
слишком рано (например, для загрузки скриптов или таблиц стилей). См. также комментарии github.com/joomla/joomla-cms/pull/25669#issuecomment-513574075 и github.com/joomla/joomla-cms/pull/25669#issuecomment-513574282
Параметры
Отсутствуют.
Возвращаемое значение
Отсутствует.
Используется в файлах
index.php
administrator/index.php
Событие onAfterDispatch
.
Описание
Событие onAfterDispatch
запускается после того, как фреймворк выполнил диспетчирование приложения.
Диспетчеризация - это процесс извлечения параметров из объекта запроса и сопоставления их с компонентом. Если компонент не существует, он определяет компонент по умолчанию для диспетчеризации.
При срабатывании события onAfterDispatch
вывод компонента доступен в буфере документа.
Параметры
Отсутствуют.
Возвращаемое значение
Отсутствует.
Используется в файлах
index.php
administrator/index.php
Событие onBeforeRender
.
Описание
Событие onBeforeRender
запускается непосредственно перед тем, как фреймворк выполнил рендеринг приложения.
Параметры
Отсутствуют.
Возвращаемое значение
Отсутствует.
Используется в файлах
includes/application.php
administrator/includes/application.php
Событие onAfterRender
.
Описание
Событие onAfterRender
запускается после того, как фреймворк отобразил приложение.
Когда событие onAfterRender
срабатывает, вывод приложения доступен в буфере ответа.
Параметры
Отсутствуют.
Возвращаемое значение
Отсутствует.
Используется в файлах
- Joomla 4
Событие onBeforeCompileHead
.
Описание
Событие onBeforeCompileHead
запускается перед тем, как фреймворк создает раздел Head
документа.
Параметры
Отсутствуют.
Возвращаемое значение
Отсутствует.
Используется в файлах
Пример использования Plugin/Events/System
.
Это пример системного плагина. Обратите внимание, что поскольку системные плагины загружаются перед любой другой группой событий, они также могут содержать любое другое событие.
Следующий класс будет расположен в файле /plugins/system/example/example.php
.
<?php
defined('_JEXEC') or die;
/**
* Example system plugin
*
* @since 1.0
*/
class plgSystemExample extends JPlugin
{
/**
* Constructor.
*
* @param object &$subject Объект для наблюдения.
* @param array $config Необязательный ассоциативный массив настроек конфигурации.
*
* @since 1.0
*/
public function __construct(&$subject, $config)
{
// Calling the parent Constructor
parent::__construct($subject, $config);
// Выполните дополнительную инициализацию в этом конструкторе, если это необходимо
}
/**
* Слушатель для события `onAfterInitialise`.
*
* @return void
*
* @since 1.0
*/
public function onAfterInitialise()
{
// Сделать что-нибудь onAfterInitialise
}
/**
* Слушатель для события `onAfterRoute`.
*
* @return void
*
* @since 1.0
*/
public function onAfterRoute()
{
// Сделать что-нибудь onAfterRoute
}
/**
* Слушатель для события `onAfterDispatch`.
*
* @return void
*
* @since 1.0
*/
public function onAfterDispatch()
{
// Сделать что-нибудь onAfterDispatch
}
/**
* Слушатель для события `onAfterRender`.
*
* @return void
*
* @since 1.0
*/
public function onAfterRender()
{
// Сделать что-нибудь onAfterRender
}
}
Установочный файл XML плагина будет расположен по адресу /plugins/system/example/example.xml
и будет определен следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.7" type="plugin" group="system">
<name>plg_system_example</name>
<author>Author</author>
<creationDate>Month 2008</creationDate>
<copyright>Copyright (C) 2008 Holder. All rights reserved.</copyright>
<license>GNU General Public License</license>
<authorEmail>email</authorEmail>
<authorUrl>url</authorUrl>
<version>1.0.1</version>
<description>Пример системного плагина</description>
<files>
<filename plugin="example">example.php</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field
name="example"
type="text"
default=""
label="Example"
description="Пример текстового параметра"
/>
</fieldset>
</fields>
</config>
</extension>
Другие примеры системных плагинов можно найти здесь: https://github.com/joomla/joomla-cms/tree/staging/plugins/system.
Перевод с английского официальной документации Joomla:
https://docs.joomla.org/Plugin/Events/System
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)