Magento - 重写 Mage_Catalog_Block_Navigation

Magento - Rewrite Mage_Catalog_Block_Navigation

我正在尝试重写 class Mage_Catalog_Block_Navigation,但我无法让它工作。当我刷新网站时,(清除缓存等...)然后检查 system.log 文件,它是空的...(我也尝试过向 html 添加代码,但那也没用)

我目前有:

Company/Module/Block/Catalog/Navigation

<?php

class Company_Module_Block_Catalog_Navigation
    extends Mage_Catalog_Block_Navigation
{
    public function renderCategoriesMenuHtml($level = 0, $outermostItemClass = '', $childrenWrapClass = '')
    {
        Mage:log("running here");
        return parent::renderCategoriesMenuHtml($level, $outermostItemClass, $childrenWrapClass);

    }
}

config.xml

<global>
    ...
    <blocks>
        ...
        <catalog>
            <rewrite>
                <navigation>Company_Module_Block_Catalog_Navigation</navigation>
            </rewrite>
        </catalog>
        ...
    </blocks>
    ...
</global>

config.xml

<global>
    <blocks>
      <catalog>
        <rewrite>
            <navigation>Company_Module_Block_Navigation</navigation>
        </rewrite>
    </catalog>
  </blocks>
</global>

你的块文件会是这样的。

<?php
   class Company_Module_Block_Navigation extends Mage_Catalog_Block_Navigation
   {
     // some code
   }
?>

或者您可以简单地在块文件中尝试此代码

<?php
   require_once 'Mage/Catalog/block/Navigation.php';
   class Company_Module_Block_Navigation extends Mage_Catalog_Block_Navigation

在 app/etc/modules

创建 Company_Module.xml
<?xml version="1.0"?>
  <config>
    <modules>
     <Company_Module>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Module>
   </modules>
  </config>

您需要按如下方式注册区块:

在app/etc/local.xml

<global>
    <blocks>
        <catalog>
            <rewrite>
                <navigation>Company_Module_Block_Navigation</navigation>
            </rewrite>
        </catalog>
    </blocks>
</global>

请注意,通过在 local.xml 中添加以上代码可以使重写成为全局的,这并不总是必要的,但这将帮助您确定重写是否有效。

还有一种可能是网站扩展名冲突

好吧,在进一步搜索之后,我发现这个块没有被我正在使用的模板使用,这可以解释为什么重写没有产生任何结果...

尝试以下步骤:

  1. 将这些代码添加到文件 Company/Module/Block/Catalog/Navigation.php

    受保护函数_construct(){ Mage::log("它在这里"); }

  2. 创建子类别

  3. 在front-end中进入子类别,然后查看日志文件

我认为你的代码有错误,具体在这行代码中:

Mage:log("running here");

应该是:

Mage::log("running here");