監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關閉
新余OA
聯(lián)系方式

成都公司:成都市成華區(qū)建設南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢

新余網(wǎng)站建設公司

當前位置:工程項目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 新余OA > 新余網(wǎng)站建設公司

Ecshop中怎樣使Smarty支持模板路徑替換

申請免費試用、咨詢電話:400-8352-114

起首我們來看看這個項目標文件樹:

smarty目次是smarty順序,themes是模板目次,themes下面的每一個子目次代表一種模板。默許是default模板。

模板下面的dwt是模板文件,lib里面lbi是模板庫文件,images目次寄存圖片。和ECShop非常的相似,由于我預備仿它。

每個dwt對應一個php頁面,比方index.php對應index.dwt。

好了。

比方說index.dwt里面有句代碼:

<div style="WIDTH: 650px; WHITE-SPACE: nowrap; OVERFLOW: auto" class="codecolorer-container html4strict mac-classic">

<div class="html4strict codecolorer"><img src="images/user.gif" alt="user" />

也許你會以為這個圖片可以顯示出來,然則我們翻開localhost/index.php,發(fā)現(xiàn)圖片并未顯示,圖片的途徑釀成了localhost/images/user.gif,而真正的途徑應該是localhost/themes/default/images/user.gif。

這只是圖片的例子,假如js或許css都需求交換,就需求給smarty寫個插件或許是擴展smarty的代碼。

小弟不才,只能在本來smarty的持續(xù)上修正代碼,辦法是:

翻開Smarty_Compiler.class.php,跳轉(zhuǎn)到_compile_file函數(shù)的這句:

$compiled_content = $template_header . $compiled_content;

的下面添加以下代碼,都是用正則表達式(preg_replace)來交換字符串,詳細寄義有注釋:

<div style="WIDTH: 650px; WHITE-SPACE: nowrap; OVERFLOW: auto" class="codecolorer-container php mac-classic">

 

 <div class="php codecolorer">$tmp_dir = 'themes/' . $GLOBALS['_CFG']['template'] . '/'; // 模板地點途徑

/* 批改css途徑 */
$compiled_content = preg_replace('/(<linkshref=["|'])(?:./|../)?(css/)?([a-z0-9A-Z_]+.css["|']srel=["|']stylesheet["|']stype=["|']text/css["|'])/i','1' . $tmp_dir . '23', $compiled_content);

/* 批改js目次下js的途徑 */
$compiled_content = preg_replace('/(<scripts(?:type|language)=["|']text/javascript["|']ssrc=["|'])(?:./|../)?(js/[a-z0-9A-Z_-.]+.(?:js|vbs)["|']></script>)/', '1' . $tmp_dir . '2', $compiled_content);

$pattern = array(
'/|n]*?({.+?})[^<|{|n]*?-->/', // 交換smarty注釋
'/<!--[^<|>|{|n]*?-->/', // 交換不換行的html注釋
'/(href=["|'])../(.*?)(["|'])/i', // 交換相對鏈接
'/((?:background|src)s*=s*["|'])(?:./|../)?(images/.*?["|'])/is', // 在images前加上 $tmp_dir
'/((?:background|background-image):s*?url()(?:./|../)?(images/)/is', // 在images前加上 $tmp_dir
'/(['|"])..//is', // 以../開首的途徑悉數(shù)批改為空
);
$replace = array(
'1',
'',
'123',
'1' . $tmp_dir . '2',
'1' . $tmp_dir . '2',
'1'
);
$compiled_content= preg_replace($pattern, $replace, $compiled_content);

 

$GLOBALS['_CFG']['template']是一個全局變量,用于寄存當時模板的目次名,你可以放在裝備文件中,也可以放入數(shù)據(jù)庫,然后翻開頁面的時分讀取就行了。
也并紛歧定是一切的資本都需求交換,視你的項目狀況而定,其實這幾行代碼都是從ECShop的cls_template.php copy過來的。在dwt里面刺進js、css的時分需求留意,rel、type、src等屬性的在script和link中的挨次固定依照以上代碼的挨次。不然無法交換。

 

新余網(wǎng)站建設 

發(fā)布:2025-09-29 11:59    編輯:泛普軟件 · xiaona    [打印此頁]    [關閉]

相關推薦

最新文章

泛普新余網(wǎng)站建設公司其他應用

新余軟件開發(fā)公司 新余門禁系統(tǒng) 新余物業(yè)管理軟件 新余倉庫管理軟件 新余餐飲管理軟件 新余網(wǎng)站建設公司