Magento-Erweiterung Muss zum Überschreiben einer Vorlage
Dem ich arbeite, eine simple Erweiterung für mein Geschäft und es muss überschreiben einer Vorlage-Datei.
Die Vorlage wird verwendet, um jede Position in der Liste der Elemente in einer Reihenfolge. Um zu sehen, was ich Rede, können Sie gehen Sie zu Mein Konto->Meine Bestellungen, wählen Sie eine Bestellung, und dann nach unten scrollen, sehen Sie in der Tabelle unter "Bestellte Artikel." Der Standard-Vorlage-Datei, die ich bin versucht zu ersetzen ist sales/order/items/renderer/default.phtml.
Habe ich erfolgreich eingerichtet, die Erweiterung zu nutzen, seine eigenen layout.xml Datei. Ich kann, zum Beispiel, schalten Sie verschiedene Blöcke auf der Seite. Mein code für die änderung der Vorlage, jedoch nicht funktioniert. Ich vermute, dass meine Referenz, name(N) ist(sind) falsch, aber ich weiß es nicht sicher.
Hier ist was ich habe, so weit:
<?xml version="1.0"?>
<layout version="0.1.0">
<sales_order_view>
<reference name="my.account.wrapper">
<reference name="sales.order.view">
<reference name="order.items">
<reference name="sales.order.item.renderer.default">
<action method="setTemplate">
<template>groupname_extensionname/sales/order/items/renderer/default.phtml</template>
</action>
</reference>
</reference>
</reference>
</reference>
</sales_order_view>
</layout>
Könnte jemand bieten die Korrekturen, die ich mir in xml (und anderswo, wenn nötig)? Vielen Dank im Voraus.
Edit:
Hier ist meine veränderte version von Ben ' s XML gearbeitet (er verpasste nur ein argument, das einfach zu addieren):
<?xml version="1.0"?>
<layout version="0.1.0">
<sales_order_view>
<reference name="order_items">
<action method="addItemRender">
<arg1>default</arg1>
<arg2>sales/order_item_renderer_default</arg2>
<arg3>groupname_extensionname/sales/order/items/renderer/default.phtml</arg3>
</action>
</reference>
</sales_order_view>
</layout>
Edit:
Fand ich Sie kopieren können die Standard-xml-tags für die Argumente, so dass anstelle von arg1, arg2, arg3, die Sie haben können Typ -, block-Vorlage.
<?xml version="1.0"?>
<layout version="0.1.0">
<sales_order_view>
<reference name="order_items">
<action method="addItemRender">
<type>default</type>
<block>sales/order_item_renderer_default</block>
<template>groupname_extensionname/sales/order/items/renderer/default.phtml</template>
</action>
</reference>
</sales_order_view>
</layout>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Heh, eine nette Sache über Verweise ist, dass Sie sich über den globalen Raum der layout-Objekt, so müssen Sie sich nicht verschachteln. Ein dickes Lob für die arbeiten zu layout-xml; es ist mächtig!
Was Sie tun wollen, glaube ich, ersetzen Sie die Standard-Elementrenderer, die festgelegt wird, in der sales-Modul LXML-Datei (siehe sales.xml). Diese werden Hinzugefügt, um die block-Klasse
Mage_Sales_Block_Order_Items
(odersales/order_items
in der Klasse der Gruppe-notation) über dieaddItemRender()
- Methode, die kommt ausMage_Sales_Block_Items_Abstract
. Sie müssen zu ersetzen, die der renderer gespeichert in derdefault
Schlüssel des_itemRenderers
array, und Sie können das tun, indem Sie einfach die folgenden:Lassen Sie mich wissen, wenn das nicht den trick tun, denn es sollte nicht viel mehr darüber hinaus.
Layout
<references/>
nicht so arbeiten. Die äußeren tags (<sales_order_view/>
) genannt werden verarbeitet, und dann die erste Ebene der tags in einem Griff ist ein Befehl, der entweder erstellt, oder ruft einen Verweis auf ein block-Objekt, und klicken Sie die Ebene in der das ist verwendet für den Aufruf von block-Methoden über eine<action/>
Knoten. (die zwei Ausnahmen sind<remove/>
und<update>
, die gescannt werden, die separat von der block-Erstellung Prozess, und kann überall platziert werden).Damit Sie Ihre layout-xml-update wird wie folgt Aussehen.
Einige andere Tipps, die Ihnen helfen auf dem Weg
Müssen Sie ersetzen Sie " name.der.block.in.layout " mit den Namen, die Magento gibt den block, dass die
sales/order/items/renderer/default.phtml
VorlageStellen Sie sicher, Sie sind das hinzufügen Ihrer layout-xml-ADMIN-layout.
Stellen Sie sicher, dass Sie
<depends/>
imapp/etc/modules/Foo_Bar.xml
um sicherzustellen, yoru-Modul lädt, nachdem derMage_Adminhtml
Modul.Kann es möglich sein, dass Magento die Erzeugung der block, den Sie suchen, in PHP-code, was bedeutet, dass Sie nicht in der Lage sein zu verwenden, das layout, die Art und Weise Sie Sie verwenden
Kann es einfacher sein, zu schauen, zu sehen, einen anderen Standard-admin-theme für Magento (oder mit dem Thema finden, dass Schiffe, die mit modernen Versionen von Magento und ist das Standard-admin-theme), und nur anstelle der phtml-Datei über template-Hierarchien.
(Magento-layouts sind ziemlich kompliziert, es hat mich ein kleines Buch zu erklären.)