ПМ - это программа на 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