Magento 覆盖核心块

Magento Override Core Block

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

我创建了这三个文件:

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>

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>

Navigation.php

class Global_Catalog_Block_Navigation extends Mage_Catalog_Block_Navigation 
{

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

   }

}

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

谢谢,

尝试 <navigation>Mage_Catalog_Block_Navigation</navigation> 并将您的 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 的核心文件。当我第一次问这个问题时,我正在创建一个模块,而不是覆盖现有的模块。所以对于你们这些人来说,如果你想以正确的方式覆盖 Magento 文件,这就是你要做的。很简单的。

我试图覆盖位于

的 Mage_Catalog_Block_Navigation

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

我需要它做的就是创建相同的根目录和文件夹,尽管在 LOCAL 文件夹中。话虽如此,这将是我覆盖 class.

的路线

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

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

   function protected function _renderCategoryMenuItemHtml(...)

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

祝你好运。