Модулі Joomla. Докладний розбір простою мовою

  1. Що таке плагіни Joomla і навіщо вони потрібні?
  2. Тригери для плагінів Joomla
  3. Типи плагінів Joomla і існуючі набори їх тригерів
  4. Тип «Authentication»
  5. Тип «Captcha»
  6. Тип «Content»
  7. Тип «Editors»
  8. Тип «Editors-XTD»
  9. Тип «Extensions»
  10. Тип «Finder»
  11. Тип «Quick Icons»
  12. Тип «System»
  13. Тип «User»
  14. Тип «Contact Component»
  15. Тип «Installer Component»
  16. Тип «Menu Component»
  17. Тип «Module»
  18. Параметри тригерів в Joomla
  19. Створення власних тригерів
  20. Створення власного плагіна Joomla
  21. Приклади використання плагінів Joomla

У цій великій статті я детально розповім про плагіни Joomla: для чого вони потрібні, які типи плагінів бувають, як вони працюють, як створити власний плагін, коли і навіщо це необхідно робити.

Якщо ви працюєте з Joomla, то, швидше за все, знаєте, що в цій CMS існують кілька видів розширень. Це компоненти, модулі, шаблони і плагіни. З першими трьома типами розширень все зрозуміло. А ось для чого потрібні плагіни багато, я впевнений, не дуже добре розуміють.

У цій великій статті я детально простою мовою розповім про те, що таке плагіни Joomla, для чого вони потрібні, які типи плагінів бувають, як вони працюють, як створити власний плагін, коли і навіщо це необхідно робити.

У статті ви знайдете заготовки для плагінів і корисну довідкову інформацію, необхідну для створення власного плагіна.

Що таке плагіни Joomla і навіщо вони потрібні?

Для початку давайте розберемося з тим, що ж взагалі таке плагін Joomla. Взагалі, якщо відкинути шаблони, в Joomla є три типи розширень, які збільшують функціональність сайту. це:

  • компоненти
  • модулі
  • Модулі

Компоненти Joomla дозволяють створити додатки з широким функціоналом. Якщо вам потрібні унікальні типи контенту, окремі сторінки сайту з контентом цих типів, унікальні URL для таких сторінок - ваш вибір компонент. Приклади компонентів: форум, інтернет-магазин, соціальна мережа, тікет-система, система бронювання і т.п.

Модулі Joomla дозволяють створити окремий блок, який буде показуватися на тих чи інших сторінках сайту. Якщо вам потрібно показати користувачам банер, форму авторизації, навігатор сайту, меню, то потрібно використовувати модуль.

Модулі Joomla, на перший погляд, здаються якимось окремим та незрозумілим типом розширення. Це відбувається в першу чергу через те, що плагін не можна побачити на сайті також просто як модуль. Плагін іноді взагалі не має візуальної проекції. Але у плагінів теж є свій таємний сенс. Раз розробники Joomla виділили плагіни в окремий тип розширень, значить, це було зроблено не просто так.

Щоб зрозуміти, що ж таке плагіни Joomla і для чого вони потрібні, потрібно розібратися ще з одним терміном, який має безпосереднє відношення до плагінів. це хак ядра Joomla .

Хак ядра Joomla (або просто «Хак») - внесення змін до коду системних файлів Joomla, які можуть бути стерті при оновленні CMS.

З визначення повинно бути зрозуміло, чим погано вносити хакі, але все-таки поясню.

В Joomla є файли ядра (початкові) - ті, які поставляються в архіві з CMS, і файли встановлених розширень (додані) - ті, які з'являються після установки адміністратором розширення та інші маніпуляцій з сайтом. Поділ файлів на такі групи не обов'язково пов'язано з їх призначенням. Наприклад, файли модуля Joomla можуть бути як файлами ядра (коли модуль поставляється разом з Joomla), так і файлами встановлених розширень (коли ви самі встановили цей модуль в Joomla). Це саме можна сказати і до інших типів розширень.

Тепер уявіть, що ви внесли деяку зміну в файл ядра (створили хак). В разі поновлення Joomla (Які, до речі, виходять досить часто) існує ймовірність, що розробники в оновленій версії внесли зміни в той же самий файл, в який внесли їх і ви. Що станеться в цьому випадку? Файл з вашими змінами (з хаком) просто буде перезаписан файлом з оновленою версією. При цьому всі зміни, які ви вносили, будуть видалені. Не дуже приємно, чи не так?

Цікаво ще й інше. Файли встановлених розширень теж є системними файлами ядра, але тільки вже не Joomla, а даних розширень. Наприклад, в разі, якщо ви встановили модуль, внесли в його файли зміни, а потім вийшло оновлення модуля і ви оновили його на сайті, з вашими змінами відбудеться рівно те ж саме, що і в разі хака Joomla - вони будуть стерті при перезапису.

Ви запитаєте: «Як же тоді взагалі вносити зміни в файли, якщо це необхідно?». Одним з рішень описаної вище проблеми, є, так звані, перевизначення макетів і альтернативні макети . Вони працюють добре, але, на жаль, як зрозуміло з назви, скасовують тільки макети відображення, але не функціонал ядра.

Іншим рішенням якраз і є плагіни.

Плагін дозволяє вставити в деякому місці виконання програми (php-скрипта) свій власний код, який буде змінювати або розширювати функціонал цієї програми.

Цікаво, що при використанні плагіна, нам не потрібно буде вносити зміни в файли ядра. Ви запитаєте: «Як таке можливо?». Це буде важливий і правильний питання.

Я пропоную представляти плагін, як флешку для комп'ютера. Joomla ж, в даному випадку, це сам комп'ютер. Також плагіном може бути будь-яке інше пристрій, який ви вставляєте в роз'єм USB. Що при цьому відбувається? За допомогою додаткового пристрою ви розширюєте функціонал комп'ютера, не вносячи в його конструкцію ніяких змін. Ви вставили флешку - з'явився додатковий диск, ви вставили колонки - комп'ютер тепер може відтворювати звук. Комп'ютер може працювати як з цим пристроєм, так і без нього. Наявність цього пристрою необов'язково. Сам комп'ютер від нього ніяк не змінюється.

Модулі в Joomla працюють аналогічним чином - вони розширюють функціонал, не обов'язково, видимий, шляхом включення свого коду в код основної системи. А роль роз'єму USB, який використовується для з'єднання комп'ютера і флешки, в Joomla виконують так звані тригери (triggered events).

Тригери для плагінів Joomla

Тригер в Joomla, являє собою «роз'єм», в який може підключитися плагін і виконати свій код. У коді Joomla це виглядає приблизно наступним чином:

Код Joomla; Код Joomla; Виконати код плагінів певного типу, якщо такі існують в CMS (це тригер); Код Joomla; Код Joomla;

Тобто в певному місці виконання коду Joomla в файлах ядра додана рядок, яка шукає всі плагіни певного типу, виконує їх послідовно, один за іншим. Коли код всіх плагінів даного типу буде виконаний, Joomla продовжить виконувати свій основний код.

Таким чином, за допомогою плагінів і тригерів, ми отримуємо в Joomla аналог роз'єму USB. Різниця лише в тому, що в Joomla багато місць, де вставлені тригери (рядки виклику виконання плагінів). Розробники Joomla не знають, де саме вам потрібно викликати код плагіна, але вони намагаються передбачити місця, де вам це може знадобитися з найбільшою ймовірністю.

В Joomla існує відомий набір тригерів, розташованих в різних частинах CMS. Всі тригери розбиті на групи. Кожна така група характеризує один з типів плагінів.

Типи плагінів Joomla і існуючі набори їх тригерів

Кожен плагін Joomla відноситься до певного типу. Тип плагіна вказує на місце його виконання в CMS і приблизний функціонал. Крім того, кожен тип плагінів має визначений набір тригерів.

Розглянемо типи плагінів Joomla, а також тригери, які вони в себе включають. Місце виклику тригера зазвичай зрозуміло з його назви не вимагає додаткових пояснень.

Тип «Authentication»

Модулі, які виконуються при авторизації користувача.

тригери:

Тип «Captcha»

Модулі, які виконуються в процесі роботи з капчі.

тригери:

  • onInit
  • onDisplay
  • onCheckAnswer

