Înțelegeți suprascrierea în Magento blocuri

Este întotdeauna o caracteristică importantă pentru orice cadru care să susțină extensibilitatea și scalabilitatea în nucleul propriu-zis. Este atât de adevărat pentru Magento, care permite programatorilor să creeze extensii personalizate pentru a îndeplini cerințele personalizate, oferind astfel extensibilitate. Pe de altă parte, vă permite de asemenea să înlocuiți fișierele de bază pentru a modifica fluxul și comportamentul caracteristicilor principale ale Magento.

Există modalități diferite în Magento care vă permit să înlocuiți fișierele de bază. Una dintre ele este implementarea modelului de observator de evenimente. Folosind această metodă, veți defini observatori din modulul dvs. pentru evenimentele dorite și vor fi preluați atunci când evenimentele asociate vor fi ridicate în Magento. Este cu siguranță un mod puternic și standard de a conecta modificările la modulele de bază ale Magento. Acestea fiind spuse, există situații în care veți simți că ar fi minunat dacă ați putea pur și simplu să înlocuiți fragmentele de bază ale fișierelor cu cele ale dvs. Puteți face acest lucru utilizând un fișier de configurare XML în modulul dvs. personalizat.

De ce blocuri de overriding?

În Magento, blocurile sunt elemente de construcție primitive pentru orice aspect în partea frontală. Deși puteți înlocui fișierul șablon al oricărui bloc folosind o temă personalizată pentru a schimba ieșirea vizuală, uneori doriți să modificați logica blocului de bază. În acest caz, suprascrierea unui bloc de bază cu fișierul blocului personalizat al modulului vă ajută să conectați modificările uşor.

În acest tutorial, vom face un modul personalizat pentru a înțelege modul în care funcționează blocul de suprascriere în Magento. În modulul personalizat, vom înlocui un bloc de afișare a produselor afișat în vizualizarea de pagină a categoriei. Împuternicirea funcționează prin crearea unor etichete XML conform convențiilor Magento.

Presupun că sunteți familiarizat cu procesul de creare a modulului de bază în Magento. Iată un articol frumos care explică elementele de bază ale creării modulelor personalizate, doar în cazul în care doriți să aruncați o privire la ele! Să mergem imediat în conținutul acestui tutorial!

O privire la o instalare

Vom crea un modul personalizat simplu numit "Catalog", care stabilește o suprascriere a blocului de bază de produse (app / code / core / Mage / Catalog / Block / Category / View.php) în vizualizarea de pagină a categoriei. Iată o listă a fișierelor necesare pentru configurația dorită:

  • app / etc / modules / Envato_All.xml: Este un fișier folosit pentru a permite modulul nostru personalizat.
  • app / code / local / Envato / Catalog / etc / config.xml: Este un fișier de configurare a modulului în care vom seta blocul de suprascriere folosind anumite etichete conform convențiilor Magento.
  • app / code / local / Envato / Catalog / Bloc / Categorie / View.php: Este noul nostru fișier bloc care va înlocui un fișier bloc de bază.

Crearea de fișiere și foldere: Modul personalizat

În primul rând, trebuie să creăm un fișier de activator de module. Creați un fișier "app / etc / modules / 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 Catalog ca numele modulului nostru. Acesta va permite modulul nostru Catalog în mod implicit.

    Adevărat local   

Apoi, trebuie să creați un fișier de configurare a modulului. Creați "app / code / local / Envato / Catalog / etc / config.xml" și lipiți următorul conținut în acel fișier.

    1.0       Envato_Catalog_Block_Category_View     

La începutul modulului, am setat numărul versiunii modulului folosind  etichetă. După aceea,  și etichetele sunt folosite pentru a informa sistemul de suprascriere Magento că vom trece peste unul din "blocurile" modulului de bază "Catalog".

Mai mult,  tag este folosit pentru a defini o identitate de bloc care va fi suprascris de către Envato_Catalog_Block_Category_View clasă. Este mapat la un fișier bloc "Categorie / View.php" din directorul "Block" al modulului Catalog. Lucrul important de observat aici este că urmăm o structură de directoare similară modulului de bază. Deși acest lucru nu este absolut necesar, este preferat structura directorului diferit pentru a menține lizibilitatea.

În cele din urmă, singurul lucru rămas este definirea unei clase de blocuri Envato_Catalog_Block_Category_View. Să creați un fișier bloc "app / code / local / Envato / Catalog / Bloc / Categorie / View.php" și completați-l folosind următorul conținut.

getChildHtml ( 'product_list'); 

Am definit-o Envato_Catalog_Block_Category_View clasa care extinde nucleul Mage_Catalog_Block_Category_View bloc clasa. Astfel, puteți suprascrie fiecare metodă a clasei de bază și puteți crea noi metode dacă este necesar.

În exemplul de mai sus, getProductListHtml metoda este suprascrisă, deci va fi apelată în vizualizarea categoriei de pagină! Puteți modifica codul conform cerințelor dvs..

Deși este un exemplu foarte simplu, servește scopului de a elimina blocul de bază și îl puteți modifica pentru a face lucrurile mai complexe și a crea ceva mai util!

Concluzie

Astăzi, în primul articol din această serie, am învățat cum să ignorăm blocurile de bază ale Magento. În partea următoare, voi veni cu lucruri mai interesante! Mi-ar plăcea să vă aud comentarii și întrebări în feedul de mai jos!

Cod