0
我有一个模块(不是由我创建的),它接收报价并在满足特定条件时应用折扣。这在它自己的工作很好。购物车规则也可以正常工作。Magento模块影响报价的订单
但是,我需要自定义模块在应用内置Magento购物车(总价格)规则之前应用相关折扣。就目前来看,Magento首先应用,然后是自定义应用,导致Magento在不应该有折扣的时候。
什么控制模块的顺序,因此我将如何指定不同的顺序。
我有一个模块(不是由我创建的),它接收报价并在满足特定条件时应用折扣。这在它自己的工作很好。购物车规则也可以正常工作。Magento模块影响报价的订单
但是,我需要自定义模块在应用内置Magento购物车(总价格)规则之前应用相关折扣。就目前来看,Magento首先应用,然后是自定义应用,导致Magento在不应该有折扣的时候。
什么控制模块的顺序,因此我将如何指定不同的顺序。
Magento有collectTotals
功能(我相信这是实现了Composite模式)。它的基本功能 - 按顺序分别填写指定的总收集器,并将其称为collect()
方法。
最有可能您的模块的总收集器被调用后SalesRule
之一(其代码折扣)。所以你需要做的是:打开3210配置文件的自定义折扣模块,找到xpath config/global/sales/quote/totals/[模块别名]并添加(或者如果存在则更改)<before>discount</before>
通过这种方式,您可以订购自定义模块的总收集器,在SalesRule
之前应用折扣。
感谢您的回答,没有任何'before'指令,所以我在'class'下面添加了一个,但不幸的是它似乎没有任何影响。还有一个'',不确定这是否相关。 –
您所描述的功能可能在Observer中完成。您可以尝试将''改为'' - 因此自定义模块逻辑将应用于'collectTotals'过程之前,但可能您的_Quote_对象不会包含小计。 –
那真奇怪;做出了你所建议的改变,但是现在当添加到购物车或访问非空购物车时,会出现500错误(php致命错误内存耗尽)。是否有任何其他信息可以帮助我们指出原因。感谢您的答案,真的很感激。 –