是否可以通过local.xml文件更改现有块的顺序?我知道您可以使用after或before属性更改块的顺序,但是如何更改现有块的这些属性.
例如,如果我想将分层导航块放在左栏中的新闻稿订阅块下面,我该怎么做?
Iva*_*nyi 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>
Run Code Online (Sandbox Code Playgroud)
此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>
Run Code Online (Sandbox Code Playgroud)
在最近查看的产品之前移动购物车侧边栏块
<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>
Run Code Online (Sandbox Code Playgroud)
在右侧块的末尾移动购物车侧边栏块
<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>
Run Code Online (Sandbox Code Playgroud)
将购物车侧边栏块移动到左侧块的顶部
<reference name="right">
<action method="unsetChild">
<alias>cart_sidebar</alias>
</action>
</reference>
<reference name="left">
<action method="insert">
<blockName>cart_sidebar</blockName>
</action>
</reference>
Run Code Online (Sandbox Code Playgroud)
喜欢与Magento合作!
您可以删除以前的分层导航块,并在简报阻止后添加新的分层导航块.
<reference name="left">
<remove name="catalog.leftnav" />
<block type="catalog/layer_view" name="catalog.leftnavcustom" after="left.newsletter" template="catalog/layer/view.phtml"/>
</reference>
Run Code Online (Sandbox Code Playgroud)
请注意,我为新块使用自定义名称.