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ć?
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 posiblingName
lub na dole listy Potomków, JeślisiblingName
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!
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.
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>
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