Crearea modulelor - lucrul cu fișierele de sistem - dezvoltatorii - docs de imagecms

Partea tehnică a modulului

Extensibilitatea sistemului depinde în mod direct de module, care sunt mici programe. Acestea sunt de multe ori soluții terțe, dar utilizează de asemenea nucleul funcțional al ImageCMS sau pot interacționa cu alte instrumente de sistem. Una dintre sarcinile principale ale sistemului modular este extinderea funcționalității CMS fără a fi nevoie să editați alte fișiere, adică autonomie. Această abordare simplifică susținerea viitoare a funcționalității și a actualizării. Atunci când creați un modul, trebuie să ne străduim întotdeauna să facem o schimbare pe partea fișierelor noastre, fără a schimba nucleul sau alte evoluții. Dar, uneori, poate fi o sarcină foarte dificilă.

Structura fișierelor ImageCMS

Toate fișierele de sistem sunt împărțite în directoare pentru a simplifica navigarea. Cele mai multe dintre ele au fost dictate de cadru și am decis să nu intervenim aici. Asamblarea standard a ImageCMS constă din următoarele elemente principale:

  • / application - un dosar comun în care sunt combinate fișierele principale ale sistemului.
  • / application / config - sunt colectate fișierele celor mai diferite configurații. Din înregistrările detaliilor de acces la baza de date, înainte de a manipula autoloading-ul anumitor părți ale sistemului.
  • / application / modules - aici sunt modulele disponibile pentru sistem.
  • / sistem - dosarul sistemului din cadrul CodeIgniter. Cele mai multe clase din acest dosar pot fi moștenite sau utilizate.
  • / șabloane - un dosar în care sunt localizate șabloane globale, care pot fi folosite pentru a construi un site.
  • / uploads - dosarul media, unde, în cea mai mare parte, sunt plasate elementele grafice ale site-ului utilizatorului (imagini ale galeriei, articolelor, conținutului grafic pentru articole etc.). Alte fișiere pot fi de asemenea conținute. Are drepturi de scriere.
  • index.php - fișierul este punctul de intrare pentru lucrul cu sistemul, iar pe umeri este sarcina inițializării variabilelor globale principale.
  • .htaccess - conține intrări pentru server despre regulile de pornire ale sistemului și rezolvă alte sarcini (în special, procesarea NC).

Structura dosarului modulului

Ne-am amintit deja de dosarul în care se află modulele sistemului, și anume directorul / aplicația / modulele. Mai departe vor fi descrise recomandările noastre privind structurarea modulului dumneavoastră. Am decis această abordare, deoarece am considerat convenabil pentru navigarea în structură și intuitiv de înțeles pentru dezvoltator. Iată cum vor fi organizate fișierele:

Apoi, vom discuta toate acestea în detaliu și vom susține un exemplu care va arunca o lumină asupra tuturor colțurilor întunecate, dacă vreți să rămână. Dar înainte de asta - ultimul pas. Să examinăm alte recomandări și specificații ale dezvoltatorilor înainte de a scrie modulul.

Specificații. Codificarea standard

Iată instrucțiunile de bază pe care trebuie să le urmați pentru a nu se confrunta cu una dintre greșelile comune.

  • Dosarul în care vor fi stocate fișierele modulului dvs. trebuie să aibă un nume unic, comparabil cu numele modulului, să nu conțină litere mari. Poate conține caracterul de subliniere "_". Trebuie să fie localizat în / application / modules;
  • Principalul fișier PHP trebuie să aibă același nume ca și dosarul părinte, iar același nume trebuie să aibă o clasă declarată în el.
  • clasa "Admin" din fișierul admin.php cu același nume, care este responsabil pentru lucrul cu modulul din partea administrativă, trebuie să fie moștenit de la clasa parentală "BaseAdminController"

Crearea propriului modul

Stabiliți obiective

Organizarea structurii fișierelor

Să începem cu organizarea structurii fișierelor. Vom lua în considerare modulul nostru ca exemplu și, prin urmare, îl vom aloca exact numele. Nu este foarte original, dar destul de confortabil. Creați directorul "sample_module" și plasați-l în "/ application / modules /". Trebuie să creați alte directoare și fișiere necesare, urmând exemplul descris în secțiunea "Structura dosarului modulului". Există o opțiune alternativă care vă va elibera de munca inutilă: faceți o copie a dosarului "module_skeleton" și faceți redenumirea elementelor necesare. "Module_skeleton" nu este altceva decât cadrul modulului cu structura afișată și toate declarațiile necesare din interior. Utilizați metoda pe care ați considerat-o convenabilă pentru dvs. - și acest pas pe care l-am încheiat deja.

Pregătirea cadrului software

Mai întâi, să examinăm ce va conține clasa principală Sample_Module.php

Crearea modulelor - lucrul cu fișierele de sistem - dezvoltatorii - docs de imagecms

Poate că la prima vedere sarcina va părea prea complicată sau complicată, dar atunci veți vedea cât de ușor este să implementați toate acestea cu ImageCMS în tandem cu CodeIgniter. Pe această muncă pregătitoare, am dezmembrat, putem trece la primul pas - pregătirea modulului pentru instalare.

Pasul 1: Instalați modulul

Când utilizatorul instalează modulul din partea administrativă, va fi apelată metoda _install ().

