日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ECshop模板機(jī)制整理

 quasiceo 2014-05-04

模板機(jī)制

近期新項(xiàng)目涉及到ECshop的二次開(kāi)發(fā),趁此良機(jī)正好可以對(duì)聞名已久的ECshop系統(tǒng)進(jìn)行深入了解。要了解一個(gè)系統(tǒng),那么該系統(tǒng)的模板機(jī)制就是最重要的一環(huán)。相關(guān)整理如下:

一、模板引擎:

ECshop給我的第一印象是用的smarty模板引擎,可是很快就發(fā)現(xiàn)有些不一樣,使用smarty模板引擎的系統(tǒng)通常會(huì)至少會(huì)包括smarty的核心文件:smarty.class.php、smarty_Compiler.php、config_File.class.php和debug.tpl,而在ECshop中并沒(méi)用發(fā)現(xiàn)smarty的核心類(lèi)。還是通過(guò)程序?qū)ふ掖鸢赴?,在前臺(tái)或者后臺(tái)的公用文件init.php中$smarty對(duì)象的初始化中,可以看到加載的模板引擎文件是cls_template.php,原來(lái)ECshop團(tuán)隊(duì)對(duì)smarty的核心部分做了整理及修改,這個(gè)引擎相對(duì)更加精簡(jiǎn),但是使用的時(shí)候可能需要注意,不是所有的smarty語(yǔ)法都可以在ECshop中使用,要使用還需修改模板引擎。

二、數(shù)據(jù)處理:

ECshop根目錄下及admin目錄下的文件是對(duì)應(yīng)前臺(tái)、后臺(tái)頁(yè)面的數(shù)據(jù)處理頁(yè),在這些文件中對(duì)頁(yè)面所要展示的內(nèi)容進(jìn)行處理,之后通過(guò)smarty的assign()方法注冊(cè)變量,最后通過(guò)display()方法加載相應(yīng)的模板文件。但這里我們需要注意ECshop單獨(dú)封裝的幾個(gè)方法,用于處理模板的公共內(nèi)容及頁(yè)面中某些動(dòng)態(tài)內(nèi)容的加載。如lib_main.php中的assign_template()會(huì)設(shè)置我們的網(wǎng)店的公共信息及網(wǎng)站設(shè)置;assign_dynamic()方法則是設(shè)置該頁(yè)面中的動(dòng)態(tài)加載內(nèi)容。當(dāng)頁(yè)面所需的變量設(shè)置完成后,進(jìn)入smarty的display()方法。

三、解析模板

首先,在ECshop中有.dwt和.lbi兩種格式的模板文件,那么這兩種文件之間是什么關(guān)系呢?可以這樣理解.dwt文件是針對(duì)前臺(tái)每個(gè)顯示頁(yè)面的模板“框架”,而.lbi模板中則是對(duì)頁(yè)面中公共“內(nèi)容”的整理,每個(gè).lbi文件都是頁(yè)面中的一個(gè)模塊。二者是怎樣關(guān)聯(lián)到一起的呢?在模板文件夾中有一個(gè)libs.xml文件,這里則是具體配置每個(gè)模板“框架”中可以顯示哪些“內(nèi)容”(具體內(nèi)容之后談及模板管理會(huì)細(xì)說(shuō))。

下面查看解析模板的過(guò)程,在.dwt文件中根據(jù)框架的設(shè)計(jì)會(huì)劃分出幾個(gè)“可編輯區(qū)域”,.lbi模板正是加載到“可編輯區(qū)域”中進(jìn)行輸出的。那么我們需要注意的是.dwt模板中的幾對(duì)標(biāo)簽:

①<!--TemplateBeginEditable name="右邊主區(qū)域"--><!-- TemplateEndEditable-->這對(duì)標(biāo)簽就是“可編輯區(qū)域”標(biāo)簽,在這對(duì)標(biāo)簽之間輸出的內(nèi)容是可以通過(guò)模板管理進(jìn)行設(shè)置的。主要是選擇輸出不同的.lbi文件。

