PHP內建方法
{$var=...}
該方法是{assign}的簡寫入模式,用來直接在模版中定義一個變數。
屬性:
scope:parent\root\global
支援nocache
{append}
在調用模版的過程中向模版變數中建立一個陣列變數,或者向一個已知的陣列變數中追加元素,支援nocache標籤
屬性:
var變數名
value變數值
index插入的變數在數組中的下標索引,如果沒指定該值,則預設添加在數組的最後
scope存取權限
支援nocache標籤
{assign}
作用與{$var=...}相同
屬性
var定義的變數名
value定義的變數值
scope存取權限
支援nocache標籤
{call}
用來調用在模版中使用{function}標籤定義的方法。該方法必須含有name屬性,同時也可以將變數以屬性的方式傳遞給調用的方法中
屬性:
name要調用的模版方法命
assign將調用模版方法後返回來的值儲存到assign定義的變數中,而不是直接輸出傳回值
[var...]向模版方法中傳遞變數以供方法使用
支援nocache標籤
{capture}
用來收集出現在{capture name='foo'}與{/capture}塊之間的內容,並將其內儲存到名字為foo的capture塊標籤中,如果未指明name屬性,預設default。可以使用$smarty.capture.foo來訪問儲存的內容。該標籤不可被嵌套使用。
屬性:
namecapture塊標籤名
assign若指定該屬性,將捕獲的內容賦值到給定變數中
append用來將捕獲的內容追加到指定的數組中去
支援nocache標籤
{config_load}
用來擷取設定檔中的變數資訊
屬性:
file要讀取的設定檔名
section讀取設定檔中指定片段
scope許可權分配
{debug}
彈出調試控制頁面。該設定不會受到在php指令碼中對debug設定的影響。
{extends}
該標籤用在子模版中,用來指明所要繼承的父模版。
該標籤必須在子模版的第一行中出現
如果子模板用{extends}標籤繼承父模板,那麼它只能包含{block}標籤(內容),其它任何模板內容都將忽略;
使用此文法為模板資源繼承$template_dir目錄外的檔案。
屬性:
file要被繼承的模版名
{for}
{for}{forelse}標籤用來進行簡單的迴圈,它支援下面兩種格式的用法:
{for $var=$start to $end} 步長為1
{for $var=$start to $end step $step} 指定步長
但迴圈為空白時執行{forelse}
屬性:
max限制最大的迴圈次數
支援nocache標籤
{foreach},{foreachelse}
用來對一個數組資料進行簡單的迴圈,格式有:
{foreach $array as $val}
{foreach $array as $key=>$val}
當迴圈的內容為空白時執行{foreachelse}語句
{foreach}具有下列屬性:@index, @iteration, @first, @last, @show, @total。
支援{break}和{continue}
{function}
用於在模版內部建立模版函數,調用方法與外掛程式調用類似。
注意:模版函數是全域的,如果要調用外部模版的模版函數,必須使用{call}標籤,調用自己模版的模版函數則可以直接使用{functionname}形式來調用。
{if},{elseif},{else}
與php中類似,只是必須用{/if}進行結束標誌。所有PHP條件函數和方法都可使用(is_array())。
{include}
用於將其它模版引入到當前模版中,當前模板中的任何有效變數在被包含模板中同樣可用。
必須指定file屬性,該屬性指明模板資源的位置。
設定assign屬性選項可以指定{include}的輸出貯存分配給哪個模板變數,而不顯示內容,類似於{assign}。
變數可以作為屬性參數傳遞給被包含模板,任何明確傳遞給被包含模板的變數只在被包含檔案的範圍中有效。如果傳遞的屬性變數在當前模板中有同名變數,那麼傳遞的屬性變數將覆蓋當前模板變數。
被包含模板內部可以使用主模板的所有變數,但在被包含模板裡面改變或建立的變數只有本地範圍,使用{include}語句後這些變數在主模板內部將不可見;有兩種方法可以改變這種預設行為(變數範圍):在{include}語句中使用scope屬性對被包含模板的所有賦值變數有效,或在{assign}語句中使用scope屬性改變個別變數範圍。後一特性在從被包含模板傳回值給主模板時非常有用。
包含$template_dir檔案夾之外的模板請使用模板資源文法。
支援nocache、caching、cache_lifetime標籤
inline標籤:設定該項,將會被包含檔案編譯到包含檔案中(很有用)
{include_php} {insert}不贊成使用
{ldelim},{rdelim}
輸出smarty的左右標籤。
{nocache}
必須與{/nocache}成對出現。用來禁用模版中的某個片段進行緩衝。即出現在該塊中的內容不會被緩衝
{section},{sectionelse}
對連續的數值下標索引的數組進行迴圈。無法對值索引數組進行迴圈,建議使用{foreach}
{setfilter}
必須與{/setfilter}標籤成對出現。出現在該塊標籤內的所有變數都會進行過濾
文法:{setfilter filter1|filter2|filter3....}...{/setfilter}
該標籤可以被嵌套使用,內嵌的標籤過濾器會覆蓋上層的過濾器
{while}
與PHP的while語句類似。所有PHP條件函數和方法都可使用(is_array())。
PHP技術交流群 170855791