Magento 1.9 布局更新 order/inheritance
Magento 1.9 layout update order/inheritance
Magento 是否改变了 1.9 中布局更新合并的方式?我最近开始使用 1.9.1.0,我注意到右侧栏中的一个块是重复的。此块由第 3 方模块添加,该模块将其主题文件存储在 default/default 中。我在 local.xml 中添加了代码以取消设置子项,然后重新添加它,使其出现在列的底部。这曾经在 1.5.0.1 中有效,但在 1.9.1.0 中无效。相反,我被迫使用 <remove name=...>
完全删除该块,然后使用不同的名称将其添加回去。这是一个我可以接受的解决方法,但这应该发生吗?
第 3 方模块的布局更新:
<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
会将其放在底部。
Magento 是否改变了 1.9 中布局更新合并的方式?我最近开始使用 1.9.1.0,我注意到右侧栏中的一个块是重复的。此块由第 3 方模块添加,该模块将其主题文件存储在 default/default 中。我在 local.xml 中添加了代码以取消设置子项,然后重新添加它,使其出现在列的底部。这曾经在 1.5.0.1 中有效,但在 1.9.1.0 中无效。相反,我被迫使用 <remove name=...>
完全删除该块,然后使用不同的名称将其添加回去。这是一个我可以接受的解决方法,但这应该发生吗?
第 3 方模块的布局更新:
<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
会将其放在底部。