我在Magento是新来的,在我看来,这个问题应该很简单。
我想重写Mage_Catalog_Block_Navigation类,我已经创建了:包含(片段)的:app\code\local\Feno\Catalog\Block\Navigation.php:
class Feno_Catalog_Block_Navigation extends Mage_Catalog_Block_Navigation
{
public function renderCategoriesMenuHtml($level = 0, $outermostItemClass = '', $childrenWrapClass = '', $exclude_ids = array())
{在app\code\local\Feno\Catalog\etc\config.xml中,我有:
<?xml version="1.0"?>
<config>
<modules>
<Feno_Catalog>
<version>1.0.1</version>
</Feno_Catalog>
</modules>
<global>
<blocks>
<catalog>
<rewrite>
<navigation>Feno_Catalog_Block_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
</global>
</config>但是,当我运行该页面时,会得到以下错误:
Invalid method Mage_Catalog_Block_Navigation::renderCategoriesMenuHtml(Array ...所以它甚至没有接我的课..。
我尝试用以下内容添加app\etc\modules\Feno_Catalog.xml:
<?xml version="1.0"?>
<config>
<modules>
<Feno_Catalog>
<active>true</active>
<codePool>local</codePool>
</Feno_Catalog>
</modules>
</config>但这不管用。我是不是忘了什么?
就像我说的,我是Magento的新手,所以不知道该去哪里看看,谷歌和堆栈溢出也没能帮上忙。FYI,我使用PHPStorm,所以XML等等都是有效的(IDE检查)
发布于 2014-11-19 14:10:53
我要在这里回答我自己的问题。我把它放在搁置之前,我没有管理上一次,今天再试(花了我几个小时),并找到它在搜索和尝试所有的东西。
主要问题似乎是必须在/app/etc/local.xml中注册该块。
...
<config>
<global>
<blocks>
<catalog>
<rewrite>
<navigation>Feno_Catalog_Block_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
<install>
...在添加这个之后,它的工作非常完美!
找到这篇简短的博客文章:http://priyasmagento.blogspot.com/2010/07/override-navigation-block.html
决定增加博客的内容也,该网站似乎没有很好的维护,将是一个耻辱丢失的数据。(C) http://priyasmagento.blogspot.com/
发布于 2014-11-04 11:00:42
您没有在config.xml文件中添加新的类名,应该是,
<?xml version="1.0"?>
<config>
<modules>
<Feno_Catalog>
<version>0.0.0</version>
</Feno_Catalog>
</modules>
<global>
<helpers>
<catalog>
<class>Feno_Catalog_Helper</class>
</catalog>
</helpers>
<blocks>
<catalog>
<class>Feno_Catalog_Block</class>
</catalog>
<catalog>
<rewrite>
<navigation>Feno_Catalog_Block_Catalog_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
</global>
</config>你在app/code/local/Feno/Catalog/Blcok/Catalog/Navigation.php上课
<?php
class Feno_Catalog_Block_Catalog_Navigation extends Mage_Catalog_Block_Navigation
{
}以及助手文件(它是可选的)
app/code/local/Feno/Catalog/Helper/Data.php
<?php
class Feno_Catalog_Helper_Data extends Mage_Core_Helper_Abstract
{
}更新:,我忘了添加一些东西。使用Catalog的模块名已经被magento使用了。因此,您需要更改模块名称或使用<depends> ..</depends>标记。否则,可能会发生模块冲突,或者您的模块没有加载。要使用取决于,
<Mage_Catalog>
<depends>
<Packagename_Modulename />
</depends>
</Mage_Catalog> 所以你的Feno_Catalog.xml (app/etc/modules)文件应该是,
<?xml version="1.0"?>
<config>
<modules>
<Feno_Catalog>
<active>true</active>
<codePool>local</codePool>
<version>0.0.0</version>
<depends>
<Mage_Catalog />
</depends>
</Feno_Catalog>
</modules>
</config>https://stackoverflow.com/questions/26733135
复制相似问题