尝试覆盖Cms / controllers / IndexController。
这是我模块的目录结构 -
我的IndexController的代码是
<?php
require_once 'Mage'. DS .'Cms'. DS .'controllers'. DS .'IndexController.php';
class MyCompany_FourOhFourExp_IndexController extends Mage_Cms_IndexController
{
public function noRouteAction($coreRoute = null){
Mage::log('First Function');
header("Location: new_route.html");
die();
}
public function defaultNoRouteAction()
{
Mage::log('Second function!');
header("Location: new_route.html");
die();
}
}
?>
这是我的config.xml文件的代码
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MyCompany_FourOhFourExp>
<version>0.1.0</version>
</MyCompany_FourOhFourExp>
</modules>
<frontend>
<routers>
<cms>
<args>
<modules>
<MyCompany_FourOhFourExp before="Mage_Cms">MyCompany_FourOhFourExp</MyCompany_FourOhFourExp>
</modules>
</args>
</cms>
</routers>
<events>
<controller_action_noroute>
<observers>
<cms>
<class>cms/observer</class>
<method>noRoute</method>
</cms>
</observers>
</controller_action_noroute>
</frontend>
</config>
希望有人能解释为什么这不是最重要的。我查看了大量的教程和博客文章,但尚未弄清楚它为什么不起作用。
答案 0 :(得分:2)
有很多问题:
1)ModulePath进行:
由于您的控制器类为MyCompany_FourOhFourExp_IndexController
,因此类的路径应为
app/code/local/MyCompany/FourOhFourExp
本地/ MyCompany的/控制器/索引控制器
本地/ MyCompany的在/ etc / config.xml中
更改为
2)法师cms控制器不能正确添加
require_on Mage::getModuleDir('controllers', 'Mage_Cms'). DS .'IndexController.php';
答案 1 :(得分:0)
需要做什么:
添加到app / code / local / Mage / Cms / controllers / IndexController.php,Mage::dispatchEvent('cms_controller_action_noroute', array('action'=>$this));
,抓住事件