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