Custom Block Development în Magento

În acest tutorial, vom explora blocurile Magento, una dintre componentele esențiale ale arhitecturii Magento. Vom vedea diferența între blocurile structurale și cele de conținut. Voi demonstra, de asemenea, cum puteți crea programele blocuri personalizate.

Ce sunt blocurile în Magento?

În arhitectura Magento, un "bloc" este unul dintre elementele de primă clasă din structura planurilor Magento. Fiecare pagină din Magento este decorată de fișierul "Layouts", iar conținutul este completat de "Blocurile" diferitelor module. Blocurile Magento sunt o modalitate foarte puternică și flexibilă de a conecta conținutul dvs. la planurile deja existente. Pe de altă parte, puteți utiliza, de asemenea, fișiere XML layout pentru a elimina sau repoziționa cu ușurință orice blocuri existente.

Nu este o surpriză că, având în vedere flexibilitatea arhitecturii Magento, puteți dezvolta propriile blocuri utilizând un modul personalizat în Magento. Spuneți, de exemplu, că doriți să trageți câteva produse speciale pentru sezonul festiv și să le afișați pe prima pagină. În acest caz, ați putea realiza cu ușurință sarcina implementând un bloc personalizat. Și da, este și scopul principal al acestui tutorial!

Blocuri structurale vs. blocuri de conținut

Înainte de a merge mai departe la misiunea noastră personalizată, aș vrea să explic diferența dintre blocurile structurale și conținutul. Să aruncăm o privire rapidă asupra fiecărui tip de bloc.

Blocuri structurale

Am putea spune că "blocurile structurale" sunt containerele care dețin "Blocurile de conținut". Blocurile structurale nu au nici un conținut real de afișat, dar ele afișează, la rândul lor, blocurile de conținut la sfârșit. După cum sugerează și numele, ele sunt folosite pentru a structura conținutul întregii pagini.

De exemplu, "Header", "Footer", "Left" și "Right" sunt blocuri structurale în Magento. "Blocurile de conținut" sunt atribuite pozițiilor structurale diferite ale aspectului paginii Magento, care afișează la rândul său conținutul real al blocurilor de conținut.

Blocuri de conținut

"Blocurile de conținut" reprezintă puterea reală de foc, generând conținutul real al afișajului. Așa cum am discutat în secțiunea anterioară, trebuie să alocați blocul de conținut unuia dintre blocurile structurale pentru afișajul frontal. Există și alte modalități care ne permit să inserăm blocurile de conținut utilizând coduri scurte, dar vom vedea mai multe despre acestea mai târziu.

Blocurile de conținut pot fi de orice formă, de la un simplu bloc de conținut static la o listă cu cele mai recente produse de pe pagina de pornire! De fapt, majoritatea conținutului este generat de blocurile de conținut răspândite pe toate modulele din Magento.

Deci, până acum, trebuie să înțelegeți diferența de bază dintre cele două tipuri de blocuri din Magento. Deci, hai să intrăm și să începem dezvoltarea blocului personalizat!

Dezvoltarea personalizată a blocurilor

Vom dezvolta un modul personalizat Magento personalizat pentru dezvoltarea blocului nostru personalizat. Blocul personalizat va fi un bloc simplu care va afișa cele mai recente produse disponibile în magazin.

Presupun că sunteți familiarizat cu structura și convențiile de bază ale fișierelor modulului Magento. Acum, să vedem structura de fișiere pe care trebuie să o implementăm pentru blocul nostru personalizat.

  • app / etc / module / Envato_All.xml: Este un fișier folosit pentru a permite modulul nostru personalizat.
  • app / code / local / Envato / Recentproducts / etc / config.xml: Este un fișier de configurare a modulelor.
  • app / code / local / Envato / Recentproducts / Model / Recentproducts.php: Este un fișier model care oferă o gamă largă de produse recente.
  • app / code / local / Envato / Recentproducts / Block / Recentproducts.php: Este fișierul bloc principal pentru blocul nostru personalizat.
  • app / proiectare / front-end / default / default / template / recentproducts / recentproducts.phtml: Este un fișier de șablon care conține chestiile legate de XHTML.

