Smarty 內建函數是模板語言的核心組件,不可被自定義函數覆寫。本文詳細說明 7 大核心內建函數的屬性、語法與實戰範例。
將區塊輸出存入變數而非直接顯示,搭配 {$smarty.capture.name} 取得。
{capture name="foo"} 這裡的內容不會直接顯示 {/capture}
{$smarty.capture.foo} <!-- 輸出捕獲內容 -->
| 屬性 | 類型 | 必要 | 預設 | 說明 |
|---|---|---|---|---|
| name | string | 否 | default | 捕獲區域名稱 |
| assign | string | 否 | n/a | 指定指派給的變數名 |
{config_load file="config.conf" section="database" scope="global"}
屬性:file(必要)、section、scope(local/parent/global)、global(布林)。
{include file="header.tpl"}
{include file="footer.tpl" assign="footer_html"}
屬性:file(必要)、assign、任意額外變數傳遞給子模板。
支援豐富的條件修飾詞:
| 修飾詞 | 對應 |
|---|---|
| eq, == | 等於 |
| ne, !=, neq | 不等於 |
| gt, > | 大於 |
| lt, < | 小於 |
| gte, ge, >= | 大於等於 |
| lte, le, <= | 小於等於 |
| is even / odd | 奇偶判斷 |
| not | 邏輯非 |
| mod | 取模 |
| div by | 整除 |
| &&, ||, () | 邏輯與、或、分組 |
輸出 { 與 },避免被模板引擎解析。
{ldelim}funcname{rdelim} 是 Smarty 函數。 <!-- 輸出:{funcname} 是 Smarty 函數。 -->
區塊內容視為純文字,常用於內嵌 JavaScript。
{literal}
{/literal}
不建議在生產環境使用,破壞模板與邏輯分離原則。
{php} echo date("Y-m-d H:i:s"); {/php}
{strip}
最重要的迴圈函數 foreach/foreachelse 及 section/sectionelse 請參考專題文章。