更改Magento中的默认控制器

时间:2011-08-17 08:03:20

标签: magento

我创建了一个模块:

app/code/local/MyStore/Welcome

在这个模块中,我有一个控制器,如:

MyStore_Welcome_IndexController

根据我目前的知识,我在开始时Magento加载Mage_Cms_IndexController控制器作为默认控制器。

现在我想加载MyStore_Welcome_IndexController控制器作为默认值。

我该怎么做?


更新

我找到了使用管理功能的方法: 从您选择的菜单中:系统/配置/ Web: 您继续选择:“默认页面”=>用于对模块进行字段的“默认Web URL”: Image to show how to config

2 个答案:

答案 0 :(得分:3)

您需要确保控制器extends Mage_Cms_IndexController然后通过控制器重载方法覆盖该默认控制器。在此方法中,您将按照惯例创建插件,但您需要执行以下操作:

  • 在顶部添加声明require_once(),其中包含您正在重载的控制器的相对路径。例如。 :

    require_once 'Mage/Checkout/controllers/OnepageController.php';
    class MyClass_OverloadedCheckout_Checkout_OnepageController extends Mage_Checkout_OnepageController
    
  • 创建除默认值之外您可能想要添加的任何类方法或属性。

  • 在您的config.xml中
  • <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

无论如何,我会尝试以另一种方式解决问题。也许你可以使用事件/观察者模式?