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

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

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

咨詢:400-8352-114

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

QQ在線咨詢

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

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

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

申請免費(fèi)試用、咨詢電話:400-8352-114

起首我們來看看這個項(xiàng)目標(biāo)文件樹:

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

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

每個dwt對應(yīng)一個php頁面,比方index.php對應(yīng)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,而真正的途徑應(yīng)該是localhost/themes/default/images/user.gif。

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

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

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

$compiled_content = $template_header . $compiled_content;

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

<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'] . '/'; // 模板地點(diǎn)途徑

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

 

新余網(wǎng)站建設(shè) 

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

相關(guān)推薦

最新文章

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

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