smarty內(nèi)置函數(shù)是我們在學(xué)習(xí)smarty的過程中一定會(huì)接觸到的知識點(diǎn),我給大家總結(jié)了幾個(gè),可能有些不是很完善,但是也能夠幫助大家理清思路。
1、{append} 追加
2、{assign} 賦值
3、{block} 塊
4、{call} 調(diào)用
5、{capture}捕獲
6、{config_load}用來從配置文件中加載config變量(#variables#)到模版。
7、{extends} 繼承
{extends}標(biāo)簽用在模板繼承中子模版對父模板的繼承。具體的細(xì)節(jié)參考模板繼承一節(jié)。
{extends}標(biāo)簽用在模版中的第一行;
如果子模板用{extends}標(biāo)簽繼承父模板,那么它只能包含{block}標(biāo)簽(內(nèi)容),其它任何模板內(nèi)容都將忽略;
使用此語法為模板資源繼承$template_dir目錄外的文件。
8、{foreach},{foreachelse}遍歷
{foreach}用來遍歷數(shù)據(jù)數(shù)組,{foreach}與{section}循環(huán)相比更簡單、語法更干凈,也可以用來遍歷關(guān)聯(lián)數(shù)組。
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
{foreach}循環(huán)可以嵌套;
數(shù)組變量通常是(另)一個(gè)數(shù)組的值,用來指導(dǎo)循環(huán)的次數(shù),你可以為循環(huán)傳遞一個(gè)整數(shù);
當(dāng)數(shù)組變量無值時(shí)執(zhí)行{foreachelse};
{foreach}的屬性是@index、@iteration、@first、@last、@show、@total;
可以用循環(huán)項(xiàng)目中的當(dāng)前鍵({$item@key})代替鍵值變量(參見下例)。
9、{function} 函數(shù)
{function}用來在模板中創(chuàng)建函數(shù),可以像調(diào)用插件函數(shù)一樣調(diào)用它們。
取代在插件中寫表象內(nèi)容的函數(shù),讓模板保持一致性通常是個(gè)更好的選擇。它也簡化了對數(shù)據(jù)的遍歷,例如深度的嵌套菜單。
另外你可以在模板中直接使用{funcname...}函數(shù)。
{function}標(biāo)簽必須包含模板函數(shù)名的name屬性,該name標(biāo)簽名必須能夠調(diào)用模板函數(shù);
默認(rèn)變量值應(yīng)能作為屬性傳遞到模板函數(shù),當(dāng)模板函數(shù)被調(diào)用的時(shí)候,默認(rèn)值應(yīng)能被復(fù)寫;
在模板函數(shù)內(nèi)部應(yīng)能使用被調(diào)用模板的所有變量值,在模板函數(shù)中更改或新建變量的值必須具局部作用域,而且在執(zhí)行模板函數(shù)后這些變量值在被調(diào)用模板內(nèi)部應(yīng)不可見。
10、{if}{elseif}{else} 條件
每一個(gè){if}必須與一個(gè){/if}成對出現(xiàn),允許使用{else}和{elseif},所有php條件和函數(shù)在這里同樣適用,諸如||、or、&&、and、is_array()等等。
11、{include} 包含
12、{insert}插入
{insert}標(biāo)簽類似于{include}標(biāo)簽,不同之處是即使打開caching,{insert}所包含的內(nèi)容也不會(huì)被緩存,每次調(diào)用模板都會(huì)執(zhí)行{insert}。
13、{section},{sectionelse}遍歷數(shù)組