Smarty 是 PHP 編寫的模板引擎,核心目標:邏輯與表現分離。程序員專注業務邏輯,美工專注頁面設計,雙方互不干擾,團隊協作效率最大化。
| 優勢 | 說明 |
|---|---|
| 速度 | 編譯型,運行時轉為 PHP+HTML 混合代碼,二次訪問直接執行編譯產物 |
| 編譯機制 | 模板變更才重新編譯,無變更直接執行緩存 |
| 緩存技術 | 輸出 HTML 靜態化,caching=true 時直接服務靜態文件 |
| 插件系統 | 自定義修飾符、函數、塊函數、資源插件 |
| 模板邏輯 | 支持 {if}/{elseif}/{else}/{endif} 等控制結構 |
Libs/ 目錄文件複製至項目 comm/ 目錄默認擴展名 .tpl(可改為 .html),定界符默認 { }(建議改為 <{ }> 避免與 JS 衝突)。
index.tpl{* 註釋:Smarty 註釋不輸出到頁面 *}
{include file="header.tpl"}{* 頁面頭 *}
大家好,我叫{$name},歡迎閱讀我的 Smarty 學習材料。
{include file="foot.tpl"}{* 頁面尾 *}
{* *}:模板註釋,編譯時剔除{include file="xxx.tpl"}:模板包含,等價於內容內聯{$name}:模板變量,對應 PHP $smarty->assign('name', '李曉軍'){$title|upper|truncate:20:"..."}
{* 大寫 + 截取 20 字 + 省略號 *}
{if $user.logged}
歡迎回來,{$user.name}!
{elseif $user.registered}
請登錄
{else}
註冊體驗更多功能
{/if}
{section name=i loop=$articles}
<h3>{$articles[i].title}</h3>
<p>{$articles[i].summary|truncate:100}</p>
{/section}
掌握以上核心語法,即可開始高效的模板開發。