购物车 怎么计算总价 php,Magento购物车价格计算的功能实现代码

一、代码流程:

1、Mage_Sales_Model_Quote::collectTotals();

图1-001 Mage_Sale模块的Mage_Sales_Model_Quote::collectTotals()方法

41d443bb19c58fe3a4a078f443b35e17.png

2、循环 Mage_Sales_Model_Quote::getAllAddress()地址信息

3、调用 Mage_Sales_Model_Quote_Address::collectTotals();

图1-002 Mage_Sale模块的Mage_Sales_Model_Quote_Address::collectTotals()方法

c7fdc7845025598e057c1e63dd43006a.png

4、循环 Mage_Sales_Model_Quote_Address::getTotalCollector()->getCollectors()

5、调用 Mage_Sales_Model_Quote_Address_Total_Collector::getCollectors();

图1-003 Mage_Sale模块的Mage_Sales_Model_Quote_Address_Total_Collector::_initModels()方法

840665cf3e9be9b1acce89fc3be1959b.png

图1-004 Mage_Sale模块的Mage_Sales_Model_Config_Ordered::_initCollectors()方法

e7319197e24fa21a50a82945d653384f.png

图1-005 Mage_Sale模块的Mage_Sales_Model_Config_Ordered::_getSortedCollectorCodes()方法

942c34d23543e213898cebb1760f1a2e.png

6、至此,就得到了config.xml里配置得各计价用的total类,他们均继承与Mage_Sales_Model_Quote_Address_Total_Abstract类,并分别实现各自的collect方法

注:尤其注意理解config.xml的global/sales/quote/total/{code}的before与after两个配置项对价格计算的影响及作用

图1-005-01 DEBUG调试Mage_Sales_Model_Config_Ordered::_getSortedCollectorCodes()方法 【排序前】

d7ca27258da34c02aed5c51533c9d124.png

图1-005-02 DEBUG调试Mage_Sales_Model_Config_Ordered::_getSortedCollectorCodes()方法 【排序后】

f84d3505c94a7c3b044e3c0e6444098b.png

二、案例分析

现在,我们抽出最关键一个促销折扣的计价类做为示例来看一下他是怎么实现促销匹配及价格计算的

图2-001 Mage_SalesRule模块的config.xml

7b7de83abc9026c6771952de1b03ff39.png

图2-002 Mage_SalesRule模块的Mage_SalesRule_Model_Quote_Discount::__construct()方法

d2c6c9282eaa298a08c734d9df110f12.png

图2-002-01 Mage_SalesRule模块的Mage_SalesRule_Model_Quote_Discount::collect()方法

091e5781f19500bf55aafe60184b61c3.png

图2-002-02 Mage_SalesRule模块的Mage_SalesRule_Model_Quote_Discount::collect()方法

a4f499c9f9ead2144948f721915a0136.png

图2-003 Mage_SalesRule模块的Mage_SalesRule_Model_Validator::init()方法

4a4b5f88c6469f517813e280999077d8.png

图2-004 Mage_SalesRule模块的Mage_SalesRule_Model_Validator::initTotals()方法

becab3d0d2414cde5f992c4de2dc078c.png

图2-005 Mage_SalesRule模块的Mage_SalesRule_Model_Validator::process()方法【关键】

2b229227be6039cb1b5e502b1f77da14.png

(责任编辑:最模板)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值