我正在使用以下xml扩展app/code/core/Mage/Page/Block/Html/Topmenu.php:
<config>
<modules>
<Custom_Menu>
<version>1.0</version>
</Custom_Menu>
</modules>
<global>
<blocks>
<page>
<rewrite>
<html_topmenu>Custom_Menu_Block_Page_Html_Topmenu</html_topmenu>
</rewrite>
</page>
</blocks>
</global>
</config>
Run Code Online (Sandbox Code Playgroud)
而我的班级定义:
class Custom_Menu_Block_Page_Html_Topmenu extends Mage_Page_Block_Html_Topmenu
{
}
Run Code Online (Sandbox Code Playgroud)
即使我的类没有覆盖任何方法,以下模板文件也不会被处理:
app/design/frontend/base/default/template/page/html/topmenu.phtml
Run Code Online (Sandbox Code Playgroud)
我没有覆盖模板文件.
一旦我禁用我的模块,它就会重新开始工作.
我是否需要在xml文件中声明其他内容?
我想起一件事。您的类文件可能位于错误的位置。您的重写代码看起来是正确的,因此当 Magento 实例化一个page/html_topmenu块时,它会正确地将其解析为您的Custom_Menu_Block_Page_Html_Topmenu类名。但是,Magento 可能无法找到该类Custom_Menu_Block_Page_Html_Topmenu。尝试运行代码
$block = new Custom_Menu_Block_Page_Html_Topmenu;
var_dump($block);
Run Code Online (Sandbox Code Playgroud)
从空控制器和/或引导程序文件中,以确保 Magento 可以找到您的类。跑步也不会受伤
$block = Mage::getSingleton('core/layout')->createBlock('page/html_topmenu');
var_dump($block);
Run Code Online (Sandbox Code Playgroud)
确保你的重写正在做它需要做的事情。