Adaptarea meniului terț sub joomla

Meniuri terțe existente și selectarea uneia dintre ele

Voi începe cu o scurtă notă: pentru astăzi există deja un număr destul de mare de meniuri diferite pentru diferite versiuni ale Joomla. Dar fiecare dintre ele are propriile nuanțe și, uneori, sunt "strâmbe" instalate pe site sau nu se potrivesc șablonului deloc. Ceva sa târât, ceva sa stins, bine. Știți deja foarte bine despre ce vorbesc. Deci, când aveți într-adevăr nevoie de un modul de meniu - funcționează corect și nu contravine șablonului potrivit - există două moduri: cumpărați un modul gata sau scrieți singur.







Prima întrebare care apare este unde să începem? Și trebuie să începeți cu o înțelegere a ceea ce vrem să obținem în cele din urmă. Avem nevoie de un meniu dinamic dinamic, cu efecte frumoase "float" sau alunecare, dar care trebuie adaptate foarte atent la toate browserele moderne? Pentru a opri Dumnezeu oriunde este afișat sau "plutit" nu este cum ar trebui să fie. Sau folosiți un meniu drop-down simplu, fără efecte și clopote și fluiere, dar cu garanția unei funcționări corecte în orice browser. Nu știu despre tine, dar apreciez practicitatea și simplitatea. Prin urmare, aleg cea de-a doua opțiune. Dar, indiferent de modul în care trebuie să mergeți, trebuie să selectați cel mai extern meniu din care vom decupa modulul nostru pentru Joomla.

Dacă faceți clic pe link-ul si uita-te la exemple din meniul liber și lecții despre crearea lor și inserați pe site-ul web, veți vedea din nou - toate aceste exemple se îngrămădit meniul, dar sunt mai simple. M-am oprit la următoarea versiune - 27. Simplu jQuery DROPDOWNS. pe care îl veți vedea făcând clic pe link. Rezultatul procesării sale în cadrul modulului Joomla pe care îl vedeți în prezent pe site-ul nostru. Asta e, am luat ca bază pentru adaptarea la Joomla și va arăta tehnica de a scrie un modul de meniu. Am ales-o din două motive principale:

Ce altceva ai nevoie pentru un meniu bun? ;)

Definiți pașii necesari pentru a adapta meniul în cadrul Joomla și ao transforma într-un modul

Deci, am decis cu privire la alegerea unui meniu terță parte, a găsit o opțiune acceptabilă și a fost descărcată. Apoi, desigur, puteți începe să învățați codul care face ca meniul selectat să funcționeze. În cele mai multe (dacă nu toate) exemple de meniuri care sunt descărcate, demonstrația meniului este următoarea:

Mai mult, când am dat seama ce înseamnă demo-ul unui meniu terț, trebuie să facem următoarele lucruri:

1. Scrieți un modul plug-in gol pentru Joomla și instalați-l pe site-ul nostru Joomla. Activați-l prin panoul de administrare și setați-l la poziția dorită a șablonului.

2. Direct în modulul plug-in instalat pe site, introduceți piesele de cod în mod consecvent din exemplul pe care l-am descărcat. Ie prin metoda "Copy-Paste" facem transferul stilurilor CSS, marcajului, imaginilor și altor lucruri. Dacă stilurile CSS pot fi inserate direct fără modificări, atunci codul HTML va trebui modificat în mod semnificativ, pentru că vrem să obținem elemente reale din meniul intern al Joomla în locul elementelor din meniul static.

3. "Aduceți" codul în stubul nostru în stare gata, adică Când apariția meniului și funcționarea sa corectă cu miezul Joomla nu sunt acceptabile pentru noi. Această parte este cea mai dificilă, pentru că aici intră în vigoare atât de nuanțe, cum ar fi funcționarea corectă a meniului sub numărul maxim de șabloane și cunoașterea meniului intern al dispozitivului Joomla. Deși, dacă nu faceți un modul comercial, nu trebuie să vă faceți griji în legătură cu acest lucru - principalul lucru este că meniul funcționează corect, cel puțin în șablonul dvs. specific. Astfel, la acest pas, modulul gol "plug-in" se va transforma treptat într-un modul de meniu complet funcțional.

4. Când modulul este gata, tăiați-l într-un folder separat, zarkhivirovat și transformați-l într-un modul modul de distribuție cu drepturi depline Joomla.

Poate că, nu pot în acest articol pentru a acoperi toate nuanțele de „reglaj fin“ al modulului, deoarece, în fiecare caz, este complet diferit și necesită ingeniozitate, abilitate, o parte creativă, „viziune“, ca un modul ar trebui să funcționeze, și, desigur, o mare dorință de a face dvs. modulul de meniu. Cu toate acestea, voi explica cititorului următoarele lucruri:

1. Cum să luați un modul plug-in gol și să faceți un modul din acesta

2. Ce trebuie să cauți când completezi fișa

3. Cum este amenajată implementarea internă a meniului Joomla. Vom scrie o clasă de ajutor, care va face convenabil să lucreze cu meniul.

Instalarea unui modul stub pentru meniul viitor







Fișa (modulul de meniu viitor) se numește mod_colormenu. Structura internă a modulului stub va fi standard pentru majoritatea modulelor și va cuprinde următoarele fișiere și directoare:

Stub-ul nostru este, practic, modulul cel mai simplu, "gol" pentru Joomla 2.5, și nu voi explica cum să-l scriu pentru a economisi timp și spațiu.

Dacă nu sunteți familiarizat cu modulele de scriere pentru Joomla 2.5, atunci puteți găsi informații similare despre cum să scrieți primul modul "HelloWorld" de la zero.

