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

Pie*_*ste 6 layout magento

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

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

Ala*_*orm 12

默认情况下,Magento不<unremove />为local.xml 提供标记.但是,布局系统包含正确的事件,您可以自己实现.而对于"你自己",我的意思是我已经创建了一个实验扩展,添加了这样的标签.欢迎反馈.

  • 谢谢艾伦.你的扩展很棒,在这里工作没有任何问题.正是我在寻找的东西! (3认同)

Rus*_*lde 5

我这样做的两种方式是;

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

  2. 使用新的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>
Run Code Online (Sandbox Code Playgroud)

name ="left.2"表示删除操作不会终止此块,因为="left"表示它仍将通过插入模板<?php echo $this->getChildHtml('left') ?>.

不幸的是,您新插入的左列是空的.所以你必须重新插入你想要显示的任何块.我认为让Alan Storm的插件更有用.