是否可以通过local.xml文件更改现有块的顺序?
我知道您可以使用after或before属性更改块的顺序,但是如何更改现有块的那些属性。
例如,如果我想将分层导航块放在左栏中的新闻通讯订阅块下面,我该怎么做?
最佳答案
您需要执行一个小技巧,删除子块并将其添加到新位置:
<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
是块位置的 bool(boolean) 标识符。如果等于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的合作!
关于magento - 通过local.xml文件更改 block 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4410206/