當(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è)
- 1長(zhǎng)尾詞才是企業(yè)網(wǎng)站流量的提升的根本
- 2企業(yè)集團(tuán)網(wǎng)站建設(shè)解決方案
- 3怎樣學(xué)習(xí)及實(shí)踐網(wǎng)絡(luò)營(yíng)銷(xiāo)
- 4Ecshop中怎樣使Smarty支持模板路徑替換
- 5網(wǎng)站權(quán)重的表現(xiàn)
- 6企業(yè)為什么須要權(quán)威的網(wǎng)站設(shè)計(jì)單位做官方網(wǎng)站呢?
- 7萬(wàn)網(wǎng)中,如何查看郵箱賬號(hào)登錄網(wǎng)頁(yè)版日志
- 8轉(zhuǎn)化率對(duì)網(wǎng)站的影響和改善
- 9反饋留言不能轉(zhuǎn)發(fā)到指定郵箱的解決辦法
- 10百度算法調(diào)整帶來(lái)的優(yōu)化策略的變化
- 11PHP與JAVA相比,哪個(gè)是高端OA軟件御用語(yǔ)言
- 12新余網(wǎng)站設(shè)計(jì)公司如何設(shè)計(jì)方案
- 13正確使用PHP引號(hào)
- 14系統(tǒng)的二次開(kāi)發(fā)、初試ECSHOP制作模板
- 15怎樣使用php 獲取遠(yuǎn)程網(wǎng)址頭部信息
- 16網(wǎng)站改版后的網(wǎng)站優(yōu)化
- 17企業(yè)網(wǎng)站優(yōu)化中的內(nèi)容營(yíng)銷(xiāo)
- 18網(wǎng)站設(shè)計(jì)師必須懂的
- 19企業(yè)網(wǎng)站制作應(yīng)怎樣設(shè)計(jì)細(xì)節(jié)
- 20詳談UChome核心開(kāi)發(fā)
- 21清除htaccess設(shè)置的css、js緩存
- 22優(yōu)化中代碼需要注意的
- 23詳談UCHome數(shù)據(jù)庫(kù)相關(guān)介紹
- 24養(yǎng)成幾條PHP編程好習(xí)慣
- 25網(wǎng)站建設(shè)之網(wǎng)站定位
- 26網(wǎng)站建設(shè)要軟硬兼施
- 27企業(yè)為什么偏偏需要權(quán)威的網(wǎng)站開(kāi)發(fā)企業(yè)做官網(wǎng)呢?
- 28php中時(shí)間軸開(kāi)發(fā)
- 29PHP開(kāi)發(fā)者經(jīng)常犯的幾個(gè)MySQL錯(cuò)誤
- 30怎么添加網(wǎng)站統(tǒng)計(jì)代碼?
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