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

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

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

申請(qǐng)免費(fèi)試用、咨詢(xún)電話:400-8352-114

起首我們來(lái)看看這個(gè)項(xiàng)目標(biāo)文件樹(shù):

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

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

每個(gè)dwt對(duì)應(yīng)一個(gè)php頁(yè)面,比方index.php對(duì)應(yīng)index.dwt。

好了。

比方說(shuō)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" />

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

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

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

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

$compiled_content = $template_header . $compiled_content;

的下面添加以下代碼,都是用正則表達(dá)式(preg_replace)來(lái)交換字符串,詳細(xì)寄義有注釋?zhuān)?/p>

<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('/(<link\shref=["|\'])(?:\.\/|\.\.\/)?(css\/)?([a-z0-9A-Z_]+\.css["|\']\srel=["|\']stylesheet["|\']\stype=["|\']text\/css["|\'])/i','\1' . $tmp_dir . '\2\3', $compiled_content);

/* 批改js目次下js的途徑 */
$compiled_content = preg_replace('/(<script\s(?: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', // 交換相對(duì)鏈接
'/((?:background|src)\s*=\s*["|\'])(?:\.\/|\.\.\/)?(images\/.*?["|\'])/is', // 在images前加上 $tmp_dir
'/((?:background|background-image):\s*?url\()(?:\.\/|\.\.\/)?(images\/)/is', // 在images前加上 $tmp_dir
'/([\'|"])\.\.\//is', // 以../開(kāi)首的途徑悉數(shù)批改為空
);
$replace = array(
'\1',
'',
'\1\2\3',
'\1' . $tmp_dir . '\2',
'\1' . $tmp_dir . '\2',
'\1'
);
$compiled_content= preg_replace($pattern, $replace, $compiled_content);

 

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

 

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

發(fā)布:2007-03-31 15:15    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
新余OA
聯(lián)系方式

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

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

咨詢(xún):400-8352-114

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

QQ在線咨詢(xún)

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

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