Magento覆盖核心块

时间:2016-02-18 17:03:45

标签: php xml magento override block

我试图覆盖位于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>

的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.......

   }

}

我一直试图覆盖这种方法,但我不能,有人可以指导我吗?也许检查一下我还没有注意到的错字或者我错过了什么?

谢谢,

2 个答案:

答案 0 :(得分:0)

尝试<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>

答案 1 :(得分:0)

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

我试图覆盖位于

的Mage_Catalog_Block_Navigation

应用程序/代码/核心/法师/目录/砌块/ Navigation.php

我需要它做的就是创建相同的根和文件夹,尽管在LOCAL文件夹中。就是说,这将是我覆盖课程的路线。

应用程序/代码/本地/法师/目录/砌块/ Navigation.php

注意LOCAL而不是CORE。 Navigation.php基本上是相同的核心文件(Copy&amp; Paste),虽然我试图覆盖的功能

   function protected function _renderCategoryMenuItemHtml(...)

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

祝你好运。