2013-03-19 40 views
1

我面臨一個問題,我不知道有一個解決方案。 其實,我們有一個magento網站A和一個magento網站B,它們都使用相同的核心來源。由於它們都有一些規範,我們忽略了網站相應文件夾中代碼的某些部分。Magento:多個網站和多個控制器覆蓋

所以實際上,這兩個網站都使用網站A的Checkout模塊。但是B網站的結賬行爲現在必須改變,我正在尋找一種方法來重寫B網站的控制器。

所以我的問題是:我怎麼能改寫在一個文件夾結賬控制器僅針對一個網站和重寫相同的控制器在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,然後調用父類的函數,如果我們在一個網站或繼續,如果我們在B網站上。

你能告訴我這是不是一個好的解決方案?或者我錯過了什麼?

非常感謝您的任何建議!

勒布

回答

0

我的建議是創建兩個類似的模板,並指定一個模板來存儲和其他存儲B. 現在的商店B模板應用於您想在一個頁面結帳任何修改。

在這裏,你仍然會共享相同的核心代碼,而只是在塊和模板的水平,你將需要修改這是很容易對其進行自定義。