Am instalat-o pe site (de preferință locală), unde va fi realizată dezvoltarea modulului de meniu. Va trebui să avem acces deplin la fișierele din stub. În exemplul nostru, am ales șablonul standard Joomla Beez_20 pentru partea frontală și am setat modulul la poziția 1:

Adaptarea meniului terț sub joomla

Și așa modul nostru plug-in se uită pe site-ul în sine. După cum puteți vedea, în timp ce el doar ieșea o linie de text "Acesta este un stub pentru modulul de meniu":

Adaptarea meniului terț sub joomla

Umplerea fișei

După ce am instalat stubul pe site, începem să-l transformăm încet într-un modul cu drepturi depline. Pentru a evita instalările multiple, prefer să realizez toate editările chiar în locul în care Joomla a instalat modulul. Dupa ce totul functioneaza corect, am pachet fisierele modulului intr-o arhiva si fac o distributie completa. Vom face același lucru. Deci, mergeți la rădăcina site-ului Joomla și deschideți directorul cu fișierele din stub / modules / mod_colormenu /. Primul lucru pe care îl vom face este umplerea logicii cu fișierul helper.php. Creați următoarea clasă MenuItem pentru stocarea elementului de meniu:

Copiem piesa de cod cu definiția clasei MenuItem. și introduceți-o imediat după prima linie, care verifică autorizarea accesului la fișierul helper.php:

Deci, în această etapă, în fișierul nostru helper.php două clase definite - MenuItem și clasa de ajutor - modColorMenuHelper - el a fost o dată în dosar, dar goale, și anume, fără nici o logică. De asemenea, veți observa că render () metoda din clasa MenuItem încă goală. Puțin mai târziu vom scrie codul care va fi folosit acolo.

Meniul Joomla din punct de vedere al bazei de date este prezentat în versiunea Joomla 2.5 în două tabele (pentru versiunile anterioare, de exemplu 1.5 sunt de asemenea două tabele, dar compoziția câmpului este diferită):

  • prefix_menu - acest tabel stochează toate elementele de meniu, iar acest lucru se aplică tuturor nivelelor (elementele imbricate pentru meniurile nivelurilor 2, 3, etc. sunt de asemenea stocate în acest tabel)
  • prefixul _menu_types - acest tabel stochează tipurile de meniuri. De exemplu, dacă creați meniuri noi în managerul de meniuri al Joomla, acestea vor intra în acest tabel

* prefix_ este prefixul de 5 caractere al tabelelor din baza de date. Acesta este definit (generat) în timpul instalării inițiale a Joomla și diferă pentru diferite baze de date. De exemplu, în baza mea de date tabelul este numit astfel: yrepq _menu. tu o vei numi altfel.

Pentru a înțelege mai bine, aici este o imagine care prezintă structura tabelului _menu de prefix:

Adaptarea meniului terț sub joomla

Notă: în capturile de ecran puteți vedea tabelele de baze de date MySQL. Vă recomandăm să descărcați utilitarul Navicat Lite pentru a vă conecta la baza de date MySQL. Este gratuit și vă permite să vizualizați convenabil toate mesele Joomla. Puteți să o descărcați în catalogul nostru aici

De ce am definit clasa MenuItem? De fapt, obiectele din această clasă vor stoca înregistrări din tabela prefixului _menu. Joomla are deja un mecanism de accesare a meniului prin apeluri de sistem. Dar, în opinia mea, nu este foarte convenabil. De aceea, pentru stocarea convenabilă a elementului de meniu și pentru a lucra cu acesta, am scris clasa MenuItem. Pentru a vă orienta mai bine și pentru a înțelege ce este această clasă, voi da o descriere a câmpurilor sale:

Vom scrie o interogare care combină meniul de tabele și tipul de meniu

Acum, că am acoperit scopul câmpurilor de clasă, vă voi explica cum să scrieți o interogare SQL în baza de date Joomla, care va combina două tabele: meniu și tip de meniu. De ce combinați aceste tabele? Și pentru a asocia fiecare element de meniu cu tipul de meniu pentru care este specificat. Să aruncăm o privire la figură pentru a înțelege mai bine cum sunt combinate mesele în câmpul menutype:

Adaptarea meniului terț sub joomla

După cum puteți vedea, menutul de câmp este comun pentru ambele mese. Și va fi o grămadă între elementul de meniu și tipul de meniu. cu care corespunde. Acum rămâne să scriem o astfel de interogare SQL și să o adăugăm la funcția din clasa noastră de ajutor modColormenuHelper. Funcția se numește getDefMenuParams (de la "primiți param. De meniu implicit" - obțineți opțiunile de meniu implicite):

Scriem metoda getMenuItems pentru a obține elemente de meniu

Să scriem în clasa noastră de ajutor modColormenuHelper o metodă pe care o numim getMenuItems:

După acest apel, avem un meniu variabil $. și prin aceasta putem obține informații despre elementele de meniu:

Dar lucrul cu o astfel de matrice nu este în întregime convenabil, pentru că Nu avem o structură pentru a lucra cu ierarhia meniurilor. și anume o astfel de structură care ar permite stocarea convenabilă a informațiilor despre relația "părinte-copil" între elementele de meniu. De aceea am scris clasa noastră MenuItem - pentru a avea o gamă de "copii" (variabilă $ copii) pentru fiecare tip de meniu. Și în metoda considerată doar, vom completa această gamă de copii cu următorul algoritm simplu:

1. Există o serie de elemente de meniu $ resultItems. care trebuie returnate la ieșirea metodei

2. Dacă actualul element de meniu care este procesat este deja un părinte, atunci pur și simplu îl adăugați la $ resultItems

3. Dacă elementul de meniu curent pentru a fi tratat - nu un părinte, atunci vom rula matrice $ resultItems și verificați părintele, la care trebuie adăugată ca un copil al elementului curent







Articole similare

Trimiteți-le prietenilor: