1.{$var=...}php
這是{assign}函數的簡寫版,你能夠直接賦值給模版,也能夠爲數組元素賦值。html
<{$a = 10}><!--賦值語句--> <{$a}><!--輸出語句,輸出結果爲10-->
2.{appeng}前端
{append}用於在模板執行期間創建或追加模板變量數組。數組
3.{assign}session
{assign}用來在模板運行時爲模板變量賦值。app
4.{block}函數
{block}用來定義一個命名的模板繼承源區域。意思就是一個模板能夠繼承另一個模板。例如套用phpcms模板時,把頭部文件header和尾部文件footer單寫出來,每一個頁面引入這兩個頁面就能夠了。ui
5.{config_load}spa
{config_load}用來從配置文件中加載config變量(#variables#)到模版。 插件
6.{for}、{foreach}、{section}
{for}、{foreach}、{section}都是用來循環輸出的。其中{section}已經被淘汰了,基本上不用了。
下面用foreach遍歷出數組:
test.php
<?php session_start(); //引入配置文件 include("../init.inc.php");//init.inc.php裏面已經造smarty對象了。 $attr = array("hello","world","ni","hao");//寫一個數組 $smarty->assign("shuzu",$attr);//把數組注入smarty模板裏面 $smarty->display("test.html");//調用模板文件來顯示
test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標題文檔</title> </head> <body> <{foreach $shuzu as $v}><!--foreach循環遍歷數組--> <{$v}><br /><!--輸出數組裏面的內容--> <{/foreach}> </body> </html>
輸出結果:
循環中還存在下列目錄
(1)<{$v@index }>包含當前數組的下標,開始時爲0。
<body> <{foreach $shuzu as $v}><!--foreach循環遍歷數組--> <{$v@index }><{$v}><br /><!--輸出數組裏面的內容--> <{/foreach}> </body>
輸出結果:
(2){iteration}
iteration包含當前循環的迭代,老是以1開始,這點與index不一樣,index是從0開始的。每迭代一次值自動加1。
<body> <{foreach $shuzu as $v}><!--foreach循環遍歷數組--> <{$v@iteration}><{$v}><br /><!--輸出數組裏面的內容--> <{/foreach}> </body>
輸出結果:
(3){@first}
當{foreach}循環第一個時first爲真。這裏咱們演示當第一次迭表明格頭所在行。
<body> <{foreach $shuzu as $v}><!--foreach循環遍歷數組--> <{$v@first}><{$v}><br /><!--輸出數組裏面的內容--> <{/foreach}> </body>
輸出結果:若是輸出的是第一條數據,返回波爾型數據的真,即1.
@first能夠按照下面的方法使用
<body> <{foreach $shuzu as $v}><!--foreach循環遍歷數組--> <{if $v@first}><!--判斷是否是顯示的第一條數據--> <span style="color:red"><{$v}></span><br /><!--若是是第一條數據,就顯示爲紅色--> <{else}><!--若是不是第一條數據--> <{$v@first}><{$v}><br /><!--直接輸出數組裏面的內容--> <{/if}> <{/foreach}> </body>
輸出結果只有第一條數據顯示爲紅色。
(4){@last}
當{foreach}迭代到最後時last爲真。這裏咱們演示當迭代到最後時顯示一條橫線。用法和{@first}同樣。
(5){@show}
show屬性用在檢測{foreach}循環是否無數據顯示,show是個布爾值(true or false)。意思就是若是返回值是true,說明這個循環是有值的,若是返回值是flase,說明這個循環是沒有值的。
(6){@total}
total包含{foreach}循環的總數(整數),能夠用在{forach}裏面或後面。
<body> <{foreach $shuzu as $v}><!--foreach循環遍歷數組--> <{if $v@first}><!--判斷是否是顯示的第一條數據--> <span style="color:red"><{$v}></span><br /><!--若是是第一條數據,就顯示爲紅色--> <{else}><!--若是不是第一條數據--> <{$v@first}><{$v}><br /><!--直接輸出數組裏面的內容--> <{/if}> <{$v@total}> <{/foreach}> </body>
顯示結果:說明總共有4次循環。
7.{include}
{include}標籤用於在當前模板中包含其它模板。當前模板中的任何有效變量在被包含模板中一樣可用。
{include file='page_header.tpl'}
自定義函數
自定義函數均可以成爲插件
1.{html_select_date}
自定義函數{html_select_date}用於建立日期下拉列表,它能夠顯示任意年月日。下述列表中沒有說明的參數會在相應的年、月、日<select>標籤中以名/值的鍵值對形式顯示出來。
<body> <{html_select_date prefix='StartDate' start_year='-5' end_year='+1' display_days=false}> </body>
顯示結果:
2.{textformat}
{textformat}用於格式化文本。該函數主要清理空格和特殊字符,對段落按單詞邊界換行和行縮進等段落格式化處理。
用戶能夠明確設置參數,或使用預處理風格。目前只有惟一可用風格"email"。
下面是從文件目錄裏面找變量調節器
變量調節器文件統一放在了D:\wamp\www\project\libs\plugins裏面
1.modifiercompiler.upper.php文件是用來轉大寫的,下面是其代碼。
function smarty_modifiercompiler_upper($params)//變量調節器的名字,()裏面傳一個參數。 { if (Smarty::$_MBSTRING) {//處理數據 return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; } // no MBString fallback return 'strtoupper(' . $params[0] . ')';//返回處理完的數據 }
2.能夠根據默認的插件本身來寫插件,本身的插件目錄爲D:\wamp\www\project\plugins
下面建一個改變字符串顏色的調節器,文件名爲modifier.color.php,注意文件名的命名和調節器名字的寫法。
<?php function smarty_modifier_color($str)//modifier是變量調節器的名字,color是變量調節器名稱。()裏面必須有一個參數,這個參數是拿來改變顏色的變量 { $str = "<span style='color:red'>{$str}</span>";//給變量加上樣式 return $str;//將變量返回 }
在test.php頁面裏面寫一個變量,而且將處理完的變量注入到smarty模板裏面。
<?php session_start(); //引入配置文件 include("../init.inc.php");//init.inc.php裏面已經造smarty對象了。 $a = "hello";//要傳過去的變量 $smarty->assign("a",$a);//把變量注入smarty模板裏面 $smarty->display("test.html");//調用模板文件來顯示
前端頁面test.html顯示
<body> <{$a|color}><!--注意引入的寫法--> </body>
結果顯示爲
3.下面看D:\wamp\www\project\plugins裏面的function.shuchu.php文件
下面是文件的內容
<?php function smarty_function_shuchu($args)//$args是傳過來的變量 { for($i=0;$i<10;$i++)//循環輸出了10次aaaaaaaa { echo "aaaaaaaa<br>"; } }
若是沒有參數要傳,就不須要寫參數。
<body> <{shuchu}><!--直接輸出就能夠,沒有參數就不須要寫參數--> </body>