ПМ - это программа на php, выполняющая один или несколько предварительно заданных моментов в цикле выполнения команд Joomla. Такие моменты назыаются событиями и инициируются в Joomla.

Принцип действия ПМ

1. Файл ПМ включается в текущий сценарий, как правило с помощю метода JPluginHelper::importPlugin(). Код на данной стадии не исполняется.
2. Инициализируется событиее, для чего вызывается метод $dispatcher->trigger(), где $dispatcher - объект типа JDispatcher. Каждому событию присваивается отдельное имя.
3. Код обработки события осуществляет поиск метода, совпадающего с именем события, в любых подключаемых модулях, активизированных и загруженных в данный момент. Если такой метод обнаружен, он выполняется.

Условные обозначения ПМ

Чтобы метод JPluginHelper::importPlugin() смог найти плагины, нам необходимо следовать правильному соглашению по именованию файлов плагина и именам классов. Имена файлов и папок должны соответствовать следующему принципу

plugins/<тип пм>/<название пм>/<название пм>.php

Например, SEF плагин - plugins/system/sef/sef.php. У плагинов есть XML-файл с таким же именем:  plugins/system/sef/sef.xml
Имя класса плагина основывается на следующем соглашении по именованию:

"plg" + <тип пм> + <имя файла пм>

Напрмер, имя класса SEF плагина будет plgSystemSEF

Разновидности событий

Authentication (Аутентификация)

onUserAuthenticate

Captcha (Капча)

onInit
onDisplay
onCheckAnswer

Content (Контент)

onContentAfterDelete
onContentAfterDisplay
onContentAfterSave
onContentAfterTitle
onContentBeforeDelete
onContentBeforeDisplay
onContentBeforeSave
onContentBeforeTitle
onContentChangeState
onContentPrepare
onContentPrepareData
onContentPrepareForm

Contacts (Контакты)

onSubmitContact
onValidateContact

Editors (Редакторы)

onInit
onSave
onSetContent
onGetContent
onGetInsertMethod

Editors-XTD(кнопки в редакторе внизу)

onDisplay
onCustomEditorButton

Extension (Расширение)

onExtensionBeforeInstall
onExtensionBeforeUpdate
onExtensionBeforeUninstall
onExtensionAfterInstall
onExtensionAfterUpdate
onExtensionAfterUninstall

Quickicon (Быстрый запуск)

onGetIcons

Search (Поиск)

onContentSearchAreas
onContentSearch

Smart Search (Finder - Умный поиск)

onFinderAfterDelete
onFinderAfterSave
onFinderBeforeSave
onFinderCategoryChangeState
onFinderChangeState

System (Система)
Системные события необходимо использовать для плагинов, которые необходимо вызывать во время каждого цикла исполнения, независимо от того, какая выполняется задача

onAfterInitialise
onAfterRoute
onAfterDispatch
onAfterRender
onBeforeCompileHead
onBeforeRender

User (Пользователь)

onUserAfterDelete
onUserBeforeDelete
onUserBeforeSave
onUserAfterSave
onUserLogin
onUserLogout
onLoginFailure
onLogoutFailure