[edit] xt:Commerce 與 Smarty
Smarty 是以 PHP 語言開發的 編譯式 樣版引擎,它目前也是 PHP 界使用率最高的樣版引擎。
樣版引擎可以將「網頁美編」與「應用程式」作分離,簡單的說就是讓原本交雜著網頁編排、圖片及程式碼的PHP程式,使其分離為不含複雜程式的純HTML網頁及純粹的PHP程式,讓美編人員可以更寫意的發揮創意,同時也讓程式設計人員不用再傷腦筋,該如何將天馬行空的創意加入程式裡。
以下是 Smarty 官方所提到的功能特色:
- 它非常的快速
- 它可以讓 PHP解析器 有效率的處理複雜的工作
- 系統資源不會因為樣版解析的作業而重複虛擲,它只要編譯一次
- 它非常的聰明,在樣版檔案變更的同時即會重新編譯
- 你能夠自訂 函數 及 變數 ,因此可以使得 樣版語法 非常具有彈性
- 配置樣版的 標籤語法 ,你可以使用像 {}, {{}}, <!--{}-->, 等等符號作為區分判斷
- if / elseif / else / endif 等結構也可以交給 PHP 解析器,所以可以在樣版檔中簡易的使用 {if ...} 等描述
- 對於嵌套(巢狀)程式片段沒有限制
- 假設你要嵌入PHP程式碼在你的樣版檔內也是可以的,儘管這不大需要(不建議你這麼作),因為 Smarty 引擎很有彈性了
- 內建支援緩存(快取)
- 可任意的製作樣版源碼
- 可自訂緩存(快取)處理功能
- 支援插件(外掛)結構
我們總結的來說,它成功的改善及創造了:
- 可讓美編人員發揮最大的創意在網站的外觀設計上。
- 降低程式編寫複雜度,讓程式人員可以專心本務。
- 降低網站建置專案的溝通成本,這裡指的是程式人員與美編人員之間。
- 降低網站程式升級的成本及技術門檻。
- 網站可以隨時更換外觀樣版。
- 其它...
當然 xt:Commerce 核心採用了 Smarty 樣版引擎,這也正是本系統與其它購物車系統不同之處。
[edit] 基本架構及語法
- xt:Commerce 放置 Smarty 的路徑位置:
/includes/classes/Smarty_2.6.18
- xt:Commerce 應用 Smarty 的變數標籤是以 {} 並在名稱前加上$符號來定義
例如:{$info_message}
- 帶有參數的修飾函式,例:{$products_data.NAME|truncate:20:"...":true}
其函式意義為當商品名稱變數內容超過20個英文字元時,僅截取顯示前20個英文字元並在尾端加上...
- xt:Commerce 應用 Smarty 的常數標籤同樣是以 {} 並在名稱前後加上#符號來定義
例如:{#heading_login#}
{if $info_message!=''}
<p class="errormessage">{$info_message}</p>
{/if}
{if $empty=='false'}
<h2 class="boxcartheader">{#heading_cart#}</h2>
{else}
<p>{#text_empty_cart#}</p>
{/if}
{foreach name=foreach名稱 item=陣列元素名稱 from=$陣列變數}
...
{/foreach}
{foreach name=aussen item=products_data from=$products}
<p>{$products_data.QTY} x <ahref="{$products_data.LINK}">
{$products_data.NAME|truncate:20:"...":true}</a>
</p>
{/foreach}
|