是否可以从local.xml文件中禁用默认布局.xml文件中定义的<remove name="left">
语句?
例如,在<checkout_cart_index>
部分的checkout.xml中,语句<remove name="left"/>
已在那里定义,但您是否可以从local.xml文件中禁用该行,因此您仍然可以看到左侧结帐页面上的菜单?
答案 0 :(得分:12)
默认情况下,Magento不为local.xml提供<unremove />
标记。但是,布局系统包含正确的事件,您可以自己实现。而对于“你自己”,我的意思是我created an experimental extension添加了这样的标签。欢迎提供反馈。
答案 1 :(得分:5)
我这样做的两种方式是;
使用上面的Alan Storm优秀的unremove插件。
使用新的name属性,但使用相同的别名或'as'属性,在local.xml中插入已删除的块。
name属性需要不同,因为Magento的<remove name="foo" />
是全局的 - 它会删除<block name="foo" />
的所有实例,即使它们是在remove指令之后添加的。例如,重新添加左列;
<reference name="root">
<block name="left.2" as="left" type="core/text_list">
<!-- New left column is empty, so you'll need to add your left-column blocks into it here. -->
</block>
</reference>
name =“left.2”表示删除操作不会终止此块,因为=“left”表示它仍会通过<?php echo $this->getChildHtml('left') ?>
插入到您的模板中。
不幸的是,您新插入的左列是空的。所以你必须重新插入你想要显示的任何块。我认为让Alan Storm的插件更有用。
答案 2 :(得分:2)
当一个块被移除时,它不会被破坏,只会被忽略。您可以通过以下方式“重新启用”它:
<checkout_cart_index>
<reference name="root">
<action method="append"><block>left</block></action>
</reference>
</checkout_cart_index>
我自己从未使用过这个并且不想这样做,如果你正在制作一个自定义主题,那么就像其他答案一样,直接复制基本版面文件并直接编辑它们。
答案 3 :(得分:1)
你的答案不是禁用删除,而是在local.xml中再次添加
答案 4 :(得分:-3)
不是尝试重建整个块集,而是在原始XML中注释remove。与尝试重建块并担心XML文件的优先级等相比,这将不再是一个维护问题。
转过来
<remove name="left" />
向
<!-- disabling remove because X -->
<!-- <remove name="left" /> -->