Extinderea administratorului ProcessWire utilizând module personalizate

În acest tutorial vom examina extinderea administratorului ProcessWire folosind module personalizate. Cu trei exemple de module vă voi oferi un gust mic al puterii pe care Modulele ProcessWire le au pentru a adăuga noi funcționalități administratorului.

Creați pagini de administrator personalizate

Crearea de pagini pentru site-ul dvs. în ProcessWire (PW) nu ar putea fi mai ușoară, dar cum rămâne cu crearea de pagini personalizate în CMS? Spuneți că doriți să creați o pagină cu setări personalizate, întrebări frecvente sau o pagină video?

Citește mai departe, ne-am luat spatele.

Modulul ProcessSimpleAdminPage arată simplu pentru a crea un modul care extinde clasa Process pentru a adăuga un nou proces de administrare și apoi a crea o pagină pentru noul proces. Proces este clasa de bază pentru administratorul PW, astfel încât să îl putem folosi pentru a crea o pagină care să afișeze conținutul nostru.

Bacsis: Noul modul de extindere a procesului poate afișa, de asemenea, formulare și alte funcționalități, precum și conținut retur.

Vom crea un proces nou care returnează un anumit conținut, apoi creează o pagină nouă în navigația de administrare pentru a ajunge la acel conținut (în acest exemplu am numit pagina "Întrebări frecvente despre CMS"). Pentru a construi modulul nostru începem prin crearea unui fișier numit "ProcessSimpleAdminPage.module" și salvarea detaliilor modulelor sale.

Clasa ProcessSimpleAdminPage extinde Procesul funcția statică publică getModuleInfo () return array ('title' => 'Process Simple Admin Page', 'summary' => 'Modul simplu de proces care adaugă o nouă pagină de administrare cu', 'version' = ,);  funcția publică execute () return ' 

Editați textul aici în modul

Lorem ipsum dolor stați amet, consectetur adipiscing elit. Nullam matos eros vitae metus sodales eget suscipit purus rhoncus. Proin ultrices gravida dolor, non portitor enim interdum vitae. Integer feugiat lacinia tincidunt. Nulla laoreet tristique tristique. Elementul elementar se află într-un element elementar și se află acum în spațiu temporal. Nulla quis eros et masa dignissim imperdiet a vitae purus.

„;

În acest moment, dacă am instala modulul nostru, vom avea tot ceea ce avem nevoie pentru a crea noul nostru Proces ProcessSimpleAdminPage și returnează conținutul. Cu toate acestea, în prezent nu există nici o pagină care să execute codul nostru. Avem mai multe opțiuni pentru a face acest lucru:

  1. Creați manual o pagină nouă în paginile paginii PW sub admin, da-i șablonul admin și în domeniu Proces: ProcessSimpleAdminPage. Mutarea noii pagini în lista pag Setări, de exemplu, va vedea pagina adăugată la navigația de sus de sub Setări.
  2. Adauga o paginăatribuiți modulului getModuleInfo () matrice. Dacă modulul extinde Procesul (pe care-l face), apoi adăugăm a paginăatribut matrice cu cel puțin a Nume și mamă la instalare va crea în mod automat o nouă pagină de admin subspecificat mamă cu modulul ca proces. Iată un exemplu din modulul de salut.
  3. Crea instalare() și dezinstalare () și adăugați noua pagină. Acest lucru este detaliat mai jos pentru a vă arăta cum puteți adăuga o pagină:
funcția publică instalează () // crea o pagină nouă pentru a adăuga la CMS $ page = new Page (); // adăuga atributele paginii, am denumit această pagină FAQ CMS '$ page-> template = "admin"; $ pagina-> nume = "cms-faq"; $ page-> title = "Întrebări frecvente despre CMS"; $ Web-> Salvare (); // setați acest modul ca proces al paginii, acest lucru ne permite să afișăm pagina de mai sus $ process = 'ProcessSimpleAdminPage'; // obține pagina de administrare și setați ca pagină părinte $ admin = $ this-> pages-> get ("id = 2"); $ page-> parent = $ admin; // salva pagina $ page-> save ();  dezinstalați funcția publică () // șterge pagina creată $ page = $ this-> pages-> get ("name = cms-faq"); dacă (numără ($ pagină)) $ this-> pages-> delete ($ page, true);  

Mergeți și creați pagini de admin pentru site-ul dvs. web!

Adăugați formatatorul de text personalizat

Prin utilizarea formatelor de text puteți manipula câmpurile de text cu ajutorul administratorului PW. De exemplu, spuneți că doriți să creați fragmente de cod care sunt adăugate în loc de cineva care introduce propriile fragmente, este perfect posibil (în mod similar cu pluginul HTML pentru Word).

De data aceasta am creat un modul care extinde o alta clasa de formate de baza pentru a crea noul nostru modul TextformatterFindReplace și a creat un fișier de configurare separat:

