Nicht immer möchte man den Magentos Mini-Warenkorb im Sidebar anzeigen. Vielleicht, weil man nur eine einspaltige Seite hat, vielleicht, weil man dort anderes unterbringen möchte. Den aktuellen Warenkorb anzeigen sollte man aber immer. Hier eine kurze Beschreibung, wie man verfährt, wenn der Mini-Warenkorb in einen anderen Bereich verschoben werden soll.
In Magento einen Layout-Block zu verschieben ist an sich keine besonders schwierige Sache. Der folgende Beitrag soll das an einem Beispiel zeigen. Dabei soll der Mini-Warenkorb vom Sidebar in den Header verschoben werden.
Im ersten Schritt gilt es natürlich, den zu verschiebenden Block überhaupt erst einmal zu finden. Im Falle des Mini-Warenkorbes findet sich die Definition in /app/design/frontend/base/default/layout/checkout.xml
:
<block type="checkout/cart_sidebar" name="cart_sidebar" template="checkout/cart/sidebar.phtml" before="-"> <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/sidebar/default.phtml</template></action> <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/sidebar/default.phtml</template></action> <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/sidebar/default.phtml</template></action> <block type="core/text_list" name="cart_sidebar.extra_actions" as="extra_actions" translate="label" module="checkout"> <label>Shopping Cart Sidebar Extra Actions</label> </block> </block>
(Beim Suchen der der entsprechenden Layout-Blöcke hilft übrigens das unverzichtbare Plugin AoE Template Hints von Fabrizio Branca).
Nun kann man weitermachen, indem man ein bisschen Code hin und her kopiert.
Dies ist wahrscheinlich nicht der optimale Weg! Das muss doch durch reference header etc.
auch in der local.xml gehen??
Dieser Block kann nun einfach in der Datei page.xml
in den Block
<block type="page/html_header" name="header" as="header">
kopiert werden. Natürlich kopiert man diesen Abschnitt nicht in die page.xml
in base/default
, sondern in einen Kopie im eigenen Theme!
Mit der Kopie ist es aber nicht getan. In der Regel soll der so kopierte Block ja nicht das gleiche Aussehen haben wie das Original. Der Block braucht also neue Template-Dateien. Das einfachste ist es hier, die alten Template-Dateien zu kopieren und an den neuen Anwendungsfall anzupassen. Die Dateinamen der kopierten Template-Dateien müssen dann nur in den oben kopierten Block eingetragen werden und der neue Block sollte an der neuen Stelle erscheinen.