•  
  •  
  •  
  •  
1 1 1 1 1 1 1 1 1 1 Рейтинг 5.00 (1 Голос)
Общие сведения относительно плагинов - 5.0 out of 5 based on 1 vote

Перевод английских терминов

Чтобы избежать ситуации с недопониманием из-за использования и перевода определённой английской терминологии, мы занялись составлением списка соответствия терминологии и ее перевода на русский (в списке появляются новые слова при дальнейшем написании статей):

PLUGIN   |   плагин
EXECUTION CYCLE   |   цикл исполнения
EVENT   |   событие
TO TRIGGER EVENT   |   вызывать событие

Чем является плагин?

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

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

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

Принцип действия плагинов

Рабочий процесс плагина включает в себя три шага:

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

Процесс загрузки и исполнения 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 (начиная с Joomla 3)
onContentBeforeDelete
onContentBeforeDisplay
onContentBeforeSave
onContentBeforeTitle
onContentChangeState
onContentPrepare
onContentPrepareData
onContentPrepareForm

Contacts (Контакты)

Плагину контактов присущи лишь два события: onSubmitContact и onValidateContact.

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

В Joomla редакторами пользуются как плагинами. Тем не менее, они не полностью соответствуют паттерну плагинов, обсуждение которых сейчас ведется. Чтобы добавить редактор в Joomla необходимы глубокие знания JavaScript, поэтому данный процесс не относится к легким задачам. Перечень событий редакторов:

onInit
onSave
onSetContent
onGetContent
onGetInsertMethod
onDisplay

Editors-XTD

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

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

Данный плагин используется в Joomla с версии 1.6. Событие расширения будет вызвано в том случае, если происходит установка, удаление или редактирование расширений с помощью Менеджера модулей, плагинов, шаблонов или языков. События:

onExtensionBeforeInstall
onExtensionBeforeUpdate
onExtensionBeforeUninstall
onExtensionAfterInstall
onExtensionAfterUpdate
onExtensionAfterUninstall

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

Плагин, обеспечивающий быстрый запуск, используется при создании иконок, которыми дополняется стартовая страница панели управления. Данный тип может обладать лишь одним событием -onGetIcons, вызов которого происходит тогда, когда модуль Quick Icons занимается созданием набора иконок.

Search (Поиск)

Плагином поиска реализуются функционал поиска в Joomla. Базовыми плагинами являются категории, контакты, контент. Список событий поиска: onContentSearchAreas иonContentSearch. onContentSearchAreas применяется для того, чтобы создать массив контента для поиска. Событием onContentSearch производится исполнение поиска по каждому типу контента. Разработчиками расширений могут включаться плагины поиска в для своих расширений. Это обеспечит разрешение для поиска Joomla на работу с их компонентом.

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

Плагины, отвечающие за умный поиск, расположены в директории plugins/finder. Этими плагинми пользуются при необходимости индексации контента сайта, чтобы использовать их с компонентом "Умный поиск". Разработаны плагины под каждый тип контента (категории, контакты, контент). События:

onFinderAfterDelete
onFinderAfterSave
onFinderBeforeSave
onFinderCategoryChangeState
onFinderChangeState

System (Система)

Системными плагинами предоставляются события, которые должны быть вызваны при каждом цикле исполнения Joomla. К ним относится событие onAfterInitialise (начальное событие, которое вызывается в Joomla) и события, которые относятся к методам render(), dispatch() и route(). Системными событиями следует пользоваться для плагинов, которые должны быть вызваны при  каждом цикле исполнения.  Не играет роли то, какую они выполняют задачу. Перечень событий:

onAfterInitialise
onAfterRoute
onAfterDispatch
onAfterRender
onBeforeCompileHead
onBeforeRender

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

Плагинами пользователей вызываются при разнообразных задачах. Одну группу событий используют при редактировании пользовательской информации с помощью Менеджера пользователя (к примеру: onUserAfterDelete и onUserBeforeSave). Вторую группу событий относят к процессу авторизации на ресурсе (к примеру: onUserLogin и onUserLogout). События:

