是否可以通过local.xml文件更改现有块的顺序? 我知道您可以使用after或before属性更改块的顺序,但是如何更改现有块的这些属性。
例如,如果我想将分层导航块放在左栏中的新闻稿订阅块下面,我该怎么做?
答案 0 :(得分:64)
你需要执行一个小技巧,删除子块并将其添加到新位置:
<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>
此Layout XML指令可以满足您的需求。请查看insert
方法参数的简短参考:
blockName
是整个布局的块唯一名称,例如product.view
siblingName
是一个块唯一名称,它已存在于插入目标块中,用于定位块。留空以在顶部或底部显示它。after
是块位置的布尔标识符。如果等于1
,则会在siblingName
之后添加该块,或者如果siblingName
为空,则会在子项列表的底部添加alias
是您的块的别名,如果为空,则将使用块的名称。一些例子:
在最近查看的产品后移动购物车侧边栏
<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>
在最近查看的产品之前移动购物车侧边栏
<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>
在右侧块的末尾移动购物车侧边栏
<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>
将购物车边栏块移动到左侧块的顶部
<reference name="right">
<action method="unsetChild">
<alias>cart_sidebar</alias>
</action>
</reference>
<reference name="left">
<action method="insert">
<blockName>cart_sidebar</blockName>
</action>
</reference>
喜欢与Magento合作!
答案 1 :(得分:5)
您可以删除之前的分层导航栏,并在简报阻止后添加新的分层导航栏。
<reference name="left">
<remove name="catalog.leftnav" />
<block type="catalog/layer_view" name="catalog.leftnavcustom" after="left.newsletter" template="catalog/layer/view.phtml"/>
</reference>
请注意,我为新块使用自定义名称。
答案 2 :(得分:0)
接受的答案对我不起作用(EE1.14),但接近它,这是:
<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>