Aici putem descrie toate funcțiile necesare care determină funcționarea stabilă a modulului, de exemplu actualizarea tabelelor necesare sau crearea unor noi. În cazul nostru, este necesar să creați o tabelă pentru modulul în care vom stoca setările. Să o numim "mod_sample_settings". Prefixul "mod_" este obligatoriu și este utilizat pentru a facilita separarea vizuală a tabelelor pentru sistem și module.

Crearea modulelor - lucrul cu fișierele de sistem - dezvoltatorii - docs de imagecms

Acest cod va crea un tabel pentru noi și vom insera "mailTo", "useEmailNotification" și "key" în câmpurile sale.

Pasul 2. Creați interfața de administrare

Șablonul settings.tpl va afișa 3 câmpuri pentru introducerea informațiilor. Pentru a le completa, trebuie să interogăm valorile din baza de date unde sunt stocate (acestea au fost create când modulul a fost instalat). Utilizăm clasa de lucru cu șabloanele. Transmitem un șir de valori șablonului folosind metoda setData (). Rețineți că în șablon, cheia matricei va fi variabila. Folosind metoda renderAdmin (), vom emite o comandă pentru a afișa șablonul specificat în primul argument. Mai multe despre utilizarea clasei de șabloane și câteva exemple pot fi găsite în secțiunea clasă assetManager sau pe pagina de discuții Idea.ImageCMS.net (CMSFactoryassetManager Class). Să vedem ce avem.

Crearea modulelor - lucrul cu fișierele de sistem - dezvoltatorii - docs de imagecms

În formă, metoda updateSettings () este specificată ca parametru "acțiune", va salva datele actualizate. Solicitarea nu ar trebui să vă surprindă deloc, cu excepția cazului în care există o lipsă de validare. Dar lasă-mă să las asta pentru următoarea lecție. Încercați să modificați datele în formular și să confirmați salvarea. Sistemul v-a notificat că acțiunea a avut succes. Toate deoarece, la sfârșitul metodei, formăm răspunsul și îl returnez folosind "showMessage".

Voi aborda tema modului în care vor fi transferate aceste date. În ImageCMS, acest lucru se realizează prin accesarea unei adrese URL corect formate. În cazul nostru, va arăta astfel: www.sitename.com/sample_module/changeStatus/144/0/UUUsssTTTeee

Pentru o înțelegere mai profundă, împărțiți URL-ul în segmente și analizați-le:

Ei bine, acum știm cum va apărea gestionarea adreselor URL. În secțiunea următoare, vom aborda subiectul aranjării unei litere în corpul căruia această adresă URL va fi corect formată. Acest subiect atrage puțin mai multe cunoștințe, așa că acum propun să ia în considerare procesul de scriere a unui handler.

  • În primul rând, verificăm valabilitatea datelor de intrare;
  • Să ne întoarcem la baza de date pentru a schimba starea;
  • Afișați utilizatorului un mesaj despre operațiunea de succes;

Pasul 4. Interceptați evenimentul și trimiteți mesajul

În handler vor fi doar două linii:

Adăugați informații despre pagină - purtătorul modulului

Vom forma corpul scrisorii din șablon. De exemplu, am luat prima scrisoare în căutarea mea.

Vom forma corpul scrisorii din șablon. De exemplu, am luat prima scrisoare în căutarea mea.

După șablonare, mesajul $ va conține textul mesajului și scrisoarea în sine este gata să fie trimisă. Configurați trimiterea unui mesaj

Crearea modulelor - lucrul cu fișierele de sistem - dezvoltatorii - docs de imagecms

Să ne întoarcem la locul unde am început (totaluri)

Te pot felicita - ne-am descurcat cu sarcina. Decizia noastră a fost următoarea:

Informații suplimentare

Despre module_info.php

Acest fișier se află în dosarul rădăcină al modulului și servește ca o descriere a nevoilor sistemului și utilizatorilor. Conține o serie de date $ com_info cu următoarele perechi cheie-valoare:

Afișarea șabloanelor

Pentru a lucra cu șabloanele în modulele ImageCMS, utilizați clasa assetManager cu spațiul de nume CMSFactory. Iată o listă de metode reprezentate în clasă:

  • setData ($ arg1, $ arg2) - transferă date către șablon;
  • registerScript ($ name) - conectează fișierul JS la sfârșitul documentului;
  • registerStyle ($ name) - conectează fișierul CSS la începutul documentului;
  • renderAdmin ($ tpl_name) - afișează șablonul specificat. Folosit pentru a afișa șabloane în partea administrativă;
  • rendere ($ tpl_name, $ ignoreWrap = FALSE) - afișează șablonul specificat. Al doilea parametru este Boolean și specifică dacă să se afișeze șablonul în contextul principal sau să se ignore;
  • fetchTemplate ($ tpl_name) - spre deosebire de render, returnează rezultatul șablonării.

Când lucrați cu un șablon, este permisă o metodă de lipire lipicioasă. Pentru anunț:

  • scrie o clasă;
  • metoda statică create ();
  • Următoarele instrucțiuni urmează;
  • asigurați-vă că ați rezolvat toate metodele de afișare a șabloanelor.

Fișierele de script vor fi plasate în partea de jos a fișierului, înainte de eticheta de închidere, iar fișierele de stil vor fi plasate în design.

concluzie