Тип «Content»

Модулі, які виконуються в процесі роботи з контентом (створення, зміни, збереження, видалення, відображення та ін.).

тригери:

  • onContentPrepare
  • onContentAfterTitle
  • onContentBeforeDisplay
  • onContentAfterDisplay
  • onContentBeforeSave
  • onContentAfterSave
  • onContentPrepareForm
  • onContentPrepareData
  • onContentBeforeDelete
  • onContentAfterDelete
  • onContentChangeState
  • onContentSearch
  • onContentSearchAreas

Тип «Editors»

Модулі, які виконуються в процесі роботи з текстовими редакторами Joomla.

тригери:

  • onInit
  • onSave
  • onSetContent
  • onDisplay
  • onGetContent
  • onGetInsertMethod

Тип «Editors-XTD»

Модулі, які виконуються в процесі роботи з текстовими редакторами Joomla (додавання додаткових кнопок під редактором).

тригери:

Тип «Extensions»

Модулі, які виконуються в процесі роботи з розширеннями Joomla (установка, оновлення, видалення та ін.).

тригери:

  • onExtensionAfterInstall
  • onExtensionAfterUninstall
  • onExtensionAfterUpdate
  • onExtensionBeforeSave
  • onExtensionAfterSave

Тип «Finder»

Модулі, які виконуються в процесі роботи розумного пошуку. Найчастіше сюди потрапляють плагіни, індексуючі різний контент для розумного пошуку.

тригери:

  • onFinderCategoryChangeState
  • onFinderChangeState
  • onFinderAfterDelete
  • onFinderBeforeSave
  • onFinderAfterSave

Тип «Quick Icons»

Модулі, які виконуються в процесі створення іконок (модуль quickions) на головній сторінці адмінки.

тригери:

Тип «System»

Модулі, які виконуються в ході генерації будь-якої сторінки сайту.

тригери:

  • onAfterInitialise
  • onAfterRoute
  • onAfterDispatch
  • onAfterRender
  • onBeforeRender
  • onBeforeCompileHead

Тип «User»

Модулі, які виконуються в процесі роботи з користувачами (авторизація, реєстрація, зміна інформації про користувача і ін.).

тригери:

  • onUserAuthorisation
  • onUserAuthorisationFailure
  • onUserBeforeSave
  • onUserAfterSave
  • onUserBeforeDelete
  • onUserAfterDelete
  • onUserLogin
  • onUserLoginFailure
  • onUserAfterLogin
  • onUserLogout
  • onUserBeforeSaveGroup
  • onUserAfterSaveGroup
  • onUserBeforeDeleteGroup
  • onUserAfterDeleteGroup

Тип «Contact Component»

Модулі, які виконуються в ході роботи з компонентом контактів.

тригери:

  • onValidateContact
  • onSubmitContact

Тип «Installer Component»

Модулі, які виконуються в процесі роботи инсталлера Joomla (установка і видалення розширень).

тригери:

  • onInstallerBeforeInstallation
  • onInstallerBeforeInstaller
  • onInstallerAfterInstaller

Тип «Menu Component»

Модулі, які виконуються в ході роботи з пунктами меню Joomla.

тригери:

  • onAfterGetMenuTypeOptions

Тип «Module»

Модулі, які виконуються в ході роботи з модулями.

тригери:

  • onRenderModule
  • onAfterRenderModule
  • onPrepareModuleList
  • onAfterModuleList
  • onAfterCleanModuleList

Як можна помітити, тригери покривають значну частину функціоналу Joomla. Якщо вам потрібно впровадити в якомусь місці свій власний код, то з високою часткою ймовірності ви зможете підібрати відповідний тригер.

Параметри тригерів в Joomla

Погодьтеся, тригери були б не дуже корисні, якби просто викликали плагін, без будь-якої взаємодії з іншим кодом. Наприклад, який сенс в тригері onUserLogin, викликає після авторизації користувача, якщо ми не знаємо, який саме користувач був авторизований?

Саме тому кожен тригер передає в плагін набір найбільш важливих параметрів про події, з якими він пов'язаний. Так, наприклад, тригер onUserLogin, передає в плагін дані про користувача, який тільки що пройшов авторизацію, а також параметри цієї авторизації.

