wake-up-neo.com

Ändern Sie die Reihenfolge der Blöcke über die Datei local.xml

Ist es möglich, die Reihenfolge bereits vorhandener Blöcke über die Datei local.xml zu ändern? Ich weiß, dass Sie die Reihenfolge eines Blocks mit dem Nach-oder-Vorher-Attribut ändern können, aber wie können diese Attribute der vorhandenen Blöcke geändert werden .

Wenn ich beispielsweise den mehrschichtigen Navigationsblock in der linken Spalte unter dem Newsletter-Abonnementblock platzieren möchte, wie würde ich das tun?

22
Pieter Hoste

Sie müssen einen kleinen Trick ausführen, den untergeordneten Block entfernen und ihn an einer neuen Position hinzufügen:

<reference name="parent.block.name">
    <action method="unsetChild">
        <alias>child_block_alias</alias>
    </action>
    <action method="insert">
        <blockName>child.block.name</blockName>
        <siblingName>name_of_block</siblingName>
        <after>1</after>
        <alias>child_block_alias</alias>
    </action>
</reference>

Diese Layout-XML-Anweisung macht, was Sie möchten. Schauen Sie sich diese kurze Referenz der Parameter für die insert-Methode an:

  • blockName ist Ihr eindeutiger Blockname im gesamten Layout, beispielsweise product.view
  • siblingName ist ein eindeutiger Blockname, der bereits im Einfügungszielblock vorhanden ist und zur Positionierung Ihres Blocks verwendet wird. Lassen Sie das Feld leer, um es oben oder unten anzuzeigen.
  • after ist eine boolesche Kennung der Blockposition. Wenn 1 gleich ist, wird der Block nach siblingName oder am Ende der untergeordneten Liste hinzugefügt, wenn siblingName leer ist
  • alias ist der Alias ​​Ihres Blocks. Wenn er leer ist, wird der Name des Blocks verwendet.

Einige Beispiele:

Wagen-Seitenleistenblock nach kürzlich angezeigten Produkten verschieben

<reference name="right">
    <action method="unsetChild">
        <alias>cart_sidebar</alias>
    </action>
    <action method="insert">
        <blockName>cart_sidebar</blockName>
        <siblingName>right.reports.product.viewed</siblingName>
        <after>1</after>
    </action>
</reference>

Wagen-Seitenleistenblock vor den zuletzt angezeigten Produkten verschieben

<reference name="right">
    <action method="unsetChild">
        <alias>cart_sidebar</alias>
    </action>
    <action method="insert">
        <blockName>cart_sidebar</blockName>
        <siblingName>right.reports.product.viewed</siblingName>
        <after>0</after>
    </action>
</reference>

Wagen-Seitenleistenblock am Ende des rechten Blocks verschieben

<reference name="right">
    <action method="unsetChild">
        <alias>cart_sidebar</alias>
    </action>
    <action method="insert">
        <blockName>cart_sidebar</blockName>
        <siblingName></siblingName>
        <after>1</after>
    </action>
</reference> 

Wagen-Seitenleistenblock oben im linken Block verschieben

<reference name="right">
    <action method="unsetChild">
        <alias>cart_sidebar</alias>
    </action>
</reference>
<reference name="left">
    <action method="insert">
        <blockName>cart_sidebar</blockName>
    </action>
</reference>

Viel Spaß bei der Arbeit mit Magento!

64
Ivan Chepurnyi

Sie können den vorherigen mehrschichtigen Navigationsblock entfernen und nach dem Newsletterblock einen neuen mehrschichtigen Navigationsblock hinzufügen.

<reference name="left">
 <remove name="catalog.leftnav" />
 <block type="catalog/layer_view" name="catalog.leftnavcustom" after="left.newsletter" template="catalog/layer/view.phtml"/>
</reference>

Beachten Sie, dass ich für den neuen Block einen benutzerdefinierten Namen verwende.

5
jrosell

Die akzeptierte Antwort hat für mich nicht funktioniert (EE1.14), aber etwas in der Nähe davon, dies:

<wishlist_index_index>
    <reference name="customer.wishlist.items">
        <action method="unsetChild">
             <name>customer.wishlist.price</name>
        </action>
        <action method="insert">
            <blockName>customer.wishlist.price</blockName>
            <after>customer.wishlist.qty</after>
        </action>
    </reference>
</wishlist_index_index>
0
OZZIE