Magento是否更改了1.9中布局更新的合并方式?我最近开始使用1.9.1.0,我注意到右侧栏上的一个块是重复的。此块由第三方模块添加,该模块以默认/默认方式存储其主题文件。我在local.xml中添加了代码来取消设置子项,然后重新添加它,使其显示在列的底部。这曾经在1.5.0.1中起作用,但在1.9.1.0中不起作用。相反,我被迫使用<remove name=...>
完全删除该块,然后使用不同的名称将其添加回。这是一个我可以接受的工作,但这应该发生吗?
第三方模块的布局更新:
<default>
<reference name="right">
<block type="adjreminder/review" name="right.adjreminder" after="cart_sidebar" template="adjreminder/review.phtml" />
</reference>
</default>
我的local.xml:
<default>
<reference name="right">
<action method="unsetChild">
<name>right.adjreminder</name>
</action>
...
<block type="adjreminder/review" name="right.adjreminder" after="cart_sidebar" template="adjreminder/review.phtml" />
</reference>
</default>
这并没有移动块,而是创建了第二个副本。unsetChild
什么也没做。修复它的唯一方法是把它放在我的local.xml中:
<default>
<remove name="right.adjreminder" />
<reference name="right">
<block type="adjreminder/review" name="right.adjreminder" after="cart_sidebar" template="adjreminder/review.phtml" />
</reference>
</default>
<remove>
指令不删除块,而是设置一个标志来忽略其自身及其所有子级的块呈现。如果要重新定位块,则需要使用<action>
指令和insert
或append
方法。
<reference name="right">
<action method="unsetChild">
<name>right.adjreminder</name>
</action>
<action method="insert">
<name>right.adjreminder</name>
</action>
</reference>
这些操作方法将使用当前块实例,而不是创建新的块实例。动作方法insert
将把它放在子项列表的顶部,而append
将把它放置在底部。