OpenCart PHP

OpenCart 裝 ThemeGlobal Lite 時 slideshow 不見的問題

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=4554

ThemeGlobal Lite 是 OpenCart market place 裡還算滿熱門的一個主題,前陣子拿來試用,但一直有 slideshow 出不來的問題,本篇記錄一下 trace 這問題的一些過程 (雖然最後發現是某處沒設定到  lol

(以下測試是依照最新版 OpenCart 2.3.0.2)

slideshow 的顯示是在 common/header.tpl, 找到

<?php $slideshow = $modules->getModules('slideshow'); ?>
<?php if(count($slideshow)) { 

以 header.tpl 來說,原因就是 $slideshow 是空的。$modules->getModules 的實作是在 catalog/view/theme/themegloballite/lib/module.php, Modules::getModules. 其中找到

$module_data2 = $this->model_design_layout->getLayoutModules(
$layout_id, $module_position);

當 $module_position = ‘slideshow’ 時,$module_data2 是空的。$this->model_design_layout->getLayoutModules 的實作是在 catalog/model/design/layout.php, ModelDesignLayout::getLayoutModules.

其中可以看到是在 DB table layout_module 沒有 position = ‘slideshow’ 的項目。如果去看一下 table layout_module, 裡面 position 應該只有 content_top, content_bottom, column_left, column_right 這幾個值 (OpenCart 2.x 就是這樣切版的),並沒有 slideshow.

到目前為止關於這問題解法的思考方向可以分為兩點:
1) 想辦法在 layout position 裡加上 slideshow 這位置。但這會改到框架,而且破壞框架本身的設計安排。
2) 更改 Modules::getModules 的實作, 讓這 function 可以跳過 layout position, 直接拿到 slideshow 模組。

最後發現 ThemeGlobal Lite 有自帶一個 TG ThemeGlobal Lite Revolution Slider 模組,要確定有安裝它,而且確定他的 Status 是 on, 而且裡面有加 slide. 如果安裝設定都正確的話,回到 Modules::getModules, 他會走標記為

// Old Opencart 1.5.6 Modules

的這一路 (即使目前 OpenCart 為 2.3),最後 return slideshow 給 header.tpl

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。