讓 OpenCart 購物網站自動判斷常溫或冷藏運送

介紹或分享第三方廠商或本站自行開發的模組及版型
回覆文章
admin
系統管理員
文章: 120
註冊時間: 2018-01-05, 17:40

讓 OpenCart 購物網站自動判斷常溫或冷藏運送

文章 admin » 2018-05-07, 19:34

很多商家的商品是需要冷藏運送的,比較困擾的是,有些商品需要冷藏配送,有些只需要一般常溫配送,若常溫與冷藏配送的運費及免運門檻,都各自不同時,一般的購物網站系統應該都無法處理這樣的運費計算機制,OpenCart 內建的運送模組當然也無法支援這樣的需求,不過,OpenCart 的運送模組是很容易自行客製的,所以這樣的需求,在 OpenCart 的系統上是不難開發出來的。

由於近日剛剛幫某個食品網站開發好一個自動判別常溫或冷藏運送的模組,此次的需求是當商品中含有冷藏商品時,就採用冷藏配送,否則就採用常溫配送,而冷藏及常溫配送,皆有各自的階梯式運費表及免運門檻,故在這裡分享一些經驗,讓商家的工程人員能觸類旁通,發展出適合自家的專屬運費模組。

首先,由於 opencart 的商品資料,並無內建商品是屬於常溫或冷藏運送的欄位,所以第一步就是幫 oc_product TABLE 新增一個 refrigerated 欄位,用來標註商品是否為冷藏運送品,除了資料庫要新增欄位之外,後台商品編輯的相關 controller & template 檔案,也要配合增加讀寫此欄位的處理,這部分熟悉 opencart 的工程師都知道,就不贅述。
圖檔

接下來必須新增一組 shipping extension,因為規劃常溫及冷藏運費皆能提供階梯式的計費,例如未滿 2,000 元須收運費 200,滿 2,000 但未滿 5,000 元須收運費 100,滿 5,000 以上則免運費等等,所以我們從系統內建的 weight 運送模組來複製修改,因為 weight 運送模組就是屬於階梯式的計費模式,複製並命名一組新的運送模組之後,先修改後台的模組設定部分,原來的 weight 運送模組只有設計一組 rate 欄位,來記錄階梯式運費表,由於我們需要常溫及冷藏 2 組階梯式運費表,所以必須修改成 2 個欄位,包括 controller & template 的檔案。
圖檔

接著修改新模組前端的 model 程式,將 getQuote() function 設計成有能力判別購物車中的商品,是否含有冷藏商品,若有,就採用我們在後台設定的冷藏階梯式運費,否則就採用常溫階梯式運費,原本的 weight 運送模組是採用下面這一行來取得購物車中的商品重量,以便進行階梯式運費的比對,
$weight = $this->cart->getWeight();

而在我們新的運送模組中,必須改成透過
$this->cart->getProducts();

取得購物車中的所有商品,並跑個迴圈判斷是否內含冷藏商品(依我們新增的 refrigerated 欄位),然後再透過
$this->cart->getTotal();

取得本次的購物金額,再依有無冷藏商品,套入冷藏或常溫之階梯式運費表,即可得到正確的運費。

若您研究過 opencart 的運費模組,您就會發現運費的機制相當容易了解,要客製專屬的運費規則也相當有彈性空間,如果您目前的購物網站的運費機制,無法滿足您的需求,建議評估一下 OpenCart,不只在運費機制,在優惠折扣或是系統的功能,都有相當大的修改彈性或客製空間,很適合品牌電商用來建立個性化的專屬商店。
OpenCart 購物網站代管及維護 https://www.osec.tw
OpenCart 台灣技術支援 FB 粉絲頁 https://www.facebook.com/ntcart/

回覆文章