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.
Î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!
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ă:
Î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!
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!