如何讓ECSHOP模板執行PHP
2013-02-03
183
相關文章
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 內容為
<?
$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,請至VIP室下載
這樣做有點因噎廢食
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 內容為
<?
$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,請至VIP室下載
如果你對如何讓ECSHOP模板執行PHP有任何問題請到討論區發帖。