【问题标题】:Magento Override Core BlockMagento 覆盖核心块
【发布时间】:2016-10-14 22:11:29
【问题描述】:

我正在尝试覆盖位于 app/code/core/Mage/Catalog/Block/Navigation.php 的 Mage_Catalog_Block_Navigation 类

我已经创建了这三个文件:

1.- app/code/local/Global/Catalog/Block/Navigation.php

2.- app/code/local/Global/Catalog/etc/config.xml

3.- app/etc/modules/Global_All.xml

代码:

Global_All.xml

<?xml version="1.0"?>
<config>
  <modules>
    <Global_Catalog>
      <active>true</active>
      <codePool>local</codePool>
    </Global_Catalog>
  </modules>
</config>

配置.xml

<?xml version="1.0"?>
<config>
  <modules>
    <Global_Catalog>
      <version>1.0</version>
    </Global_Catalog>
  </modules>
  <global>
    <blocks>
      <catalog>
        <rewrite>
          <navigation>Global_Catalog_Block_Navigation</navigation>
        </rewrite>
      </catalog>
    </blocks>
  </global>
</config>

导航.php

class Global_Catalog_Block_Navigation extends Mage_Catalog_Block_Navigation 
{

   protected function _renderCategoryMenuItemHtml(...){
     .......rewriting code for this method.......

   }

}

我一直在尝试覆盖此方法,但我不能,有人可以指导我吗?也许检查一下我还没有注意到的错字还是我遗漏了什么?

谢谢,

【问题讨论】:

    标签: php xml magento overriding block


    【解决方案1】:

    尝试&lt;navigation&gt;Mage_Catalog_Block_Navigation&lt;/navigation&gt; 并将您的 Naviation.php 重命名为

    class Global_Catalog_Block_Navigation extends Mage_Catalog_Block_Navigation 
    {
    
       protected function _renderCategoryMenuItemHtml(...){
         .......rewriting code for this method.......
    
       }
    
    }
    

    最后,将你的 module.xml 更改为

    <modules>
        <Mage_Catalog>
          <active>true</active>
          <codePool>local</codePool>
        </Mage_Catalog>
    </modules>
    

    【讨论】:

    • 但这将加载核心块,我想重写的那个。此外,它会告诉 Magento 在本地文件夹中查找不存在的 Mage 文件夹。我说的对吗?
    【解决方案2】:

    好的。所以问题是我试图覆盖 Magento 的核心文件。当我第一次问这个问题时,我是在创建一个模块,而不是覆盖一个现有的模块。因此,如果您想以正确的方式覆盖 Magento 文件,那么对于你们来说,这就是您的做法。很简单。

    我试图覆盖位于

    的 Mage_Catalog_Block_Navigation

    app/code/core/Mage/Catalog/Block/Navigation.php

    我需要做的只是在 LOCAL 文件夹中创建相同的根目录和文件夹。话虽如此,这将是我覆盖课程的路线。

    app/code/local/Mage/Catalog/Block/Navigation.php

    注意 LOCAL 而不是 CORE。 Navigation.php 基本上是相同的核心文件(复制和粘贴),尽管我试图覆盖的功能

       function protected function _renderCategoryMenuItemHtml(...)
    

    在我 newley 创建的文件中,将返回另一个与核心文件不同的语句。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 2012-08-10
      • 1970-01-01
      相关资源
      最近更新 更多