Общая информация о плагинах

плагины joomla

Английские термины и их перевод

Во избежания недопонимания в связи с использованием и переводом некоторых английских терминов, предлагаю вашему вниманию список соответствия этих терминов их переводу на русский (список будет пополнять по мере написания статей):
plugin
плагин
execution cycle
цикл исполнения
event
событие
to trigger event
вызывать событие
Что такое плагин?

Плагин, это простая PHP программа, которая исполняется в одной или более предопределенных точках в цикле исполнения Joomla. Эти точки называются событиями и вызываются изнутри Joomla.

Плагин может быть очень простым - например, установить значение перед сохранением в базу данных. Или он может быть очень сложным - например, конвертировать все URL в документе в другой формат. Плагины даже можно использовать для переопределения стандартных базовых классов Joomla.

Плагины привязаны к событиям. Для понимания плагинов, нам необходимо знать предопределенные события в Joomla, а также понимать, как создавать свои собственные события.
Как же работают плагины?

Работа плагинов заключается в трех шагах:
Один или несколько плагинов включаются в текущий скрипт, обычно с помощью метода JPluginHelper::importPlugin(). Так как плагины, как правило, являются объявлениями классов, в этой точке не происходит исполнения кода.
Вызывается событие, обычно с помощью метода $dispatcher->trigger() (где $dispatcher - это объект класса JDispatcher). Каждое событие имеет название, такое как onBeforeInitialise или onContentBeforeSave.
Код, обрабатывающий событие, ищет среди включенных плагинов загруженные на данный момент. Затем он проверяет, есть ли у них метод, который совпадает с названием события. Если такие методы найдены, то они исполняются.
Загрузка и исполнение PHP скриптов, которые объявляют классы

Большинство плагинов в Joomla содержат только объявление класса. Это значит, что они объявляют класс и определяют методы класса, но не включают ни единой строчки кода вне объявления класса.

Когда загружается такой тип файла (например, с помощью PHP команды require_once), в работающей памяти создается новый класс со всеми методами. Однако ни один из этих методов в реальности не исполняется. Метод исполнится только тогда, когда строка кода вызовет этот метод. Вот почему метод JPluginHelper::importPlugin() только подготавливает плагин к исполнению, но, как правило, не исполняет код. Методы плагина исполняются только тогда, когда вызывается событие, например с помощью метода $dispatcher-> trigger().
Соглашения по именованию плагинов

Чтобы метод JPluginHelper::importPlugin() смог найти плагины, нам необходимо следовать правильному соглашению по именованию файлов плагина и именам классов. Папка плагина и имена файлов создаются по следующей схеме:
plugins/<тип плагина>/<название плагина>/<название плагина>.php

Например, SEF плагин - plugins/system/sef/sef.php. У плагинов есть XML-файл с таким же именем (например, plugins/system/sef/sef.xml). Мы обсудим XML-файл позже, когда будем говорить о создании своего собственного плагина.

Имя класса плагина основывается на следующем соглашении по именованию:
"plg" + <тип плагина> + <имя файла плагина>

Напрмер, имя класса SEF плагина будет plgSystemSEF.
Типы плагинов: где вы можете вставить плагин?

Плагины исполняются, когда вызываются их события. События плагинов, которые определены в Joomla, отличаются от событий в событийно-ориентированных программах. В событийно-ориентированном программировании программа ждет события, которые чаще всего относятся к действиям пользователя (клик мышки, ввод с клавиатуры и т.п.). А в Joomla события можно представить как контрольные точки вдоль различных путей цикла исполнения. Каждый раз, когда цикл исполнения достигает контрольной точки события, событие вызывается.

События фиксированы, несмотря на то, что в зависимости от того, в каком типе цикла исполнения мы находимся, вызываются разные события. Давайте пробежимся по каждому типу события.

Authentication (Аутентификация)
Существует только одно событие для аутентификации - onUserAuthenticate. Это событие вызывается тогда, когда пользователь пытается авторизоваться на сайте или в панели управления.

Captcha (Капча)
Капча помогает бороться со спамом, заставляя пользователя вводить некоторый текст, который основан на искаженном изображении. Капча появилась в Joomla начиная с версии 2.5. Она реализована помощью трех событий: onInit, onDisplay и onCheckAnswer.

Content (Контент)
Плагины контента вызываются, когда отображается или редактируется контент. Список событий контента:
onContentAfterDelete
onContentAfterDisplay
onContentAfterSave
onContentAfterTitle
onContentBeforeDelete
onContentBeforeDisplay
onContentBeforeSave
onContentBeforeTitle
onContentChangeState
onContentPrepare
onContentPrepareData
onContentPrepareForm

Contacts (Контакты)
Плагины контактов включают всего два события: onSubmitContact и onValidateContact.

Editors (Редакторы)
В Joomla редакторы реализованы в качестве плагинов. Однако, они не особо подходят под паттерн плагинов, которые мы обсуждаем. Добавление редактора в Joomla требует глубоких знаний JavaScript и не является легкой задачей. Список событий редакторов:
onInit
onSave
onSetContent
onGetContent
onGetInsertMethod

Editors-XTD
Плагины Editors-XTD используются для создания кнопок, которые отображаются под редакторами (например: Изображение, Разрыв страницы и Подробнее). Существует два события этого типа: onDisplay и onCustomEditorButton.


Источник: http://joomlablog.ru

Добавить комментарий:
Имя:
E-mail:
2021 © Обсуждение Joomla и других CMS-систем управления сайтами  Правила | О проекте | Обратная связь