2012-10-08 62 views
0

我有一個模塊(不是由我創建的),它接收報價並在滿足特定條件時應用折扣。這在它自己的工作很好。購物車規則也可以正常工作。Magento模塊影響報價的訂單

但是,我需要自定義模塊在應用內置Magento購物車(總價格)規則之前應用相關折扣。就目前來看,Magento首先應用,然後是自定義應用,導致Magento在不應該有折扣的時候。

什麼控制模塊的順序,因此我將如何指定不同的順序。

回答

2

Magento有collectTotals功能(我相信這是實現了Composite模式)。它的基本功能 - 按順序分別填寫指定的總收集器,並將其稱爲collect()方法。

最有可能您的模塊的總收集器被調用後SalesRule之一(其代碼折扣)。所以你需要做的是:打開​​3210配置文件的自定義折扣模塊,找到xpath config/global/sales/quote/totals/[模塊別名]並添加(或者如果存在則更改)<before>discount</before>

通過這種方式,您可以訂購自定義模塊的總收集器,在SalesRule之前應用折扣。

+0

感謝您的回答,沒有任何'before'指令,所以我在'class'下面添加了一個,但不幸的是它似乎沒有任何影響。還有一個'',不確定這是否相關。 –

+0

您所描述的功能可能在Observer中完成。您可以嘗試將''改爲'' - 因此自定義模塊邏輯將應用於'collectTotals'過程之前,但可能您的_Quote_對象不會包含小計。 –

+0

那真奇怪;做出了你所建議的改變,但是現在當添加到購物車或訪問非空購物車時,會出現500錯誤(php致命錯誤內存耗盡)。是否有任何其他信息可以幫助我們指出原因。感謝您的答案,真的很感激。 –