1. 程式人生 > 實用技巧 >Magento購物車價格計算的功能實現之程式碼理解

Magento購物車價格計算的功能實現之程式碼理解

>>> hot3.png

一、程式碼流程:
1、Mage_Sales_Model_Quote::collectTotals(); 圖1-001 Mage_Sale模組的Mage_Sales_Model_Quote::collectTotals()方法 24214618_MkNq.jpg 2、迴圈Mage_Sales_Model_Quote::getAllAddress()地址資訊 3、呼叫 Mage_Sales_Model_Quote_Address::collectTotals(); 圖1-002 Mage_Sale模組的Mage_Sales_Model_Quote_Address::collectTotals()方法
24214618_2YCn.jpg 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()方法 24214618_CXnR.jpg 圖1-004 Mage_Sale模組的Mage_Sales_Model_Config_Ordered::_initCollectors()方法
24214618_LApo.jpg 圖1-005 Mage_Sale模組的Mage_Sales_Model_Config_Ordered::_getSortedCollectorCodes()方法 24214618_taMz.jpg 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()方法 【排序前】
24214618_pyKv.jpg 圖1-005-02 DEBUG除錯Mage_Sales_Model_Config_Ordered::_getSortedCollectorCodes()方法 【排序後】 24214619_zNMC.jpg
二、案例分析 現在,我們抽出最關鍵一個促銷折扣的計價類做為示例來看一下他是怎麼實現促銷匹配及價格計算的 圖2-001 Mage_SalesRule模組的config.xml 24214619_d4xT.jpg 圖2-002 Mage_SalesRule模組的Mage_SalesRule_Model_Quote_Discount::__construct()方法 24214619_SPxS.jpg 圖2-002-01 Mage_SalesRule模組的Mage_SalesRule_Model_Quote_Discount::collect()方法 24214619_3cBF.jpg 圖2-002-02 Mage_SalesRule模組的Mage_SalesRule_Model_Quote_Discount::collect()方法 24214619_xx6f.jpg 圖2-003 Mage_SalesRule模組的Mage_SalesRule_Model_Validator::init()方法 24214619_co1D.jpg 圖2-004 Mage_SalesRule模組的Mage_SalesRule_Model_Validator::initTotals()方法 24214619_5oHj.jpg 圖2-005 Mage_SalesRule模組的Mage_SalesRule_Model_Validator::process()方法【關鍵】 24214620_faA4.jpg

轉載於:https://my.oschina.net/stream/blog/646945