Exemple de plugin-uri

Unul dintre lucrurile confuze despre plugin-uri este faptul că ele sunt atât de diferite unele de altele. Doar un singur detaliu este comună tuturor: apelul de plugin. Să ne uităm la câteva exemple de plugin-uri de bază Joomla și provocarea lor.

Sistem: SEF

Primul nostru exemplu este mufa SEF. Aceasta este o clasă numită plgSystemSef în plugin-uri / sistem / sef de fișiere / sef.php. Acesta vă permite să utilizați Joomla NC (chelovekoponyatnye RLC). Acest plug-in-scanează un document HTML pentru referințe, și le transformă în link-uri chelovekoponyatnye. Acesta înlocuiește, de asemenea, URL-ul în raport cu adresa URL completă pentru alte tipuri de link-uri.

După cum se numește?

Să vedem, în cazul în care se realizează acest plug - cu alte cuvinte, uita-te la codul, care include plug-in și apeluri plug-in acest eveniment. SEF plug-in - acest sistem plug-in și este numit cu onAfterRender eveniment. Înainte de a apela la eveniment, trebuie să includem fișierul plugin.

Dacă vom încărca pagina cu frontend site-ul nostru, noi numim render () metoda din clasa JSite (în include / fișier application.php). Aproape de sfârșitul acestei metode, putem vedea codul de mai jos:

Acest cod solicită onAfterRender () eveniment. Să urmărim codul pentru a da seama cum funcționează. Variabila $ este un JSite obiect de clasă. deci $ this-> triggerEvent cauze triggerEvent () metoda JSite cu un singur parametru - un șir de caractere "OnAfterRender".

JSite extinde clasa JApplication. Din moment ce JSite nu are propriul său triggerEvent metoda () (cu alte cuvinte, aceasta nu duce la înlocuirea moștenită de metoda clasei părinte), se numește o metodă de JApplication:

Acest cod creează tip JDispatcher de obiect și apoi apelează de declanșare () metoda a obiectului. Parametrul $ eveniment este setat la „onAfterRender“, iar al doilea parametru $ arg este setat la valoarea implicită a „nulă“, pentru că nu am comis-o.

Rezultatul este onAfterRender de execuție () metode, fiecare a inclus un dop care este accesibil în memoria de lucru. În acest caz, căutarea este limitată la sistemul de plug-in-uri, deoarece am specificat tipul „sistem“, atunci când sunt citați importPlugin ( „sistem“). și de aceea numai plugin-uri de sistem au fost încărcate în memoria de lucru.

De obicei, metodele de plugin trebuie să corespundă cu tipul de mufă. De exemplu, ar trebui să folosim numele metodelor de evenimente de sistem numai în sistem plug-in-uri. Dacă urmăm această convenție, nu va mai conta dacă încărcate în memorie și alte tipuri de plug-in-uri, așa cum se va realiza prin metodele care se potrivesc cu tipul de eveniment.

Autentificare: joomla

Plugin-ul este în plugin-uri de fișiere / autentificare / joomla / joomla.php și numele său de clasă plgAuthenticationJoomla.

După cum se numește?

Se încarcă memoria de lucru este inclus plugin-uri de autentificare. Mai mult, în această metodă, vom vedea foreach operatorul:

În ea există un pasaj pe toate incluse plug-in-uri Autentificare și verificarea dacă există clasa cu numele specificat. În cazul în care nu există nici un dop inclus, atunci acesta nu. Și dacă există clase, marchează ultima linie, care determină metoda onUserAuthenticate pentru fiecare plugin.

Conținut: joomla

Să ne uităm la onContentBeforeDelete metoda ().

După cum se numește?

Acolo event_before_delete proprietate a fost setată la o valoare în metoda constructorului clasei onContentBeforeDelete.

Acest cod ar trebui să acorde o atenție la două lucruri. În primul rând, ne așteptăm la o valoare de întoarcere, care este stocat în variabila $ result. În al doilea rând, vom trece doi parametri metodei de declanșare (). eveniment si o matrice cu două elemente. trigger () metoda și decomprimă matrice transmite fiecare dintre elementele sale ca parametri în onContentBeforeDelete () metodă. În cazul nostru, este doi parametri de context $ și masă $. $ Variabilă de context conține informații despre eveniment (de exemplu, „com_categories.category“) sa datorat în ce context. Tabelul $ variabila - un array cu datele care urmează să fie șterse.

De ce folosesc plugin-uri?

Sper că exemplele discutate mai sus demonstrează puterea reală de plug-in-uri în ceea ce privește flexibilitatea sistemului de expansiune. Acestea pot fi oprite sau modificate fără modificarea miezului, permițându-vă pentru a controla multe procese în Joomla.

În următorul articol vom începe să practice și să se angajeze în crearea propriului lor plug-in.