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 中添加以上代码可以使重写成为全局的,这并不总是必要的,但这将帮助您确定重写是否有效。
还有一种可能是网站扩展名冲突
好吧,在进一步搜索之后,我发现这个块没有被我正在使用的模板使用,这可以解释为什么重写没有产生任何结果...
尝试以下步骤:
将这些代码添加到文件 Company/Module/Block/Catalog/Navigation.php
受保护函数_construct(){
Mage::log("它在这里");
}
创建子类别
在front-end中进入子类别,然后查看日志文件
我认为你的代码有错误,具体在这行代码中:
Mage:log("running here");
应该是:
Mage::log("running here");
我正在尝试重写 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 中添加以上代码可以使重写成为全局的,这并不总是必要的,但这将帮助您确定重写是否有效。
还有一种可能是网站扩展名冲突
好吧,在进一步搜索之后,我发现这个块没有被我正在使用的模板使用,这可以解释为什么重写没有产生任何结果...
尝试以下步骤:
将这些代码添加到文件 Company/Module/Block/Catalog/Navigation.php
受保护函数_construct(){ Mage::log("它在这里"); }
创建子类别
在front-end中进入子类别,然后查看日志文件
我认为你的代码有错误,具体在这行代码中:
Mage:log("running here");
应该是:
Mage::log("running here");