②<!--#BeginLibraryItem "/library/page_header.lbi"--><!-- #EndLibraryItem-->這對(duì)標(biāo)簽則是對(duì)相應(yīng)的page_header.lbi文件的加載及輸出。這個(gè)頭部的模板每個(gè)頁(yè)面都需要加載,如果我們想更改模板中的頭部?jī)?nèi)容,只要修改page_header.lbi即可,大大提高了效率。

模板文件加載完成之后,即可通過(guò)smarty引擎解析smarty標(biāo)簽,完成模板的輸出。

 

模板修改

經(jīng)??梢钥吹絜cshop的dwt文件里面有“<!-- TemplateBeginEditable name="doctitle" -->和<!-- #BeginLibraryItem "/library/page_header.lbi" --><!-- #EndLibraryItem -->”這么一段代碼,有很多朋友誤認(rèn)為只是注釋代碼,這里首先來(lái)介紹一下#BeginLibraryItem這段代碼??梢钥吹胶竺嬗小皃age_header.lbi“這個(gè).lbi文件是一個(gè)庫(kù)文件,打開(kāi)后發(fā)現(xiàn)里面就是一些html代碼,index.dwt為模板,那么這個(gè).lbi可以理解為模板index.dwt的子模板,.lbi專(zhuān)門(mén)供別的的dwt模板導(dǎo)入的子模板. 那么 TemplateBeginEditable這個(gè)又是干什么用的呢? 很多人知道這個(gè)是可編輯區(qū)域的意思,意思就是在TemplateBeginEditable 和 TemplateEndEditable之間的位置是可編輯區(qū)域,具體的我們來(lái)舉個(gè)例字。首先我們到ecshop 管理員后臺(tái)的模板管理->設(shè)置模板里面可以看到以下這個(gè)

可以看到上面的默認(rèn)選擇了首頁(yè)模板,假如當(dāng)你將 商品分類(lèi)樹(shù) 選擇為右邊主區(qū)域 點(diǎn)擊確定之后 清楚緩存,在刷新首頁(yè)這是你會(huì)發(fā)現(xiàn),原來(lái)的 商品分類(lèi)樹(shù) 從左邊跑到右邊了。在上面的下拉框中我們看到只有三個(gè)選擇,右邊主區(qū)域,左邊主區(qū)域,廣告位,如果你想多加幾個(gè)選項(xiàng),那么很簡(jiǎn)單,只要你在你要改的模板內(nèi)多加上幾個(gè)就行了,假如你要在index.dwt模板添加   “左上角主區(qū)域”,和“右下角主區(qū)域”,那么你可以在index.dwt 里面加入

<!-- TemplateBeginEditable name="左上角主區(qū)域" -->
<!-- TemplateEndEditable -->

<!-- TemplateBeginEditable name="右上角主區(qū)域" -->
<!-- TemplateEndEditable -->

這是你再到后臺(tái),模板設(shè)置里面看首頁(yè)的選項(xiàng)中就有這個(gè)選項(xiàng)

