我创建了一个模块:
app/code/local/MyStore/Welcome
在这个模块中,我有一个控制器,如:
MyStore_Welcome_IndexController
根据我目前的知识,我在开始时Magento
加载Mage_Cms_IndexController
控制器作为默认控制器。
现在我想加载MyStore_Welcome_IndexController
控制器作为默认值。
我该怎么做?
更新
我找到了使用管理功能的方法: 从您选择的菜单中:系统/配置/ Web: 您继续选择:“默认页面”=>用于对模块进行字段的“默认Web URL”:
答案 0 :(得分:3)
您需要确保控制器extends Mage_Cms_IndexController
然后通过控制器重载方法覆盖该默认控制器。在此方法中,您将按照惯例创建插件,但您需要执行以下操作:
在顶部添加声明require_once()
,其中包含您正在重载的控制器的相对路径。例如。 :
require_once 'Mage/Checkout/controllers/OnepageController.php';
class MyClass_OverloadedCheckout_Checkout_OnepageController extends Mage_Checkout_OnepageController
创建除默认值之外您可能想要添加的任何类方法或属性。
在<global>
节点的外中添加以下行:
<frontend>
<routers>
<myclass_overloadedcheckout>
<use>standard</use>
<args>
<module>Myclass_OverloadedCheckout</module>
<frontName>OverloadedCheckout</frontName>
</args>
</myclass_overloadedcheckout>
</routers>
</frontend>
需要记住的事项 - 如果您在注入功能之前或之后重写了return parent::{methodname}
所需的任何默认方法,以确保默认行为继续运行。
答案 1 :(得分:1)
如果你真的想要这样做,你应该再想一想,因为这是一个巨大的改变,但你可以简单地覆盖Mage_Cms_IndexController
。如何覆盖控制器,你可以找到例如here
无论如何,我会尝试以另一种方式解决问题。也许你可以使用事件/观察者模式?