Детальний опис кожного з тригерів, а також список всіх параметрів, які тригер передає в плагін, ви можете знайти в документації по Joomla на цій сторінці .

Створення власних тригерів

У вас може виникнути питання: «Що робити, якщо жоден з існуючих тригерів мені не підходить»? Бувають завдання, коли ваш код повинен бути виконаний в такому місці, де тригерів немає. В цьому випадку вам доведеться зробити хак. Але це може бути або великий хак, змінює блоки коду в різних місцях файлу, або маленький, який додає ваш власний тригер в потрібне місце.

Так, в Joomla ви можете створювати і власні тригери, а потім плагіни унікальних типів для них. Це може бути зручно з точки зору мінімізації змін до хаке, або тоді, коли ви пишете власне розширення, і хочете дати стороннім розробникам можливість робити для нього плагіни.

Створити власний тригер в Joomla дуже просто. Досить додати в потрібному вам місці наступний код:

JPluginHelper :: importPlugin ( '<Тіп_плагіна>'); $ Dispatcher = JDispatcher :: getInstance (); $ Results = $ dispatcher-> trigger ( '<Названіе_тріггера>', <Массів_параметров_тріггера>);

Навіть якщо ви зробили хак, відновити три рядки коду набагато простіше, ніж цілі блоки.

Створення власного плагіна Joomla

Створити власний плагін Joomla простіше, ніж може здатися на перший погляд. Пам'ятайте, що плагін, це не складне розширення, а всього лише шматок коду, який виконається в потрібному місці (хоча іноді зустрічаються дійсно складні плагіни). Ось все, що вам потрібно, щоб створити ваш власний плагін: взяти заголовку, змінити назву, автора та іншу мета-інформацію, і додати в заготовку код, який повинен виконуватися при виклику тих чи інших тригером.

Якщо ви хоч трохи розбираєтеся в PHP, і хочете написати власний плагін, ознайомтеся з цими матеріалами:

Приклади використання плагінів Joomla

Наостанок, хочу навести декілька прикладів того, що можна робити за допомогою власних плагінів.

  • Відправлення листа користувачу після його авторизації, аналогічно тому, як це зроблено в ВК. Щось на кшталт: «У ваш аккаунт виконаний вхід ...»
  • Автоматичний репост анонсу статті в соціальні мережі після її створення і збереження в адмінці.
  • Автоматичний збір інформації по всім запитам, які вводили користувачі в формі пошуку на сайті.
  • LazyLoad - «ледача» подгрузка зображень в статті.
  • Додавання кнопок з унікальним функціоналом в текстовому редакторі статті.
  • Підміна мета-даних сторінок сайту, позбавлення від дублів, перенаправлення за певними умовами.
  • Захист форм авторизації від підбору пароля

Все це і багато іншого можна реалізувати за допомогою плагінів Joomla, не використовуючи хакі і не боячись, що зміни будуть стерті при оновленні CMS.

На цьому все. Сподіваюся, тема плагінів в Joomla стала для вас хоча б трішки зрозуміліше. Якщо вам потрібен якийсь нестандартний плагін, але ви не впевнені, що зможете створити його самостійно, то завжди можете замовити у мене розробку .

--------

Якщо ви серйозно займаєтеся IT-технологіями і шукайте відповідний дата-центр для розміщення своїх серверів, то завжди можете розмістити сервер в Москві . Тут же можна арендавать сервер або серверну стійку. Повірте, це набагато зручніше, ніж сидіти поруч з ним в офісі =).

про автора

про автора

Wedal (Віталій). Веб-розробник повного циклу (Full Stack). Творець і автор сайту Wedal.ru.

Основний профіль - створення сайтів і розширень на CMS Joomla.

Що таке плагіни Joomla і навіщо вони потрібні?
Що таке плагіни Joomla і навіщо вони потрібні?
Що станеться в цьому випадку?
Не дуже приємно, чи не так?
Ви запитаєте: «Як же тоді взагалі вносити зміни в файли, якщо це необхідно?
Ви запитаєте: «Як таке можливо?
Що при цьому відбувається?