smarty內建函數

內建函數
內建函數不能擅自修改。
capture
capture函數的作用是收集模板輸出的數據到一 個變量裏,而不是把它們輸出到頁面.例如任何在 {capture name=”foo”}和{/capture}之間的數據都被收到了由函數的名稱屬性指定的變量{$foo}裏,或者 {$smarty.capture.foo}裏。如果函數沒有名字屬性,將使用”default”.每個{capture}都必須對應 {/capture},也不能嵌套使用capture函數。

config_load
引用配置文件
file是必須的,說明要包含進來的配置文件名稱,section說明要加載的部分的名稱,scope被處理的變量的作用域.必須是local,parent或者global.
local的意思是變量將在本模板裏被加載.
parent的意思是變量將在本模板和上級模板被加載.
global的意思是變量將應用到所有的模板.默認爲local。變量是否在上級模板可視,默認爲no。如果scope屬性已經有了,這個值將被忽略.

foreach,foreachelse
foreach循環是選擇性的section循環.用於遍歷關聯數組.foreach的語法比section簡單的多,但是作爲一個折中它只能用於簡單數組.
foreach 必須的參數是from和item. from變量表示需要循環的數組的名稱,item表示當前元素的變量名,key表示當前關鍵字的變量名,name表示訪問foreach屬性的 foreach循環名。循環可以互相嵌套,被嵌套的循環之間的名字必須是獨立的.foreachelse 在from變量沒有值的時候被執行

include
用來引用其他的模板。
file屬性是必須的用來表示所引用模板的名字,assign表示include文件將要分配的輸出的變量。你可以自行用屬性名=”屬性值”的方式定義任意個局部變量。

include_php
用來在模板中引入php腳本。file是必須的用來表示php腳本的路徑,once確定如果在模板中引用了php腳本多次,是否只裝載一次。默認爲true。

insert
用 來包含php腳本中的函數,name是必須的,表示所插入的腳本的名稱,注意如果名稱是name,則包含的函數則是insert_name(),所以所有 要插入的函數要有前綴insert_ 。如果用了assign屬性,則insert的輸出將會分配給模板變量而不會顯示。script表示要引用的腳本路徑。這個程序產生的內容將不會被緩存, 在每次調用該頁時重新執行,適用於廣告,投票,查詢結果等互動的地方。

smarty中往insert中傳參數的方法:
smarty裏insert方法傳參數的方法介紹如下:
smarty模板:
{insert name="getPara" p1="php" p2="zixue"}

php代碼:
function insert_getPara($arr)
{
return $arr["p1"]." " .$arr["p2"];
}

將輸出:php zixue

用insert方法的時候,代碼裏的函數名前面一定要有"insert_" 否則會出錯,當然除了你改了模板規則.
其中p1,p2,是要傳的兩個參數名,可以有多個,任意的,只要裏外對應就行.$arr表示數組也是隨便寫的.

if,elseif,else
if語句和和 條件同php差不多,但每個詞之間必須用空格分割開。也有一些新的條件語句,列舉如下:eq相等,ne、neq不相等,gt大於,lt小於,gte、ge 大於等於,lte、le 小於等於,not非,mod求模。is [not] div by是否能被某數整除,is [not]even是否爲偶數,$a is [not] even by $b即($a / $b) % 2 == 0,is [not] odd是否爲奇,$a is not odd by $b即($a / $b) % 2 != 0

php
php標記可以讓模板中能直接使用php語言。

section,sectionelse
section 用來循環顯示數組的數據,name和loop是必須的參數。name表示嵌套名. section 可以嵌套使用,但是名字必須各不相同。loop表示循環的次數. sectionelse在loop參數爲空的輸出。start用來規定循環開始的指針,如果值爲負則從數組尾部計算開始的指針,默認爲0.step表示循 環的步數,爲負則反向循環,默認爲1.max設定循環的最大步數.show決定是否顯示section.
section也有自己的變量處理section屬性,用{$smarty.section.sectionname.varname} 來顯示.



發佈了38 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章