clasa TextformatterFindReplace extinde Textformatter implementează modulul funcția statică publică getModuleInfo () return array ('title' => 'TextformatterFindReplace', 'version' => 0.1, 'summary' => "Găseste și înlocuiește orice instanță a config "," singular "=> adevărat,);  / ** * Găsiți și înlocuiți șirul de intrare * * @param string $ str Blocul de text pentru a analiza * * Șirul de intrare este înlocuit cu versiunea formatată a acestuia. ** / formatul funcției publice (& $ str) $ find = $ this-> findStr; $ str = preg_replace_callback ($ find, array ($ this, "replace"), $ str);  // adăugarea a trei subliniere la o funcție permite altor module să-l cârlig funcția publică ___ replace ($ match) return $ this-> replaceStr;  
clasa TextformatFindReplaceConfig extinde modululConfig funcția publică getDefaults () return array ('findStr' => '----', 'replaceStr' =>TEXTUL ÎNLOCUIT',);  / * * getInputfields () * întoarcere: $ inputfields * / // a crea un formular în cadrul administratorului PW pentru a permite configurarea funcției publice a modulului getInputfields () // obține modul getInputfields set config class $ inputfields = parent :: getInputfields; // primiți modulul InputfieldText $ f = $ this-> modules-> get ('InputfieldText'); $ f-> attr ('nume', 'findStr'); $ f-> label = 'Găsiți în text'; $ f-> description = 'Adăugați un cuvânt sau un model pentru a găsi și a înlocui textul.'; // adăugați introducerea rolului utilizatorului pentru a forma config $ inputfields-> add ($ f); // primi nou modul InputfieldText $ f = $ this-> modules-> get ('InputfieldText'); $ f-> attr ('nume', 'replaceStr'); $ f-> label = 'Înlocuire text'; $ f-> description = 'text pentru a fi afișat pe partea frontală.'; // adauga pagina Redirect input pentru a forma config $ inputfields-> add ($ f); // returnează modulul de intrare config întoarcere $ inputfields;  

Acum, în setările modulului pot specifica un șir de potrivire și un șir pentru al înlocui cu (în exemplul nostru de mai sus implicit se găsește: ---- și înlocuiți cu TEXTUL ÎNLOCUIT).

Tot ce trebuie să fac este să adaug noul TextFormatter la un câmp de text în fila detaliilor câmpului. Acum de fiecare dată când scriu ---- Voi primi șirul de text înlocuit.

Adăugați funcționalitate nouă paginilor de admin

Deoarece administratorul PW este creat în sine folosind biblioteca asemănătoare API-ului PW, modulele PW au destul de mult acces la cârlig oriunde ai nevoie.

Pentru ultimul meu exemplu de extindere a administratorului PW, am creat un modul care adaugă butoane pe pagina de editare și pagetree, creează două câmpuri noi și le adaugă la nivel global pentru fiecare pagină. Este nevoie de un alt modul, LazyCron, pentru a funcționa.

Modulul PageDeferredPublish, dând clic pe unul dintre Publicați mai târziu butoane, setarea LazyCron pentru a verifica numarul inversat al paginii la fiecare minut si a publica pagina cand numarul inversat atinge 0. Aceasta inseamna ca pot publica o pagina cu aproximativ 24 de ore in avans (evident, intervalul de verificare si timpul de intarziere pot fi modificate in functie de cerintele dumneavoastra).

Am facut acest lucru prin:

  • Crearea a două câmpuri în interiorul meu instalare() : un câmp de casetă de selectare pentru a seta la true când un buton este bifat pentru a indica că pagina trebuie să numere inversă și un câmp de numărătoare inversă pentru a stoca numărul în secunde pentru acea pagină specifică.
  • Adăugarea de cârlige atât la ProcessPageEdit :: buildForm și ProcessPageListActions :: getExtraActions, permițându-mi să adaug cele două butoane.
  • Verificați dacă unul dintre butoane a fost dat pe clic cu funcția gata (), apoi setați caseta de validare corespunzătoare paginii corespunzătoare.
  • Folosind o funcție de cârlig LazyCron pentru a verifica toate paginile care nu sunt publicate pentru căsuțele de validare și apoi pentru a compara câmpul secunde pentru a vedea dacă pagina are nevoie de publicare. Dacă nu, atunci deduceți timpul scurs în secunde.

Rezultatul este un modul care are setări (intervalul de timp pentru a verifica și publica într-o perioadă ulterioară), cârlig în admin folosind butoanele și câmpurile și ne permite să folosim alte module instalate în PW (adică LazyCron).

Înfășurați-vă

De multe ori, un modul de care aveți nevoie a fost deja creat și poate fi descărcat de pe pagina modulului PW. Cu toate acestea, dacă vă aflați în nevoie este frumos să știți că este relativ ușor să sari, să extindeți o clasă de bază și să creați noi funcții care să vă rezolve problema sau să modifice soluția implicită a PW.

Sper că ați găsit acest degustator mic de putere de extindere a utilității PW și vă rugăm să verificați celelalte tutoriale ProcessWire de pe Envato Tuts + pentru mai multe sfaturi și trucuri.

Resurse utile

  • O introducere a începătorului în modulul de scriere în ProcessWire
  • Module docs
  • Modul config personalizat
  • Modul dependente
  • Cârlige aplicabile