Configurarea fișierelor

Conform convențiilor Magento, mai întâi trebuie să creăm fișierul de activare a modulelor. Crea app / etc / module / Envato_All.xml și lipiți următorul conținut în acel fișier. Am folosit-o Envato ca spațiu de nume și modulul nostru Recentproducts ca numele modulului nostru. Ne va permite Recentproducts modul implicit.

     Adevărat local   

Crea app / code / local / Envato / Recentproducts / etc / config.xml și lipiți următorul conținut în acel fișier. Tocmai am declarat numele modelului și blocul clasei conform convențiilor fișierului XML din modulul Magento.

     1.0      Envato_Recentproducts_Block     Envato_Recentproducts_Model    

Acum, creați fișierul model la app / code / local / Envato / Recentproducts / Model / Recentproducts.php. Inserați următorul conținut în fișierul modelului.

getCollection () -> addAttributeToSelect ('*') -> setOrder ('entity_id', 'DESC') -> setPageSize (5); returneaza produse $; 

Așa cum puteți vedea, tocmai am declarat o metodă getRecentProducts care va returna cele cinci produse recent adăugate.

Mai mult, creați app / code / local / Envato / Recentproducts / Block / Recentproducts.php fișier și introduceți următorul cod în acel fișier.

getRecentProducts (); forename ($ produse ca produs $) $ arr_products [] = array ('id' => $ product -> getId (), 'name' => $ product -> getName produs -> getProductUrl (),);  return $ arr_products; 

În contextul tutorialului, acesta este unul dintre cele mai importante fișiere pe care le căutăm! Da, este un fișier legat de blocul nostru personalizat.

În acest fișier, vom apela metoda noastră de model getRecentProducts pentru a încărca matricea produselor utilizând Mage :: getModel frumusețea Magento. Apoi vom repeta datele și vom configura $ arr_products array care va fi necesar în fișierul șablon bloc.

În cele din urmă, vom avea nevoie de un fișier de șablon app / proiectare / front-end / default / default / template / recentproducts / recentproducts.phtml. Conține codul XHTML asociat afișării produselor.

getRecentProducts (); ?> 

Produse recente

„>

Mai întâi, preluăm matricea de produse utilizând getRecentProducts metoda blocului. Odată ce obținem acest lucru, vom repeta pur și simplu datele și vom pregăti codul XHTML pentru blocul nostru. Este la fel de simplu ca asta!

Am terminat modulul de bloc personalizat, deci în următoarea secțiune vom vedea cum putem folosi codurile scurte de bloc pentru a afișa blocul nostru în paginile de front.

Testarea frontului frontal

Așa cum am discutat mai devreme, blocurile de conținut sunt afișate prin alocarea acestora la unul din blocurile structurale. Și da, puteți atribui blocurile personalizate în același mod în care sunt alocate celelalte blocuri de bază din Magento, fie prin fișiere de layout sau prin pagini CMS.

Pentru a introduce blocul personalizat utilizând fișierul de actualizare a aspectului, puteți utiliza următorul cod.

Pe de altă parte, dacă doriți să afișați blocul personalizat utilizând pagina CMS, aici este codul pe care trebuie să îl utilizați.

bloc type = "recentproducts / recentproducts" name = "recentproducts_recentproducts" template = "recentproducts / recentproducts.phtml"

Să vedem rapid cum arată în partea frontală când este introdusă prin una din paginile CMS. Conectați-vă la back-end-ul Magento și mergeți la CMS> Pagini, și adăugați o nouă pagină CMS utilizând Adăugați o pagină nouă. Completați informațiile necesare și lipiți codul de blocare al blocului, așa cum se arată în următoarea imagine de ecran.


Salvați pagina și mergeți la partea frontală pentru a vedea cum arată!


Arată grozav, nu-i așa? Deci, asta e pentru moment și mă voi întoarce cu niște lucruri mai interesante. Dragoste pentru a vă auzi gândurile folosind feed-ul de mai jos.

Cod