【问题标题】:How to disable a remove statement from local.xml in Magento如何在 Magento 中禁用 local.xml 中的删除语句
【发布时间】:2011-05-24 13:17:57
【问题描述】:

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

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

【问题讨论】:

    标签: layout magento


    【解决方案1】:

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

    【讨论】:

    • 谢谢艾伦。您的扩展程序很棒,并且在这里没有任何问题。正是我正在寻找的!
    【解决方案2】:

    我这样做的两种方法是;

    1. 使用上面 Alan Storm 出色的取消删除插件。

    2. 在 local.xml 中重新插入已删除的块,并使用新的名称属性但具有相同的别名或“as”属性。

    name 属性需要不同,因为 Magento 的 <remove name="foo" /> 是全局的 - 它会删除所有 <block name="foo" /> 的实例,即使它们是在删除指令之后添加的。以重新添加左列为例;

    <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" 表示删除操作不会杀死此块,as="left" 表示它仍将通过&lt;?php echo $this-&gt;getChildHtml('left') ?&gt; 插入到您的模板中。

    很遗憾,您新插入的左列是空的。因此,您必须在其中重新插入您想要显示的任何块。我认为让 Alan Storm 的插件更加有用。

    【讨论】:

      【解决方案3】:

      当一个方块被移除时,它不会被破坏,只会被忽略。您可以通过以下方式“重新启用”它:

      <checkout_cart_index>
          <reference name="root">
              <action method="append"><block>left</block></action>
          </reference>
      </checkout_cart_index>
      

      我自己从未使用过,也不想使用,如果您正在制作自定义主题,请复制基本布局文件并按照其他答案的建议直接编辑它们。

      【讨论】:

      • 不幸的是,这似乎不起作用。如果是这样,那将是一个完美的解决方案。
      • 不幸的是真的。它不起作用。从那时起,有没有进一步的解决方案?
      • 是的。这是一个非常古老的答案,如果它曾经有效,它肯定不再有效。
      【解决方案4】:

      您的答案不是禁用删除,而是在您的 local.xml 中再次添加它

      【讨论】:

      • 你能举个例子说明如何再次添加已删除的块吗?
      • 挖出第78行的app/design/frontend/base/default/layout/page.xml,看看是怎么添加的
      • 嗯,这似乎不起作用,我在对根的引用中添加了块“左”,就像在 page.xml 中一样,即使在明确定义另一个块之后也没有任何显示在左侧块内,例如时事通讯块,我做错了什么?
      • 您必须确保在删除块后完成此操作。更简单的路径是将布局字段复制到您的主题目录并从此布局文件中删除“删除”部分。以后不要忘记清除缓存。
      • 好的,所以只有local.xml没有办法做到这一点?该死,我喜欢以“正确”的方式进行这些布局更新,没有复制布局 .xml 文件,太糟糕了。
      【解决方案5】:

      与其尝试重建整个块集,不如在原始 XML 中注释删除。与尝试重建块并担心 XML 文件的优先级等相比,这将不会是令人头疼的维护问题。

      转这个

      <remove name="left" />
      

      进入

      <!-- disabling remove because X -->
      <!-- <remove name="left" /> -->
      

      【讨论】:

      • 您必须为此解决方案编辑 Magento Core 文件,这绝不是一个好主意。更改核心文件后,您将无法更新系统。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多