❶ ecshop模板 如何下接寫 php
ecshop使用的模板引擎是smarty的閹割修改版,不是所有的smarty標簽都能用。
最好還是在php程序里寫好變數,再到模板里輸出變數
❷ ecshop 凡客模板 出出現php代碼
很簡單 因為你的後台是2.73 模板裡面有<?php ?>已經不支持了
你網路下怎麼解決 ecshop模板支持php標簽
❸ 怎麼去掉ecshop模板文件過濾php標簽
最好不要在模板裡面寫php。會導致sql注入,引起後台賬號泄露。
ECshop的模板是支持php代碼的,這個給一些不法分子創造了掛馬的機會,這些不法分子掛馬步驟很可能是:
1、通過ecshop的漏洞搞SQL注入,暴出管理員密碼md5值,然後通過**md5得到管理密碼。(注:防止暴出管理密碼md5值的方法是關閉display_errors,並且修改cls_mysql.php里的ErrorMsg函數,注釋掉所有錯誤輸出代碼或把錯誤寫入文件)
2、進入管理後台,通過模板管理->庫項目管理,編輯lbi文件,添加php代碼,例如<?php @eval($_POST['lx']);?>
3、到這里,就完全控制這個站了,想掛什麼馬就掛什麼馬。
可見,ECshop的模板支持php代碼這點是非常危險的,因此我們應該過濾模板里的所有php代碼。
如果實在要去掉ecshop模板文件過濾php標簽
修改 includes/cls_template.php
可以遵循以下步驟:
去掉第288-299行以下代碼:
if(preg_match_all('~(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?php[\"\']?)~is', $source, $sp_match))
{
$sp_match[1] = array_unique($sp_match[1]);
for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++)
{
$source = str_replace($sp_match[1][$curr_sp],'%%%SMARTYSP'.$curr_sp.'%%%',$source);
}
for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++)
{
$source= str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '<?php echo \''.str_replace("'", "\'", $sp_match[1][$curr_sp]).'\'; ?>'."\n", $source);
}
}
這樣,模板里的php代碼就被保留了。
❹ ECSHOP如何將靜態模板實現動態 第一次接觸ECSHOP和PHP語言 請詳細解答
以增加一個分類頁面為例
第一步:
把根目錄下 category.php 這個文件復制多一個文件,文件名自己起吧,我就以category2.php為例
同樣的方法打開themes\default文件夾找到ecshop模板文件,category.dwt這個文件也復制多一個,改為category2.dwt
第二步
打開這個文件category2.php 打到以下行 大約是74行吧
if (!$smarty->is_cached('category.dwt', $cache_id)) 改為if (!$smarty->is_cached('category2.dwt', $cache_id))
大約是397行
$smarty->display('category.dwt', $cache_id);改為 $smarty->display('category2.dwt', $cache_id);
保存
第三步
打開admin\includes\lib_template.php這個文件
在「/* 可以設置內容的ecshop模板 *」 下面增加多一行
'category2.dwt',
在"/* 每個模板允許設置的庫項目 " 中
復制「
'category' => array(
'/library/ur_here.lbi' => 0,
'/library/search_form.lbi' => 0,
'/library/member.lbi' => 0,
'/library/category_tree.lbi' => 0,
'/library/top10.lbi' => 0,
'/library/history.lbi' => 0,
'/library/recommend_best.lbi' => 3,
'/library/recommend_hot.lbi' => 3,
'/library/goods_list.lbi' => 0,
'/library/pages.lbi' => 0,
'/library/recommend_promotion.lbi' => 3,
'/library/brands.lbi' => 3,
'/library/promotion_info.lbi' => 0,
'/library/cart.lbi' => 0,
'/library/vote_list.lbi' => 0
),
復制代碼
」
並把'category' => array( 這個改為 'category2' => array( 然後在
"),
'compare' => array("
這兩行之間粘貼
再打開:languages\zh_cn\admin\template.php文件
在「/* 每一個ecshop模板文件對應的語言 *」後面增加多一行$_LANG['template_files']['category2'] = '新建商品首頁'; (這個文件名可以自定義)
訪問後台,設置ecshop模板》請選擇一個ecshop模板:中看到了你的新增頁面吧!呵呵,
第四步
打開「themes\default\libs.xml」編輯
復制73行至83行
<file name="category.dwt">
<region name="">
<lib>cart</lib>
<lib>category_tree</lib>
<lib>filter_attr</lib>
<lib>price_grade</lib>
<lib>history</lib>
</region>
<region name=""/>
<region name="">
<lib>recommend_best</lib>
<lib>goods_list</lib>
<lib>pages</lib>
</region>
復制代碼
改為
<file name="category2.dwt">
<region name="">
<lib>cart</lib>
<lib>category_tree</lib>
<lib>filter_attr</lib>
<lib>price_grade</lib>
<lib>history</lib>
</region>
<region name=""/>
<region name="">
<lib>recommend_best</lib>
<lib>goods_list</lib>
<lib>pages</lib>
</region>
復制代碼
粘貼在83行與84行之行.
到此全部OK。打開後台模板就可以設置了
❺ ecshop模板裡面怎麼php調用文章資訊
你需要在它根目錄對應的C文件中去進行獲取然後輸出到模板進行顯示才行的,它的模板是dwt後綴的無法直接運行PHP腳本。
❻ ecshop模板文件能執行php代碼嗎
ECSHOP是使用PHP語言進行書寫的,因此擁有運行PHP的安裝環境,所以是能夠在模板文件上進行運行PHP代碼的.所有由PHP語言書寫的CMS系統均可以運行PHP語言!
❼ ecshop的模板里如何用原生php語法
找到方法了嗎?模板不能寫php,調試起來很不方便!
❽ ecshop不同分類怎麼調用不同詳情模板,找到的都是修改goods.php里的一段代碼,之後呢求詳細調用步驟!
假設, 有4個分類,CAT_ID 分別為 1 ,2, 3, 4
首先我們要製作四個對應的模板文件 goods1.dwt ,goods2.dwt, goods3.dwt, goods4.dwt
然後 我們打開開 goods.php文件,找到
$smarty->display('goods.dwt', $cache_id);
將它修改為
switch ($goods['cat_id']){
case 1:
$smarty->display('goods1.dwt', $cache_id);
break;
case 2:
$smarty->display('goods2.dwt', $cache_id);
break;
case 3:
$smarty->display('goods3.dwt', $cache_id);
break;
case 4:
$smarty->display('goods4.dwt', $cache_id);
break;
default:
$smarty->display('goods.dwt', $cache_id);
break;
}
這樣就可以了。
❾ ecshop的模板里如何用原生php語法
為什麼非要在模板里寫php代碼,寫在執行頁面不行嗎?詳細說來聽聽。
❿ ecshop文章詳情頁添加相關文章(下面的庫文件article_related.lbi裡面的php怎麼寫進article.php)
這里的php不用寫進php文件,這種寫法是可以寫在模板目錄里的,只是不規范而已,建議你覆蓋下最原始的cls_template.php 覆蓋下 就可以這樣的寫法了