OpenCart 4 的佈景主題踩雷分享

為了盡早提供 OpenCart 4 的 Demo 給台灣使用者體驗,在等不到 Journal Theme 的 OpenCart 4 相容佈景主題,於是就先購買其他第三方的佈景主題 Shallow,並分享我對這套佈景主題的分析。

為了盡早提供 OpenCart 4 的 Demo 給台灣使用者體驗,在等不到 Journal Theme 的 OpenCart 4 相容佈景主題(以前我稱版型,之後將改稱佈景主題,對齊 WordPress),於是就先購買其他第三方的佈景主題,這次買的是 Shallow – Beauty & Cosmetics Store Opencart Theme

購買之後下載檔案,解壓縮後可以看到包含下面的目錄:

3 個 OPC128L 開頭的目錄,包含這套主題提供的 3 個 skin,所以要切換不同 skin,必須上傳不同路目錄覆蓋檔案,並不是從後台的主題管理設定中切換設定就可以。

進入到其中一個 skin (例如 OPC128L01),可以看到含有 2 個壓縮檔 Quickstart_v4.0.1.1.zip 和 TemplateFiles_v4.0.1.1.zip,其中 Quickstart 是包含 OpenCart 系統檔案以及 Shallow 主題相關檔案的完整備份,就是解壓縮之後就可以直接安裝 OpenCart,並內含 Shallow 主題,不需要再安裝 Shallow 主題。TemplateFiles 則是單純的 Shallow 主題相關檔案,是提供給已經安裝好 OpenCart 系統之後,獨立安裝用的。

這邊看到壓縮檔都帶有版本號碼 v4.0.1.1,這是因為這個主題檔案只支援 OpenCart v4.0.1.1 版,其他版本都不相容,即使 OpenCart v4.0.2.2 已經在 2023.7.9 日釋出了,我寫這篇文章的 2023.08.28,仍未等到 Shallow 主題更新到 v4.0.2.2,有點 lag。

解開 TemplateFiles_v4.0.1.1.zip,可以看到裡面的檔案,竟然包含了非常多的 OpenCart 檔案,也就是說,Shallow 主題的設計方式,是直接修改了 OpenCart 系統的檔案,安裝時必須上傳並覆蓋這些 OpenCart 的檔案。

我開了幾個上圖中的 php 檔研究了一下,了解因為前台的每個 controller 程式需要載入Shallow 主題的專屬區塊,所以必須修改每個 controller 程式,已插入相關的程式碼,過去 OpenCart 2 & 3 的時期,可以透過 OCMod 的方式替換 php 檔,但是 OpenCart 4 已不再支援 OCMod,所以 Shallow 主題才會採用這種暴力手動,直接修改 OpenCart 的檔案,安裝時用修改過的檔案直接覆蓋的做法。

OCMod 在 OpenCart 4 之後已經被廢除了,官方建議的替代方案是使用 Event 機制,類似 WordPress 的作法,提供程式設計者可以在許多重要 function 呼叫的前後攔截(類似 WordPress 的 hook 作法),再經手處理傳遞或輸出的內容,這種作法對於系統的干擾度較低,有利於系統升級的穩定性,較不會因為 OCMod 之類的替換系統程式碼,造成升級後替換異常的情形發生,不過 Event 機制的擴充功能設計難度較高,這應該也是 Shallow 主題選擇直接修改 OpenCart 系統程式的主要原因。

直接覆蓋 OpenCart 檔案的佈景主題,我個人並不推薦,因為系統升級後也會更新 OpenCart 的系統程式檔案,造成佈景主題修改過的程式檔案將再次被覆蓋而失去功能,這也是為什麼這套佈景主題的檔案,必須限定在 v4.0.1.1 使用,因為廠商就是拿 OpenCart v4.0.1.1 的檔案修改的,所以只能用在 v4.0.1.1。

我個人期待的 Journal Theme 尚未正式推出 for OpenCart 4 的佈景主題,如果您目前就想試用 OpenCart 4,那我建議就使用內建的佈景主題,等過一陣子 for OpenCart 4 的佈景主題選擇更多了、也更穩定了,再考慮安裝套上。

發佈留言