1

我面临一个问题,我不确定是否有解决方案。实际上,我们有一个 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 站点-> 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 网站上继续。

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

非常感谢您的任何建议!

塞布

4

1 回答 1

0

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

在这里,您仍将共享相同的核心代码,但只是在块和模板级别,您需要进行修改,这比自定义要容易得多。

于 2013-03-19T17:41:36.703 回答