OpenCart 內建的會員群組功能,允許您自訂多個會員群組,並且可以針對不同的會員群組,設定不同的商品特價、量大折扣、紅利點數等等,不過系統並沒有內建自動升級會員的功能,如果您需要系統能依據會員的累計消費金額,來變動會員群組(或等級)的話,那就必須安裝擴充模組來達成。
在 OpenCart 的 Extension Store 中,有好幾套模組能提供會員自動升級的功能,我們選擇累計銷售數最高,上架時間也蠻久的一套,期望它的功能成熟穩定,接下來,就來分享一下我們的使用經驗。
模組名稱 : Customer Group Auto Switcher
模組網址 : https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=4666
這一套會員自動升級模組,是自從 OpenCart 1.5.x 的年代就開始發展的,所以目前替換代碼的部分,仍是以 vqmod 所設計的,不過由於模組沒有完全滿足我們的需求,所以後來我們自行用 OCMOD 改寫過了,如果你不喜歡系統多掛一套 vqmod,那建議考慮其他廠商開發的模組,例如 : https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=25207
Customer Group Auto Switcher 它的設定介面是直接改寫了系統的會員群組管理的功能,會員群組管理清單,多了每個會員群組的升級規則說明。
![](https://24cc.com/wp-content/uploads/2020/05/auto-switcher-01.png)
進入到會員群組的編輯畫面,可以看到擴增了一些升(降)級相關的欄位設定,例如升級後的下一個等級、訂單累計金額門檻、訂單累計期天數、訂單累計的訂單狀態、還有啟用降級功能等等。
![](https://24cc.com/wp-content/uploads/2020/05/auto-switcher-02.png)
模組能依照規則運作,尚稱穩定,畢竟已經維護7、8年,但在使用上我們遇到了幾個狀況,或許其他類似模組也有相同問題,所以跟大家分享。
第一點 無法一次跳級到位
這套模組設計成在會員結帳、會員登入、會員進到我的帳號時,都會進行會員等級變動的檢查,觸發時機沒問題,即使現有會員已有達升級資格者,也會在模組安裝後,再次登入時觸發升級。
但是我們卻發現,這套模組被設計成每次變動只跳一級,即使明明會員應該有資格連跳2級,也只會在第一次觸發升級時升等一級,必須再次被觸發,才會升到應有的等級,沒有辦法一次升到位,分析過模組成程式,的確如此設計,應該是沒有考慮到一次跳升2級的需求,如果您不介意,例如您的網站只分2個會員等級,這問題就可以忽略。
第二點 訂單產生日期認定有誤
會員累計消費金額的日期區間,是抓訂單的產生日期計算的,例如設定 365 天的累計區間,就會找訂單產生日期是落在往前 365 天之內的訂單,當然還會搭配指定的訂單狀態。
不過,OpenCart 訂單產生日期,並不一定是紀錄著結帳的時間,例如當你安裝了一頁式結帳,在會員初次進入到結帳畫面時,系統就會建立一筆臨時的訂單,並使用會員編號或 Session ID 來關聯,所以當某個會員或訪客,在系統中已經存在臨時訂單的紀錄,則在該會員完成結帳之前,都會使用該筆紀錄作為訂單資料,包含訂單編號及產生日期,即使會員是在建立了臨時訂單後的一個月才真正結帳,該筆訂單仍會是使用一個月前所建立的訂單編號及產生日期。
於是,以訂單的產生日期來做為區間的判別欄位,可能會失真,一張在 370 天前建立臨時訂單,在 10 天之後完成結帳的正式訂單,有可能因此不會被納入累計金額,因為它被視為 370 天前的訂單。
如果您的系統沒有使用一頁式結帳,或您的一頁式結帳模組沒有這種情形,那就可以忽略這個問題。
建議
以上 2 個問題,我們都以自行改寫模組完成修正,若您正準備導入依會員累計消費自動升等的功能,請注意我們提到的問題,尤其是第一個問題需要改寫升降級的判斷邏輯,工程不小,希望以上的分享,對您有所幫助。
MarTech 行銷科技洞察社團 - GA4、SEO、GTM、Search Console、Looker Studio、社群、內容、廣告
OpenCart 台灣技術支援 - OpenCart 網站代管、客製、維護
OpenCart 台灣電商社團 - 台灣 OpenCart 使用者交流
=====================================================