網上的資源感受仍是有些用,能夠看看,幫助理解,
ECshop模板機制整理
原文:http://blog.sina.com.cn/s/blog_6900af430100nkn8.html php
1、模板引擎:html
ECshop給個人第一印象是用的smarty模板引擎,但是很快就發現有些不同,使用smarty模板引擎的系統一般會至少會包括smarty的核心文件:smarty.class.php、smarty_Compiler.php、config_File.class.php和debug.tpl,而在ECshop中並沒用發現smarty的核心類。仍是經過程序尋找答案吧,在前臺或者後臺的公用文件init.php中$smarty對象的初始化中,能夠看到加載的模板引擎文件是cls_template.php,原來ECshop團隊對smarty的核心部分作了整理及修改,這個引擎相對更加精簡,可是使用的時候可能須要注意,不是全部的smarty語法均可以在ECshop中使用,要使用還需修改模板引擎。框架
2、數據處理:網站
ECshop根目錄下及admin目錄下的文件是對應前臺、後臺頁面的數據處理頁,在這些文件中對頁面所要展現的內容進行處理,以後經過smarty的assign()方法註冊變量,最後經過display()方法加載相應的模板文件。但這裏咱們須要注意ECshop單獨封裝的幾個方法,用於處理模板的公共內容及頁面中某些動態內容的加載。如lib_main.php中的assign_template()會設置咱們的網店的公共信息及網站設置;assign_dynamic()方法則是設置該頁面中的動態加載內容。當頁面所需的變量設置完成後,進入smarty的display()方法。spa
3、解析模板debug
首先,在ECshop中有.dwt和.lbi兩種格式的模板文件,那麼這兩種文件之間是什麼關係呢?能夠這樣理解.dwt文件是針對前臺每一個顯示頁面的模板「框架」,而.lbi模板中則是對頁面中公共「內容」的整理,每一個.lbi文件都是頁面中的一個模塊。兩者是怎樣關聯到一塊兒的呢?在模板文件夾中有一個libs.xml文件,這裏則是具體配置每一個模板「框架」中能夠顯示哪些「內容」(具體內容以後談及模板管理會細說)。設計
下面查看解析模板的過程,在.dwt文件中根據框架的設計會劃分出幾個「可編輯區域」,.lbi模板正是加載到「可編輯區域」中進行輸出的。那麼咱們須要注意的是.dwt模板中的幾對標籤:xml
①<!-- TemplateBeginEditable name="右邊主區域" --><!-- TemplateEndEditable -->這對標籤就是「可編輯區域」標籤,在這對標籤之間輸出的內容是能夠經過模板管理進行設置的。主要是選擇輸出不一樣的.lbi文件。htm
②<!-- #BeginLibraryItem "/library/page_header.lbi" --><!-- #EndLibraryItem -->這對標籤則是對相應的page_header.lbi文件的加載及輸出。這個頭部的模板每一個頁面都須要加載,若是咱們想更改模板中的頭部內容,只要修改page_header.lbi便可,大大提升了效率。對象
模板文件加載完成以後,便可經過smarty引擎解析smarty標籤,完成模板的輸出。