O introducere a începătorului în modulul de scriere în ProcessWire

Modulele ProcessWire vă permit să extindeți funcționalitatea administratorului CMS, să adăugați noi integrații API și, în general, să suprapinați site-ul dvs. Adesea mă găsesc că mă aflu la pagina modulelor ProcessWire (PW) pentru a vedea dacă există o soluție pre-făcută pentru problema mea actuală; și, de obicei, răspunsul este da!

Cu toate acestea, atunci când trebuie să creați ceva nou, PW, ca șabloanele sale, vă oferă puterea API-ului împreună cu PHP.

În acest tutorial vom învăța cum să creați și să instalați module, să examinați cerințele acestora și să explicați cum să utilizați cârligele PW pentru a adăuga funcționalități altor funcții din site-ul dvs..

instalarea

Este important să știți cum să instalați un modul dacă nu ați făcut-o deja. În urma acestui proces, vă vom arăta unde vor apărea informațiile și configurația modulului dvs., modul de dezinstalare a acestuia și modulele instalate care pot fi extinse.

  1. Încărcați fișiere modul la / Site / module /.
  2. În cadrul administratorului PW, în meniul de sus mergeți la module și faceți clic pe butonul Reîmprospăta.
  3. Acum noul dvs. modul va fi listat și poate fi instalat făcând clic pe Instalare.

Crearea unui modul

cerinţe

Să începem să creăm un nou modul. PW are nevoie doar de câteva lucruri din modulul dvs.:

  • un nume de clasă (de exemplu, HelloUserYouSaved)
  • clasa ar trebui să extindă o clasă de bază PW(de exemplu, Process, Wire sau WireData)
  • clasa dvs. ar trebui să implementeze clasa "Modul"
  • și fie statică getModuleInfo () sau un fișier "ModuleName.info.php" sau un "ModuleName.info.json" din dosarul modulului. Această metodă oferă informații despre modulul dvs. pentru a fi afișate în admin.
class HelloUserYouSaved extinde WireData implementează modulul funcția publică statică getModuleInfo ()  

Prin extinde WireData Am dat noului meu modul accesul la API-ul PW și metodele moștenite de la WireData.

Modulul nostru este destul de plictisitor acum, deci să adăugăm câteva informații despre module, astfel încât alți utilizatori să poată vedea ce face.

getModuleInfo ()

class = "HelloUserYouSaved", "version" => "0.0.1", "summary" => "HelloUserYouSaved afișează mesaje după acțiuni în PW "," autor "=>" Ben Byford "," href "=>" https://github.com/benbyford/PW-starter-modules/tree/master/HelloUserYouSaved "," icon "=>" clopot " // Folosiți autoload dacă modulul trebuie să fie numit fiecare încărcare, dacă este necesar numai pentru a seta ceva setat la false 'autoload' => true, 'singular' => false, 'necesită' => "ProcessWire> = 2.5" ); 

Pentru o listă completă a opțiunilor, consultați referința modulului. rezumat , versiune și titlu sunt necesare, dar este de asemenea recomandabil să adăugați cerințele modulului dvs., singular (adevărat dacă este permisă doar o singură copie a acestui modul per instalare PW) și autoload (modul de apelare real la fiecare cerere).

Hooks

Pentru toate modulele (chiar și modulele de bază) din cadrul PW, puteți crea funcții atractive pentru a permite altor module să se declanșeze metodele de utilizare a acestora. De exemplu, putem crea un cârlig care declanșează o nouă metodă ___helloMessage de fiecare dată când o pagină este salvată cu PW. Puteți spune ce metode sunt accesibile deoarece au trei subliniere înaintea numelui lor, ceea ce înseamnă că noua noastră metodă este, de asemenea, accesibilă și altor module.

funcția publică init () // adăugați cârlig în clasă și indicați funcția personalizată helloMessage $ this-> addHookAfter ("Pages :: save", $ this, "helloMessage"); Parent :: init ();  funcția publică ___ helloMessage ($ event) // Obțineți în curând un obiect de pagină salvat din evenimentul dat $ page = $ event-> arguments [0]; // foloseste mesajul () pentru a trimite alerta de salut la PW // alerta va fi afisata dupa salvarea oricarei pagini admin. $ this-> message ("Hello $ this-> user-> name! Ai salvat $ page-> name."); 

În codul de mai sus, puteți vedea modul în care adăugăm un cârlig la modulul Pagini principale care declanșează după metoda de salvare, care sună ___helloMessage metodă. Avem opțiunea de a adăuga cârlige înainte sau după utilizarea metodei: $ This-> addHookBefore () și $ This-> addHookAfter () respectiv. Pe măsură ce vom trimite mesajul utilizatorului după salvarea paginii, vom folosi cârligul după variație.

Cârligele sunt peste tot în interiorul PW și, după ce ați reușit să obțineți capul în jurul lor, puteți să vă așezați în majoritatea părților sistemului pentru a modifica comportamentul implicit sau a declanșa un nou comportament. Iată o listă a modulelor de bază și a metodelor lor de accesare.

Codul sursă complet pentru modulul "HelloUserYouSaved" poate fi găsit pe GitHub.

getModule ()

De asemenea, puteți utiliza module pentru a transmite date sau marcaje în șabloanele dvs. Orice funcție publică disponibilă în modulul dvs. poate fi apelată în șabloane pentru a afișa un rezultat. De exemplu, modulul MarkupTwitterFeed poate fi utilizat pentru a genera tweets prin adăugarea acestui cod la șablon:

$ t = $ module-> getModule ("MarkupTwitterFeed"); echo $ t-> render ();

Codul de mai sus utilizează getModule () și stochează obiectul astfel încât face() funcția poate fi utilizată.

În acest al doilea modul "FrontEndRender" o funcție numită face() este implementat pe care îl putem folosi mai târziu în șabloanele noastre pentru a ne întoarce Salut și o variabilă protejată numele $.

clasa FrontEndRender extinde aplicațiile WireData Module funcția publică statică getModuleInfo () return array ('title' => 'FrontEndRender', 'version' => 0.1, 'summary' => '=>' Ben Byford ',' singular '=> true,' href '=>' https://github.com/benbyford/PW-starter-modules ');  // variabila protejată accesibilă numai în modul protejat $ name = 'Ben'; funcția publică render () return "Hello". $ This-> nume; 

Putem repeta rezultatul oriunde în șablonul nostru (de exemplu, fișierul nostru "_main.php") utilizând:

$ FrontEndRender = $ modules-> getModule ('FrontEndRender'); echo "

". $ FrontEndRender-> render (). '

„;

Codul sursă complet pentru serviciul nostru „FrontEndRender "poate fi găsit pe GitHub.

Înfășurarea în sus

În acest tutorial, am analizat instalarea și crearea de module simple în ProcessWire. Am implementat, de asemenea, un cârlig și un conținut redat la capătul frontal, folosind modulele personalizate.

Mai sunt multe de spus despre module, așa că rămâi acordat pentru mai multe Tutoriale de modelare a modulului PW și găsești mai multe informații despre module în resursele de mai jos.

Resurse

PHP

ProcessWire

  • Introducerea modulelor pe processwire.com
  • Modulele docs de pe processwire.com
  • PW Hooks cheatsheet pe processwire.com
  • GetModule () pe processwire.com
  • Module creator boilerplate pe module.pw