Magento:多个网站和多个控制器覆盖

时间:2013-03-19 16:57:52

标签: magento controller override checkout

我遇到的问题是我不确定是否有解决方案。 实际上,我们有一个magento网站A和一个magento网站B,它们都使用相同的核心资源。因为它们都有一些规范,我们覆盖了网站相应文件夹中代码的某些部分。

实际上,两个网站都在使用网站A的Checkout模块。但是B网站的结账行为现在必须改变,我正在寻找一种方法来重写B网站的控制器。

所以我的问题是:如何只为A网站重写A文件夹中的结账控制器,并在B文件夹中重写相同的控制器,仅用于B网站?

我已尝试做以下事情而没有取得任何成功:

网站 - > config.xml中

<routers>
    <checkout>
        <args>
            <modules>
                <Mage_Checkout>Mage_Checkout</Mage_Checkout>
                <A_Checkout before="Mage_Checkout">A_Checkout</A_Checkout>
                <frontname>checkout</frontname>
            </modules>
        </args>
    </checkout>
</routers>

B网站 - &gt; config.xml中

<routers>
    <checkout>
        <args>
            <modules>
                <Mage_Checkout>Mage_Checkout</Mage_Checkout>
                <B_Checkout before="A_Checkout">B_Checkout</B_Checkout>
                <frontname>checkout</frontname>
            </modules>
        </args>
    </checkout>
</routers>

问题是首先调用B结账控制器。

在这种情况下,我唯一的解决方案是查看websiteId,如果我们在A网站上,则调用父函数,如果我们在B网站上,则继续调用。

你能否告诉我这是否是一个好的解决方案?或者我错过了什么?

非常感谢您的任何建议!

Seb

1 个答案:

答案 0 :(得分:0)

我的建议是创建两个相似的模板并分配一个模板来存储A而另一个模板来存储B. 现在,对于商店B模板,应用您想要一页结帐的任何修改。

在这里你仍然会分享相同的核心代码,但只是在块和模板级别你需要修改哪个更容易定制。