Wie überschreibe ich Kernvorlagendateien aus einem benutzerdefinierten Modul?
10
Ich möchte zwei Dateien überschreiben. Nämlich das view.phtmlund print.phtmlvon Kundenaufträgen.
(Pfad: app/design/frontend/base/default/template/sales/order/)
Ich erstelle ein Modul, in dem ich einen Pfad erstellen möchte, app/design/frontend/base/default/template/<My Module Name>/sales/order/damit der Kern view.phtmlund die print.phtmlDateien nicht überschrieben werden.
Bitte führen Sie mich, wie ich diese Aufgabe erreichen kann.
Sie können dies mit einer Layout-XML-Datei in Ihrem Modul tun. Sie benötigen einen Abschnitt in Ihrem Modul config.xmlwie diesen, damit Magento das Layout-XML Ihres Moduls laden kann (Pfad :) app/design/frontend/base/default/layout/mymodulename.xml:
Schritt 3: Erstellen Sie eine PHP-Datei, die die eigentliche Datei view.phtml überschreibt, app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php
Schritt 4: Sie sollten eine local.xml-Datei im Layoutordner erstellen (Möglicher Pfad: app / design / frontend / package / theme / layout). Dies ist für print.phtml.
Es ist nicht erforderlich, den gesamten Block neu zu schreiben. In meiner Antwort wird der Konstruktor von Mage_Sales_Block_Order_Viewget zuerst aufgerufen und legt die Vorlage fest, dann wird er setTemplatevom Layout-XML aus meinem Beispiel initiiert und legt die benutzerdefinierte Vorlage fest. Ich würde mich für Lösungen entscheiden, die keine Umschreibungen verwenden, da sie möglicherweise Konflikte verursachen können.
7ochem
7ochem ist richtig. Sie müssen die Vorlage nicht in Block setzen. Die Lösung von 7ochem ist gut und hat bei mir funktioniert.
Rajan Faldu
Es hängt von dir ab. Wenn Sie eine PHP-Methode überschreiben oder hinzufügen, müssen Sie den Block überschreiben, andernfalls ändern Sie die Vorlage einfach über module.xml oder local.xml. Meine Lösung wirkt sich wohl auf keine Magento-Version aus.
Angenommen, unser Modulname 'CustomSales' und der Paketname "Übung".
Schritt 1: Erstellen Sie eine Modulkonfigurationsdatei in der Datei app / etc / modules / Exercise_CustomSales.xml
Schritt 2: Erstellen Sie eine Konfigurationsdatei unter app / code / local / Exercise / CustomSales / etc / config.xml
Schritt 3: Erstellen Sie eine PHP-Datei, die die eigentliche Datei view.phtml überschreibt, app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php
Schritt 4: Sie sollten eine local.xml-Datei im Layoutordner erstellen (Möglicher Pfad: app / design / frontend / package / theme / layout). Dies ist für print.phtml.
zB (app / design / frontend / rwd / default / layout / local.xml)
Verschieben Sie die Datei view.phtml und print.phtml in "app / design / frontend / package / theme / template / customales / sales / order".
Magento-Cache löschen.
quelle
Mage_Sales_Block_Order_View
get zuerst aufgerufen und legt die Vorlage fest, dann wird ersetTemplate
vom Layout-XML aus meinem Beispiel initiiert und legt die benutzerdefinierte Vorlage fest. Ich würde mich für Lösungen entscheiden, die keine Umschreibungen verwenden, da sie möglicherweise Konflikte verursachen können.