模板制作比較核心的其實就是變量的使用,因為這些就是數據的根本,想從數據庫里獲取數據並顯示在界面就必須使用smarty來展示,下面是關於smarty的介紹和使用。
Smarty是一個php模板引擎,它分開了邏輯程序和外在的內容,提供了一種易於管理的方法.
Smarty要求web服務器運行php4.0.6和以上版本.
smarty安裝需要smarty庫文件。可以去官方網站
http://smarty.php.net
下載。
網上講了很多安裝的教程,但是我都沒有成功,所以直接把整個目錄名改為smarty直接復制到了網站所在的目錄下,然后打開
http://網站路徑/smarty/demo/index.php,顯示正常,應該算是安裝成功了。
基本語法
所有的smarty標簽都被加上了定界符.在smarty里,所有定界符以外的內容都是靜態的,當smarty遇到了模板標簽,將嘗試解釋他們,然后再以恰當的方式輸出.
默認情況下是 {和},但它們是可定制的.定制方法是:
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
1.注釋
模板注釋被*號包圍,例如 {* this is a comment *}
smarty注釋將不被輸出.它是模板內在的注釋.
2.變量
模板變量以$開頭,可以包含數字,字母和下划線。
config_file變量是例外要用#變量名#的方法引用
3.函數
smarty標簽輸出一個變量或者調用某種函數.
在定界符內函數和其屬性將被處理和輸出.例如:
{funcname attr1="val" attr2="val"}.
funcname為函數的名稱比如:include等,attr1,attr2為屬性名,val為屬性相應的值。
在模板里無論是內建函數還是自定義函數都有相同的語法.
內建函數將在smarty內部工作,例如 {if}, {section} 和{strip}.他們不能被修改.
自定義函數通過插件機制起作用,它們是附加函數,可以隨意修改,自行添加.
例如 {html_options} and {html_select_date}
4.屬性
靜態數值不需要加引號,布爾值(真或假)也不需要引號,可以是true,on,yes或者false,off,no. 但是字符串例外.變量同樣被用到了,它們也不能加引號.
5.在字符串中插入變量
只 能識別數字,字母,下划線和[]的組合,如果為復雜的形式需要用``將變量隔起來。比如{func var="test $foo.bar test"} 中只能識別變量$foo,要識別$foo.bar,需要寫成{func var="test `$foo.bar` test"}的格式。
6.一些保留字的顯示方法
在 模板中如果要將smarty的一些保留字作為語言的內容顯示出來,比如顯示分隔符,默認為{}的方法是: {ldelim},{rdelim} 或者{$smarty.ldelim},{$smarty.rdelim} 或者可以把{}放在{literal} .. {/literal} 中間輸出。
smarty的保留變量
{$smarty}保留變量可以被用於訪問一些特殊的模板變量.
以下是全部.
頁面請求變量
以 下是訪問頁面請求變量諸如get,post,cookies,server,enviroment和session變量的例子. 例如{$smarty.server.SERVER_NAME}取得服務器變量,{$smarty.env.PATH}取得系統環境變量path, {$smarty.request.username}取得get/post/cookies/server/env的復合變量。
{$smarty.now}變量用於訪問當前時間戳.
可以用 date_format調節器格式化輸出. 例如{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
{$smarty.const}
你可以直接訪問PHP常量. 例如{$smarty.const._MY_CONST_VAL}
{$smarty.capture}
可以通過 {capture}..{/capture}結構 截取的輸出可以使用{$smarty} 變量訪問.
{$smarty.config}
{$smarty}變量 可以訪問已經加載的config變量.
例如 {$smarty.config.foo}就可以表示 {#foo#}.
{$smarty.section}, {$smarty.foreach}
{$smarty} 變量可以訪問'section'和'foreach'循環的屬性.
{$smarty.template}
顯示當前被處理的模板的名字.
{$smarty.version}
顯示smarty模板的版本
{$smarty.ldelim}
顯示左分隔符
{$smarty.rdelim}
顯示右分隔符
變量調節器
變量調節器用於變量,自定義函數和字符串.
可以使用'|'符號和調節器名稱應用調節器.
變量調節器由賦予的參數值決定其行為.
參數由':'符號分開.
如果你用變量調節器調節數組變量,結果是數組的每個值都被調節.如果你想要調節器調節整個數組,你必須在調節器名字前加上@符號.
例如:
{$articleTitle|@count
}(這將會在輸出 $articleTitle 數組里的數目)
capitalize
將變量里的所有單詞首字大寫. 參數值boolean型決定帶數字的詞是否首字大寫。默認不大寫
count_characters
計算變量值里的字符數.參數值boolean型決定是否計算空格數。默認不計算空格
cat
將cat里的參數值連接到給定的變量后面.默認為空。
count_paragraphs
計算變量里的段落數量
count_sentences
計算變量里句子的數量
count_words
計算變量里的詞數
date_format
日期格式
第一個參數控制日期格式.
如果傳給date_format的數據是空的,將使用第二個參數作為默認時間
%a - 星期幾的簡寫
%A - 星期幾的全寫
%b - 月份的簡寫
%B - 月份的全寫
%c - 日期時間06/12/05 11:15:10
%C - 世紀時間
%d - 一個月的第幾號(從 01 到 31)
%D - 同 %m/%d/%y
%e - 一個月的第幾號,號為單數則前面加一空格 (從 1 到 31)
%g - 世紀
%G - 世紀 [0000,9999]
%h - 同%b
%H - 24小時形式的小時(從00到23)
%I - 12小時形式的小時(從01到 12)
%j - 一年中的第幾天(從 001 到 366)
%k - 24小時形式的小時,單數字前面加空格. (從 0 到 23)
%l - 12小時形式的小時,單數字前面加空格.(range 1 to 12)
%m - 月份 (range 01 to 12)
%M - 分
%n - 換行符
%p - 顯示早上還是下午`am' 或 `pm'
%r - a.m. 或 p.m.形式的時間
%R - 24小時形式的時間
%S - 秒
%t - tab符號
%T - 同%H:%M:%S
%u - 用 [1,7],表示星期幾
%U - 計算是該年的第幾個星期,從該年的第一個星期天開始計算
%V - 計算是該年的第幾個星期, 從 01 到 53, 第一個星期必須至少有4天在這一年, 星期天作為這個星期的第一天
%w - 用數字的形式表示是星期的第幾天, 星期天 為 0
%W - 用數字的形式是該年的第幾個星期,從該年的第一個星期一開始計算
%x - 顯示日期:月/日/年
%X - 顯示時間:小時:分鍾:秒
%y - 不包括世紀的年份
%Y - 包括世紀的年份
%Z - 時區
%% - 輸出%
其中有些有時不能正常輸出。
default
默認
為空變量設置一個默認值.
當變量為空或者未分配的時候,將由給定的默認值替代輸出.
escape
轉碼
參數值為html,htmlall,url,quotes,hex,hexentity,javascript。默認是html轉碼
indent
縮進
在每行縮進字符串,第一個參數指定縮進多少個字符,默認是4個字符.第二個參數,指定縮進用什么字符代替。
lower
小寫
This is used to lowercase a variable.
將變量字符串小寫
nl2br
換行符替換成<br />
regex_replace
正則替換
尋找和替換正則表達式.必須有兩個參數,參數1是替換正則表達式. 參數2使用什么文本字串來替換
replace
替換
簡單的搜索和替換字符串必須有兩個參數,參數1是將被替換的字符串. 參數2是用來替換的文本
spacify
spacify是在字符串的每個字符之間插入空格或者其他的字符串. 參數表示將在兩個字符之間插入的字符串,默認為一個空格。
string_format 字符串格式化
是一種格式化浮點數的方法.例如十進制數.使用sprintf語法格式化。參數是必須的,規定使用的格式化方式。%d表示顯示整數,%.2f表示截取兩個浮點數。
strip 去除(多余空格)
替換所有重復的空格,換行和tab為單個或者指定的字符串. 如果有參數則是指定的字符串。
strip_tags 去除所有html標簽
truncate 截取
參數1,規定截取的字符數.默認是80個.
第二個參數指定在截取的那段字符串后加上什么字符.默認為...
第三個參數決定是否精確截取,默認情況下為false,則smarty不會分割單詞。
upper 將變量改為大寫
wordwrap 行寬約束
第一個參數指定段落的寬度(也就是多少個字符一行,超過這個字符數換行).默認80.
第二個參數指定在約束點使用什么字符(默認是換行符\n).
第三個參數決定是否精確截取字符,默認情況下是不精確截取,就是截取時不能分開單詞。
內建函數
內建函數不能擅自修改。