Примери на приставки

Един от най-объркващи неща за плъгини е, че те са толкова различни един от друг. Само един детайл е обща за всички: призива на приставката. Нека да разгледаме няколко примера за основните Joomla плъгини и тяхното предизвикателство.

Система: SEF

Първият ни пример е щепсела SEF. Това е един клас, наречен plgSystemSef в плъгини / система / SEF / sef.php файл. Тя ви позволява да използвате Joomla NC (chelovekoponyatnye RLC). Тази приставка сканира HTML документ за справки и ги превръща в линкове chelovekoponyatnye. Той също така замества URL спрямо пълния URL адрес за някои други видове връзки.

Както той се нарича?

Нека да видим, където се извършва тази тапа - с други думи, погледнете кода, който включва плъг-ин и приставки призивите това събитие. SEF плъг-ин - този плъгин система и той се нарича с onAfterRender на събитието. Преди да се обадите на събитието, ние трябва да включва плъгин файла.

Ако се зареди страницата с интерфейса на нашия сайт, ние наричаме метода за да се показват () на класа JSite (в процес включва / application.php файл). До края на този метод, можем да видим следния код:

Този код призовава onAfterRender () събитие. Нека проследим кода, за да разбера как работи. Променливата $ това е клас обект JSite а. така $ това-> triggerEvent причинява triggerEvent () метод JSite с един параметър - низ "OnAfterRender".

JSite разширява JApplication клас. От JSite не да има свой собствен метод triggerEvent () (с други думи, тя не зачетат наследена от метода на родител клас), го нарича метод за JApplication:

Този код създава тип JDispatcher обект и след това извиква метод на спусъка () на обекта. параметър $ събитие е настроен на "onAfterRender", а вторият параметър $ аргументът е настроен на стойността по подразбиране на "нула", защото не е извършил.

Резултатът е onAfterRender на изпълнение () методи всеки включени тапа, която се намира в работната памет. В този случай, търсенето е ограничено до системните плъгини, защото сме посочили "система" тип, когато е бил призован importPlugin ( "система"). и затова само системните плъгини са заредени в работната памет.

Обикновено, методите за плъгин трябва да съответстват на вида на контакта. Например, ние трябва да използваме имената метод за системни събития само в системните плъгини. Ако следваме тази конвенция, тя вече няма да има значение дали заредени в паметта и други видове добавки, тъй като ще се извършва по методите, които съответстват на типа на събитието.

Authentication: Joomla

Приставката е в файлови плъгини / удостоверяване / Joomla / joomla.php и своя клас име plgAuthenticationJoomla.

Както той се нарича?

Той зарежда работната памет е включена проверка на автентичността на плъгини. Освен това, в този метод, ние виждаме foreach оператор:

В него има един пасаж от всички включени плъгини идентификация и проверка на това дали съществува класа с посоченото име на. Ако няма щепсел включен, а след това се провали. И ако има класове, като бележи последния ред, който причинява метод onUserAuthenticate за всеки плъгин.

Съдържание: Joomla

Нека да разгледаме метод onContentBeforeDelete ().

Както той се нарича?

Има event_before_delete имот е настроен на стойност в onContentBeforeDelete метод клас конструктор.

Този код трябва да се обърне внимание на две неща. На първо място, ние очакваме връщане на стойност, която се съхранява в променлива резултата от $. Второ, преминават два параметъра метода на спусъка (). Име на събитието и масив с два елемента. спусък (метод и) декомпресира масива предава всеки от нейните елементи като параметри в onContentBeforeDelete () метод. В нашия случай, това е два параметъра $ контекст и $ маса. $ Променлива Context съдържа информация за събитието (например, "com_categories.category") се дължи в какъв контекст. променлива $ маса - масив с данните, които ще бъдат изтрити.

Защо да използвате плъгини?

Надявам се, че разгледаните по-горе примери показват истинската сила на плъгини по отношение на гъвкавостта разширение на системата. Те могат да бъдат изключени или променена без изменение на ядрото, което ви позволява да се контролира много процеси в Joomla.

В следващата статия ще започнем да практикуват и да участва в създаването на свой собствен плъгин.