登入 註冊
 

如何讓ECSHOP模板執行PHP
閱讀 53 次 0 會員 與 1 訪客 正在閱讀本文。
七月 09, 2019, 02:16:39 下午
20121106的補釘限制了ECSHOP模板執行PHP
這樣做有點因噎廢食
smarty模板引擎本來就可以執行PHP
ECSHOP卻為了不讓駭客入侵後將程式碼植入模板中
而限制了這麼方便的功能
如此治標不治本的方法真讓人頭大

在打補釘時需要注意
如果你的模板中有使用PHP語法
打補釘時不要動到 cls_template.php
否則模板中所有PHP功能都會失效
輕微的會出現錯誤訊息
嚴重的會導致整個網站無法運作

ECSHOP模板中很多進階功能需要PHP來達成
若要修改PHP檔案日後將造成升級困擾
因此只能以最少的修改方式
配合插件的方式來完成
舉例來說:
很多模板都會用 themes/'.$GLOBALS['_CFG']['template'] 來取得模板路徑
補釘之後會變成空的因此有些檔案會找不到
你可以在 includes/init.php 最後加上 @include(ROOT_PATH . 'plugins/freecolor.php');

然後在 plugins 資料夾內新增 freecolor.php 內容為
代碼: [選擇]
<?php
    $themes_path
'themes/'.$GLOBALS['_CFG']['template'].'/';
    
$GLOBALS['smarty']->assign('template_dir'$template_dir);
?>

這樣就可以在模板中使用 {$template_dir} 取得模板路徑
模板中用到的PHP程式可以放在此檔內
日後若有升級只需重新在 includes/init.php 最後加上
@include(ROOT_PATH . 'plugins/freecolor.php'); 即可
freecolor 可以自行更改名稱
如果你是VIP,請至http://we-shop.net/bbs/index.php?topic=1127.0 VIP室下載

記錄