如何在Magento中禁用local.xml中的remove语句

时间:2010-12-13 09:02:50

标签: layout magento

是否可以从local.xml文件中禁用默认布局.xml文件中定义的<remove name="left">语句?

例如,在<checkout_cart_index>部分的checkout.xml中,语句<remove name="left"/>已在那里定义,但您是否可以从local.xml文件中禁用该行,因此您仍然可以看到左侧结帐页面上的菜单?

5 个答案:

答案 0 :(得分:12)

默认情况下,Magento不为local.xml提供<unremove />标记。但是,布局系统包含正确的事件,您可以自己实现。而对于“你自己”,我的意思是我created an experimental extension添加了这样的标签。欢迎提供反馈。

答案 1 :(得分:5)

我这样做的两种方式是;

  1. 使用上面的Alan Storm优秀的unremove插件。

  2. 使用新的name属性,但使用相同的别名或'as'属性,在local.xml中插入已删除的块。

  3. 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" /> -->