Überschreiben in Magento verstehen Blöcke

Es ist immer eine wichtige Funktion für jedes Framework, um Erweiterbarkeit und Skalierbarkeit im Kern selbst zu unterstützen. Dies gilt auch für Magento, mit dem Programmierer benutzerdefinierte Erweiterungen erstellen können, die den benutzerdefinierten Anforderungen entsprechen und somit erweiterbar sind. Auf der anderen Seite können Sie auch Kerndateien überschreiben, um den Fluss und das Verhalten der Kernfunktionen von Magento zu ändern.

In Magento gibt es verschiedene Möglichkeiten, Kerndateien zu überschreiben. Eine davon ist die Implementierung des Event Observer Patterns. Mit dieser Methode definieren Sie Beobachter in Ihrem Modul für die gewünschten Ereignisse. Diese werden abgerufen, wenn zugehörige Ereignisse in Magento ausgelöst werden. Dies ist sicherlich eine leistungsstarke und standardisierte Methode, um Änderungen an den Kernmodulen von Magento vorzunehmen. Allerdings gibt es Situationen, in denen Sie das Gefühl haben, es wäre großartig, wenn Sie einfach die Kerndatei-Schnipsel durch Ihre ersetzen könnten. Dazu können Sie eine XML-Konfigurationsdatei in Ihrem benutzerdefinierten Modul verwenden.

Warum Blöcke überschreiben?

In Magento sind Blöcke primitive Bausteine ​​für jedes Layout im Frontend. Sie können zwar die Vorlagendatei eines Blocks mit einem benutzerdefinierten Design überschreiben, um die visuelle Ausgabe zu ändern. Manchmal möchten Sie jedoch die Logik des Kernblockcodes ändern. In diesem Fall hilft das Überschreiben eines Kernblocks mit der Blockdatei Ihres benutzerdefinierten Moduls wirklich, Ihre Änderungen einzufügen leicht.

In diesem Lernprogramm erstellen wir ein benutzerdefiniertes Modul, um zu verstehen, wie das Blocküberschreiben in Magento funktioniert. Im benutzerdefinierten Modul überschreiben wir einen Produktlistenblock, der in der Kategorieseitenansicht angezeigt wird. Das Überschreiben funktioniert, indem bestimmte XML-Tags gemäß den Konventionen von Magento eingerichtet werden.

Ich gehe davon aus, dass Sie mit dem grundlegenden Modulerstellungsprozess in Magento vertraut sind. Hier ist ein schöner Artikel, der die Grundlagen der Erstellung von benutzerdefinierten Modulen erläutert, für den Fall, dass Sie einen Blick darauf werfen möchten! Lassen Sie uns gleich in den Inhalt dieses Tutorials einsteigen!

Ein Blick auf ein Setup

Wir erstellen ein einfaches benutzerdefiniertes Modul mit dem Namen "Catalog", das das Überschreiben des zentralen Produktlistenblocks (app / code / core / Mage / Catalog / Block / Category / View.php) in der Kategorieseitenansicht einrichtet. Hier ist eine Liste der Dateien, die für das gewünschte Setup erforderlich sind:

  • app / etc / modules / Envato_All.xml: Diese Datei wird zur Aktivierung unseres benutzerdefinierten Moduls verwendet.
  • app / code / local / Envato / Catalog / etc / config.xml: Es handelt sich um eine Modulkonfigurationsdatei, in der das Block-Überschreiben mithilfe bestimmter Tags gemäß den Magento-Konventionen eingerichtet wird.
  • app / code / local / Envato / Catalog / Block / Category / View.php: Es ist unsere neue Blockdatei, die eine Kernblockdatei ersetzt.

Dateien und Ordner erstellen: Benutzerdefiniertes Modul

Zuerst müssen wir eine Modul-Enabler-Datei erstellen. Erstellen Sie eine Datei "app / etc / modules / Envato_All.xml" und fügen Sie den folgenden Inhalt in diese Datei ein. Wir haben gebraucht Envato als unser Modul-Namensraum und Katalog als unser Modulname. Es aktiviert standardmäßig unser Katalogmodul.

    wahr lokal   

Als Nächstes müssen wir eine Modulkonfigurationsdatei erstellen. Erstellen Sie "app / code / local / Envato / Catalog / etc / config.xml" und fügen Sie den folgenden Inhalt in diese Datei ein.

    1,0       Envato_Catalog_Block_Category_View     

Am Anfang des Moduls haben wir die Versionsnummer des Moduls mit dem eingerichtet  Etikett. Danach die  und Tags werden verwendet, um das Magento-Überschreibungssystem zu informieren, dass wir einen der "Blöcke" des "Catalog" -Kernmoduls überschreiben werden.

Weiter die  tag wird verwendet, um eine Blockidentität zu definieren, die von der überschrieben wird Envato_Catalog_Block_Category_View Klasse. Es ist einer Blockdatei "Category / View.php" im Verzeichnis "Block" des Katalogmoduls zugeordnet. Hierbei ist zu beachten, dass wir eine Verzeichnisstruktur verwenden, die dem Kernmodul ähnelt. Dies ist zwar nicht unbedingt erforderlich, wird jedoch der anderen Verzeichnisstruktur vorgezogen, um die Lesbarkeit zu gewährleisten.

Schließlich bleibt nur noch die Definition einer Blockklasse Envato_Catalog_Block_Category_View. Erstellen Sie eine Blockdatei "app / code / local / Envato / Catalog / Block / Category / View.php" und füllen Sie sie mit folgendem Inhalt aus.

getChildHtml ('product_list'); 

Wir haben die definiert Envato_Catalog_Block_Category_View Klasse, die den Kern erweitert Mage_Catalog_Block_Category_View Blockklasse. So können Sie jede Methode der Basisklasse überschreiben und bei Bedarf neue Methoden erstellen.

Im obigen Beispiel ist das getProductListHtml Methode wird überschrieben, also wird sie in der Kategorieseitenansicht aufgerufen! Sie können den Code entsprechend Ihren Anforderungen ändern.

Obwohl dies ein sehr einfaches Beispiel ist, dient es dazu, den Kernblock zu überschreiben. Sie können ihn anpassen, um die Dinge komplexer zu gestalten und etwas nützlicheres zu schaffen!

Fazit

Heute haben wir im ersten Artikel dieser Serie gelernt, wie man die Kernblöcke von Magento überschreibt. Im nächsten Teil stelle ich mir noch mehr aufregendes Zeug vor! Ich würde mich sehr über Ihre Kommentare und Fragen in dem unten stehenden Feed freuen!