ghid complet pentru crearea de plugin-uri joomla 1
Când vom începe să creeze un nou plugin, am împărțit înființarea în mai multe părți. Deci, va fi mai ușor pentru a ajunge la inima și fișa de testare mai convenabil. În mod ideal, ar trebui să aibă mai mult de un server pentru a testa plug-in (în special, instalarea sa). În primul rând, vom crea instalator prosteyschy. Descrie plugin de instalare XML numit Foobar - Extensia mea.
Este important de notat grupul de parametri plugin. În general, toate plugin-urile sunt împărțite în grupuri logice. Aici este o listă a grupurilor de bază Joomla: - autentificare - continut - editori - redactori-xtd - Căutare - Sistem - utilizator - XMLRPC După cum observați, putem include grupul. De asemenea, xml-fișier indică informații foarte important este parametrul plugin. Acest parametru este unic în grup și identifică pluginul nostru. Tabelul de mai jos se poate vedea numele de plug-in-uri, care sunt deja ocupate de către nucleu.
GruppaZarezervirovannye autentificare nume gmail joomla conținut ldap emailcloak Geshi LoadModule OpenID pagebreak pagenavigation sef vot editori none TinyMCE XStandard editori-xtd categorii de imagini pagebreak căutare Readmore contact newsfeed conținut jurnal secțiuni Weblinks sistem de cache de depanare vechi amintesc de utilizator joomla XMLRPC blogger joomla
După ce ați creat myextension.xml fișier XML, myextension.php a crea un fișier și le-a pus într-un foobar catalog. Apoi comprima în gz. tar. tar.gz sau zip (este o modalitate mai bună de a zip). Rețineți că fișierele de același plug-in nu este împărțit în directoare, pentru ca plugin-uri format din doar două fișiere. Apoi, puteți instala plugin-ul. Dar, atâta timp cât el nu face nimic.
Așa că trebuie să fi creat un eveniment care va continua să fie gestionate de plugin. Joomla aplicații folosesc obiectul la nivel mondial numit Managerul de evenimente (eveniment dispecer), pentru a trimite evenimente pentru studenții înscriși (ascultători). Global Event Manager - un obiect JEventDispatcher, care este o extensie a unui JObservable clasă abstractă. În Joomla, ascultătorul poate fi o clasă sau funcție. Când folosim clasa ascultător, această clasă trebuie să fie o extensie a JPlugin de clasă. Această expansiune, în scopul de a moșteni metodele de bază ale clasei. Deci, imaginați-vă că avem o componentă Foobar care afișează unele dintre intrările din baza de date. Putem folosi onPrepareFoobar eveniment care are loc înainte de a imprima înregistrări. Pentru a adăuga un eveniment, vom scrie-l folosind triggerEvent () metoda de dispecer eveniment care trimite deja ascultătorii săi. triggerEvent () Metoda conține doi parametri: numele evenimentului și o serie de argumente transmise către ascultători. Să presupunem că adăuga evenimentul onPrepareFoobar:
$ Dispatcher = - JDispatcher. getInstance (); JPluginHelper. importPlugin ( 'Foobar'); $ Argumente = array (- $ foobarData); $ Rezultat = $ dispecer -> declanșare ( 'onPrepareFoobar' $ argumente.);
Rețineți că trece $ foobarData de referință, iar al doilea parametru funcție trebuie să fie o matrice. Acum putem scrie plug-in-uri care se va ocupa $ foobarData.
Aceasta este una dintre cele mai importante concepte. În general, studenții sunt plugin-urile care se ocupa de evenimente trimise de Managerul de evenimente.
ascultătorii Regestrirovanie
$ Mainframe -> registerEvent ( 'plgSearchContent 'onSearch''.);
Prelucrare eveniment
Așa cum am menționat mai devreme, putem folosi ambele funcții și clase de manipulare eveniment. Începem studiul nostru cu utilizarea funcțiilor de procesare a evenimentului. Am făcut deja piesa de prelucrat plug-in, numit My Plugin Foobar în grup și vrem să se ocupe de evenimentul numit onPrepareFoobar. Înainte de a începe să creeze funcția noastră, trebuie să-i dea un nume. Este important să se utilizeze următoarea convenție de denumire: pLG cuvântul, grup dop, numele plugin, eveniment. De exemplu, funcția noastră va fi numit plgFoobarMyPluginPrepareFoobar. De exemplu, această funcție putem folosi pentru a gestiona evenimentul:
$ Mainframe -> registerEvent ( 'onPrepareFoobar' 'plgFoobarMyPluginPrepareFoobar'.); / *** Plasează parametrul dat în litere mari ** @param Foobar Referirea la un obiect Foobar * / funcția plgFoobarMyPluginPrepareFoobar. (- $ foobar) <$foobar -> nume = strtoupper ($ foobar -> numele);>
Cea mai importantă parte în această funcție - este parametrul trecut. Anterior, am trecut parametrul ca o matrice. Fiecare element al șirului este procesat de plugin separat. Plugin-ul este format din funcții pot ocupa, de asemenea, mai multe evenimente. Dacă dorim să creăm un ascultător folosind o clasă, așa că trebuie să se extindă clasa JPlugin. În primul rând trebuie să ne dăm seama cum de a apela clasa ascultător. JPlugin necesită o denumire specială a cuvântului PLG, plugin numele grupului, numele plugin-ului. De exemplu, un grup numit foobar myplugin plug-in-ar trebui să fie numit plgFoobarMyplugin. Acest exemplu se ocupă de două evenimente: onPrepareFoobar și onAfterDisplayFoobar.
În acest exemplu, după cum puteți vedea, nu trebuie să dețină evenimente regestrirovat. Pentru tine toate vor freymvork Joomla. Principalul lucru care urmează să fie numit-o clasă, și evenimente. Când am de import plug-in Joomla, un dispecer eveniment global caută automat clasele de ascultător și vă rugăm să devină. onAfterDisplayFoobar () returneaza valoarea. Trebuie să ne amintim că înainte am trecut matrice de procesare a plug-in. Acest exemplu arată cum să se întoarcă matrice deja procesată.
$ Dispecer = JDispatcher. getInstance (); JPluginHelper. importPlugin ( 'Foobar'); $ Argumentele = array ( $ FoobarData); $ Rezultat = $ dispecer -> declanșare ( 'onPrepareFoobar' $ argumente.); $ Foobar -> onAfterDisplayFoobar = tăiați (implozie ( "\ n" rezultat $).);
Acesta este un exemplu foarte simplu. În continuare, considerăm lucrurile mai complicate.
plugin-uri grupuri
Plugin-uri sunt împărțite în grupuri diferite. Fiecare grup de plug-in-uri pentru a gestiona anumit set de evenimente. În Joomla nucleul conține 8 grupuri: editori de conținut de autentificare editori-xtd utilizator sistem de căutare XMLRPC În continuare ne vom uita la fiecare grup în detaliu.
autentificare
Rețineți că totalurile nu trebuie să se întoarcă, și parametrul $ rând este trecut prin referință. Să luăm în considerare atributele de conținut:
AtributOpisanie creată data creării în formatul 0000-00-00 00:00:00. data modificării ultimei modificări în 0000-00-00 00:00:00 textului conținutul format principal al tabelului Conținutul elementului din titlu antet element de COT al conținutului
Acum ia în considerare evenimentele. onAfterDisplayContent
Editori-xtd
Căutare grup ispolzyuetsya conectați pentru extinderea componenta principală de căutare, și obținerea de rezultate de căutare. Există două evenimente asociate cu acest grup, și onSearch onSearchAreas. Scopul onSearchAreas dificil de înțeles. Aici este o captură de ecran de căutare:
Executa căutarea și returnează rezultatele în funcție de căutare de text Expresie șir de tip de căutare „orice“, „toate“, sau „exactă“. Formulare comanda de sortare:,,, „alfa“ (alfabetic), sau „categoria“ „cele mai noi“ „vechi“ „populare“. zone unitare care să vizeze (pe baza onSearchArea). Se returnează un tablou asociativ cu următoarele câmpuri: „titlu“, „textul“, „creat“, „href“, „browsernav“ (1 = deschis în fereastră nouă), și o „secțiune“ (opțional).
Descriere Ia-o serie de domenii diferite, care ar putea fi detectate cu ajutorul acestui plugin. Fiecare plugin de căutare trebuie să se aplice cel puțin o zonă. Se returnează un tablou asociativ din diferite domenii pentru a căuta.
Sistemul Există patru evenimente importante din sistem. Aici este ordinea: - onAfterInitialize - onAfterRoute - onAfterDispatch - onAfterRender onAfterDispatch
Descriere Se produce după aplicare a fost trimis
Descriere Se produce după aplicare este inițializat
Descriere Apare atunci când este redat o cerere, dar nu a fost încă trimis utilizatorului
Descriere are loc după router aplicare
Plugin-uri permit grupuri de utilizatori pentru a efectua o prelucrare suplimentară în anumite evenimente legate de utilizator. Acest lucru este util mai ales atunci când aceste plug-in-uri sunt utilizate împreună cu o componentă care este asociată cu tabel # __users. Luați în considerare exemplul evenimentului onAfterUserStore. Acest eveniment este declanșat după ce un utilizator sohanyaet datele lor (declanșate pentru utilizatorii noi și existenți). Acest exemplu arată modul în care putem sprijini celălalt tabel, # __some_table, atunci când este creat un nou utilizator:
Descriere Permite utilizatorului să modifice datele înainte de stocarea parametrilor utilizatorului Un tablou asociativ cu datele de utilizator isnew Adevărat, dacă un utilizator nou
Descriere Vă permite să execute cod după ce utilizatorul de date istorice au fost stocate parametri de utilizator Un tablou asociativ cu utilizatorul de date în cazul în care utilizatorul isnew Adevărul Adevărul este un nou succes în cazul unei msg de conservare Mesaj de eroare de succes dacă este disponibil
Descriere ne permite să efectueze procesarea suplimentară înainte ca utilizatorul este șters. Este util să se actualizeze tabele non-core, care sunt legate de tabele cheie #__users utilizator Parametrii asociativă matrice cu date de utilizator
Descriere Vă permite să execute cod după ce utilizatorul șters de utilizator parametrii Un tablou asociativ cu succes Adevărul date de utilizator de pe mesaj de eroare de succes msg dacă este disponibil
Descriere Dacă numele de utilizator sau parola este parametrii incorecte obiect JAuthenticationResponse răspuns
utilizator Descriere Un încearcă să ieși. În acest moment, plugin-ul „elimină“ Joomla sesiunea. Parametrii obiect JAuthenticationResponse utilizator returnează un znchenie boolean false dacă nu reușește
XML-RPC - protocol standard / la distanță apel de procedură bazat pe XML, este stramosul SOAP, este extrem de ușor de utilizat. XML-RPC, precum și orice altă interfață RPC definește un set de tipuri de date standard și comenzi pe care programatorii pot utiliza pentru a accesa funcționalitatea alt program situat pe un alt calculator din rețea. Joomla! Acesta include un server XML-RPC, care este modul în care putem extinde cu plugin-uri. plugin-uri XML-RPC constau din două părți: eveniment de tratare a onGetWebServices, care returnează o serie de apeluri de Web acceptate și clasa statică sau un set de funcții care controlează un apel de procedură la distanță. Dacă ajunge la mâinile tale, eu vorbesc despre modul de utilizare XML-RPC în Joomla într-un articol separat. onGetWebServices
Descriere Ia-o matrice asociativa cu descrierea metodelor de servicii web disponibile. Se returnează un tablou asociativ într-un tablou asociativ, care determină dacă un serviciu de apel este disponibil.
Prelucrarea parametrii extensii joomla
La elaborarea extensii pentru Joomla CMS, cum ar fi plug-in-uri, module, componente sau template-uri, este adesea necesar să se obțină parametrii dezvoltate sau orice altă extensie. In aceasta.
Kunena șablon kramsaem
1. În folderul \ componentele \ com_kunena \ template \ vash_shablon \ template.xml găsi fișierul și lipiți-l într-o piesă (pentru a putea selecta câmpul să-l arate sau nu):