下面我來(lái)講解一下怎么制作自己的模板, 我拿index.dwt為例, 首先在\themes\default\下將index.dwt文件拷貝一份改名為home.dwt在<body>里面加一句話 "這是自己定義的home.dwt模板" 以方便調(diào)試, 同樣在根目錄下的index.php文件拷貝一份改名為home.php里面加一行 echo '這是自己定義的home.php'; 代碼以便調(diào)試 同時(shí)把$smarty->display('index.dwt', $cache_id);改為$smarty->display('home.dwt', $cache_id);然后 清楚緩存 在瀏覽器通過(guò)http://localhost/ecshop/home.php執(zhí)行你會(huì)發(fā)現(xiàn)這個(gè)頁(yè)面跟首頁(yè)一樣,只是多了一段 "這是自己定義的home.php 這是自己定義的home.dwt模板" 文字。 當(dāng)然home.php 和home.dwt 文件里面的內(nèi)容可以自己定義.
當(dāng)你再到后臺(tái)模板管理->設(shè)置模板 里面的 選擇模板下拉框選項(xiàng)中沒(méi)有你加的home模板,這時(shí)你就要在\admin\includes\lib_template.php里配置一下。在代碼”$template_files = array('index.dwt', “ 加上你的模板”$template_files = array('home.dwt','index.dwt',“ ,告訴系統(tǒng)有home.dwt這么一個(gè)模板,其次在$page_libs = array( 這個(gè)二位數(shù)組里面的 'index' => array( 這個(gè)數(shù)組拷貝一份,改名為home ,意思就是告訴系統(tǒng)你這個(gè)home模板里面可以導(dǎo)入哪些.lbi文件.這點(diǎn)配置還不夠,你還要在\languages\zh_cn\admin/template.php語(yǔ)言包里面加一行$_LANG['template_files']['home'] = 'Myhome模板';代碼.然后你再到后臺(tái)模板管理->設(shè)置模板可以看到如下結(jié)果
  
你會(huì)發(fā)現(xiàn)下拉框中多了一個(gè)Myhome模板選項(xiàng),當(dāng)你點(diǎn)擊旁邊的確定按鈕時(shí)會(huì)報(bào)錯(cuò),這是因?yàn)槟氵€有一個(gè)xml文件沒(méi)修改,打開(kāi)themes\default\libs.xml文件,將 <file name="index.dwt"> 節(jié)點(diǎn)內(nèi)的代碼拷貝一份把節(jié)點(diǎn)名改為<file name="home.dwt">這時(shí)你再來(lái)重復(fù)上次的操作點(diǎn)擊旁邊的確定,就不會(huì)報(bào)錯(cuò)了。

接下來(lái)我們制作.lbi庫(kù)文件
首先我們?cè)赲themes\default\library\目錄下新建一個(gè)home.lbi文件 里面輸入"這是我自的lbi文件"然后在\admin\includes\lib_template.php文件里面,你剛才新加的'home' => array(home數(shù)組里面 添加你的home.lbi 既在這個(gè)數(shù)組末尾加'/library/home.lbi' => 0 同樣像修改模板一樣在\languages\zh_cn\admin\template.php 里面加入一行 $_LANG['template_libs']['home'] = 'Myhome庫(kù)文件'; 代碼 這時(shí)你到后臺(tái) 模板管理->庫(kù)項(xiàng)目管理 你就會(huì)發(fā)現(xiàn)剛剛你加的庫(kù)文件出來(lái)了。


里面代碼可以自己修改

這時(shí)候你再到 模板管理->設(shè)置模板->選擇Myhome模板 確定后,下面可以發(fā)現(xiàn)你要編輯的lbi出來(lái)了,

默認(rèn)是非可編輯區(qū)庫(kù)文件如果你要變?yōu)榭蛇x擇項(xiàng)那么你可以到\themes\default\libs.xml文件里找到剛才你加的   <file name="home.dwt"><region name="左邊區(qū)域">里面加上<lib>home</lib>你再回來(lái)看就可以了。記得要把后面對(duì)應(yīng)的顯示復(fù)選框勾選上,否則你保存不了你的選擇。

這時(shí)你再來(lái)訪問(wèn)http://localhost/ecshop/home.php 你會(huì)發(fā)現(xiàn) "這是我自的lbi文件" 文字出來(lái)了。

另外需要補(bǔ)充一下的

遵循如下3步驟
     1 在library 里面新建 lbi 文件,比如 phpsir.lbi , 請(qǐng)?jiān)O(shè)置 777,到后臺(tái)庫(kù)項(xiàng)目里面就能看到和可以編輯 phpsir.lbi
     2 修改 admin/includes/lib_template.php 里面的 $page_libs 變量
     3 在 libs.xml 里面找對(duì)應(yīng)模板dwt文件,里面寫(xiě)入 <lib>phpsir</lib>

到后臺(tái)模板設(shè)置,就可以調(diào)整此塊內(nèi)容居于左右位置了

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章