onUserAfterDelete
onUserBeforeDelete
onUserBeforeSave
onUserAfterSave
onUserLogin
onUserLogout
onLoginFailure
onLogoutFailure
onUserAuthenticate
onUserAuthorisation

Итак, нам теперь стала известна общая информация относительно плагинов в Joomla. Также, мы узнали принципы их работы. Следующая статья позволит заняться рассмотрением примеров применения плагинов в Joomla.

Портфолио
Память о Вас и Ваших близких на многие поколения
Подробнее
Прокат металла
Подробнее
Интернет-магазин кожи и меха
Подробнее
100% оригинальная парфюмерия в Москве
Подробнее
Вьетнамский ресторан премиум класса
Подробнее
Внедрение информационных систем
Подробнее
Организация международных конференций
Подробнее
Производство молочной продукции
Подробнее
Спортивный сайт
Подробнее
Интернет-магазин мебели и аксессуаров
Подробнее
Интернет-магазин электротранспорта
Подробнее
Сайт института актуальной экономики
Подробнее
Наши клиенты
Парк развлечений Boom Zoom
Алгор
Норбит
Molga Consulting
Metrotile
Нетология
Monqi
Премиум Пак
Aasha Herbals
Аджва
Салон красоты Сударушка
Пава
ТЦ &quot;Панфиловский&quot;
Фитнес Лаборатория
Система Главбух
Vanguard
GoAsia
ТЦ «Солнечный ветер»
Teledoc
Tchernov Cable
Отзывы
Благодарю компанию web-now.pro за помощь в разработке и запуске проекта POLITSECRETS.RU. Перед нами стояла задача – внедрить проект в сжатые сроки и по оптимальной цене. Порадовало то, что мне подроб...
Вера БлашенковаСекреты успешных выборов, Москва... апр.2016
Мне очень понравился подход с которым нас встретили "Ваша задача заниматься бизнесом, наша - сделать Вам представительство в сети". После этого ребята разработали полное тз на проект, мы внесли пожела...
МаксимIT-TASK, Москва... янв.2016
Работа проделана хорошо! Дизайнер и менеджер на отлично. Надеюсь на сотрудничество в дальнейшем. Есть шероховатости в деталях по задачам, но приятно сказывается оперативность и желание исправить, внес...
БруноСоциальная сеть След Жизни, Москва... янв.2016
Работой остались очень довольны. К работе подходят ответственно, аккуратно, открыто. Проект был сдан чуть раньше срока, по ходу работы возникали изменения, все они принимались безоговорочно, работа вы...
ЕвгенийМагазин текстиля, Москва... дек.2015
Сотрудничаем с 2007 года и сделали не один проект. Самое главное - команда умеет отстаивать своё мнение и постоянно развивается.
МарияМеждународные конференции, Москва... дек.2015
Спасибо всему коллективу компании! Разработали красивый и что самое главной рабочий интернет магазин! Реклама настроена и запущена, продажи идут, бизнес развивается! Нам постоянно подсказывают о новых...
ВадимИнтернет магазин Aromatic.pro, Москва... сен.2015
Большое спасибо команде за оперативность, качественные работы, отличный креатив и привлекательные цены!
Виктория, ОАО "Фармстандарт... июль.2015
Здравствуйте уважаемые партнеры! С наступающим Новым Годом! Желаю Вам дальнейшего процветания и успехов в Вашей благородной работе! С вами приятно сотрудничать! Очень благодарен Вам за своевременное о...
Сергей ЮрченкоКинотруд, Москва... дек.2014
Благодарим команду Brand Now и лично Дениса Логинова за оригинальное видение,разнообразие идей, четкость взаимодействия и безукоризненное соблюдение сроков выполнения проекта! Планируем продолжить сот...
ТатьянаBizness Linkerz... июль.2014
Компания КУН выражает благодарность за сотрудничество: непростая задача была выполнена в требуемые сроки и полностью удовлетворила заявленному ТЗ. Приятно удивила готовность Генерального директора нач...
Мария, Компания КУНhttp://www.kuhn.com/... апр.2014
Все отзывы
Добавить отзыв