È sempre una caratteristica importante per qualsiasi framework supportare l'estensibilità e la scalabilità nel core stesso. È così vero per Magento, che consente ai programmatori di creare estensioni personalizzate per soddisfare i requisiti personalizzati, offrendo così un'estensione. D'altra parte, consente anche di sovrascrivere i file core per alterare il flusso e il comportamento delle funzionalità principali di Magento.
Ci sono diversi modi in Magento che ti permettono di sovrascrivere i file principali. Uno di questi è l'implementazione del pattern Event Observer. Usando questo metodo, definirai osservatori nel tuo modulo per gli eventi desiderati, che verranno raccolti quando gli eventi associati vengono generati in Magento. È certamente un modo potente e standard per collegare le modifiche ai moduli principali di Magento. Detto questo, ci sono situazioni in cui sentirai che sarebbe bello se tu potessi semplicemente sostituire i frammenti di file core con quelli tuoi. Puoi farlo usando un file di configurazione XML nel tuo modulo personalizzato.
In Magento, i blocchi sono componenti di costruzione primitivi per qualsiasi layout nel front-end. Sebbene sia possibile sovrascrivere il file modello di qualsiasi blocco utilizzando un tema personalizzato per modificare l'output visivo, a volte si desidera modificare la logica del codice di blocco principale. In tal caso, sovrascrivere un blocco principale con il file di blocco del modulo personalizzato aiuta davvero a collegare le modifiche facilmente.
In questo tutorial, creeremo un modulo personalizzato per capire come funziona il blocco dell'overriding in Magento. Nel modulo personalizzato, sostituiremo un blocco di elenco prodotti visualizzato nella visualizzazione della pagina categoria. L'override funziona impostando determinati tag XML secondo le convenzioni di Magento.
Presumo che tu abbia familiarità con il processo di creazione del modulo di base in Magento. Ecco un bell'articolo che spiega le basi della creazione di moduli personalizzati, nel caso in cui ti piacerebbe dargli un'occhiata! Passiamo subito al contenuto di questo tutorial!
Creeremo un semplice modulo personalizzato denominato "Catalogo", che imposta l'override del blocco di elenco dei prodotti principali (app / codice / core / Mago / Catalogo / Blocco / Categoria / Visualizza.php) nella visualizzazione della pagina delle categorie. Ecco un elenco dei file richiesti per la configurazione desiderata:
Per prima cosa, dobbiamo creare un file di abilitazione del modulo. Crea un file "app / etc / modules / Envato_All.xml" e incolla i seguenti contenuti in quel file. Noi abbiamo usato Envato
come il nostro spazio dei nomi del modulo e Catalogare
come il nome del nostro modulo. Abiliterà il nostro modulo Catalogo per impostazione predefinita.
vero Locale
Successivamente, dobbiamo creare un file di configurazione del modulo. Crea "app / code / local / Envato / Catalog / etc / config.xml" e incolla i seguenti contenuti in quel file.
1.0 Envato_Catalog_Block_Category_View
All'inizio del modulo, abbiamo impostato il numero di versione del modulo usando il
etichetta. Dopo quello, il
e
i tag sono usati per informare il sistema di override di Magento che stiamo andando a sovrascrivere uno dei "blocchi" del modulo principale "Catalogo".
Inoltre, il
tag è usato per definire un'identità di blocco che sarà sostituita dal Envato_Catalog_Block_Category_View
classe. È mappato su un file di blocco "Category / View.php" nella directory "Block" del modulo Catalog. La cosa importante da notare qui è che stiamo seguendo una struttura di directory simile al modulo principale. Sebbene ciò non sia strettamente necessario, è preferibile utilizzare la diversa struttura delle directory per mantenere la leggibilità.
Infine, l'unica cosa che rimane è definire una classe di blocchi Envato_Catalog_Block_Category_View
. Creiamo un file di blocco "app / code / local / Envato / Catalog / Block / Category / View.php" e lo riempiamo usando il seguente contenuto.
getChildHtml ( 'Product_List');
Abbiamo definito il Envato_Catalog_Block_Category_View
classe che estende il nucleo Mage_Catalog_Block_Category_View
classe di blocco. Pertanto, è possibile sovrascrivere ogni metodo della classe base e creare nuovi metodi, se necessario.
Nell'esempio sopra, il getProductListHtml
il metodo è sovrascritto quindi verrà chiamato nella vista della categoria! È possibile modificare il codice in base alle proprie esigenze.
Sebbene sia un esempio di base, ha lo scopo di scavalcare il blocco principale e puoi modificarlo per rendere le cose più complesse e creare qualcosa di più utile!
Oggi, nel primo articolo di questa serie, abbiamo imparato come sovrascrivere i blocchi principali di Magento. Nella parte successiva, troverò cose più eccitanti! Mi piacerebbe sentire i tuoi commenti e domande nel feed qui sotto!