Zmiana kolejności bloków poprzez local.plik xml w magento

Czy można zmienić kolejność już istniejących bloków poprzez local.plik xml? Wiem, że można zmienić kolejność bloku za pomocą atrybutu after lub before, ale jak można zmienić te atrybuty istniejących bloków.

Na przykład, jeśli chcę umieścić warstwowy blok nawigacji pod blok subskrypcji biuletynu w lewej kolumnie, jak to zrobić?

Author: Pieter Hoste, 2010-12-10

3 answers

Musisz wykonać małą sztuczkę, usunąć blok potomny i dodać go w nowej pozycji:

<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>

Ta instrukcja XML Layout robi to, co chcesz. Spójrz na to krótkie odniesienie parametrów dla metody insert:

  • blockName to unikalna nazwa Twojego bloku w całym układzie, product.view na przykład
  • {[8] } jest unikalną nazwą bloku, która istnieje już w bloku docelowym wstawiania, używanym do pozycjonowania bloku. Pozostaw puste, aby wyświetlić go na górze lub na dno.
  • {[9] } jest logicznym identyfikatorem pozycji bloku. Jeśli jest równe 1, wtedy blok zostanie dodany po siblingName lub na dole listy Potomków, Jeśli siblingName jest pusty
  • alias jest aliasem twojego bloku, jeśli jest pusty, zostanie użyta nazwa bloku.

Niektóre Przykłady:

Przenieś pasek boczny koszyka po ostatnio oglądanych produktach

<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>

Przenieś blok paska bocznego koszyka przed Ostatnio oglądane produkty

<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>

Przesuń blok paska bocznego koszyka na końcu prawego bloku

<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> 

Przesuń blok paska bocznego koszyka na górze lewego bloku

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

Ciesz się pracą z Magento!

 63
Author: Ivan Chepurnyi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-22 14:34:28

Możesz usunąć poprzedni blok nawigacji warstwowej i dodać nowy blok nawigacji warstwowej po bloku newslettera.

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

Zauważ, że używam niestandardowej nazwy dla nowego bloku.

 5
Author: jrosell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-27 14:42:22

Zaakceptowana odpowiedź nie zadziałała dla mnie (EE1.14), ale coś bliskiego, to:

<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
Author: OZZIE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-24 19:29:42