白山有实装饰材料公司

排名推廣
排名推廣
發(fā)布信息
發(fā)布信息
會(huì)員中心
會(huì)員中心
 
 
當(dāng)前位置: 首頁(yè) » 資訊 » 網(wǎng)絡(luò)知識(shí) » 正文

學(xué)習(xí)Smarty--PHP教程

放大字體  縮小字體 發(fā)布日期:2010-04-07  瀏覽次數(shù):238
核心提示:Smarty是一個(gè)php模板引擎,它分開了邏輯程序和外在的內(nèi)容,提供了一種易于管理的方法. Smarty要求web服務(wù)器運(yùn)行php4.0.6和以上
Smarty是一個(gè)php模板引擎,它分開了邏輯程序和外在的內(nèi)容,提供了一種易于管理的方法.

Smarty要求web服務(wù)器運(yùn)行php4.0.6和以上版本.

smarty安裝需要smarty庫(kù)文件??梢匀ス俜骄W(wǎng)站http://smarty.php.net下載。

網(wǎng)上講了很多安裝的教程,但是我都沒有成功,所以直接把整個(gè)目錄名改為smarty直接復(fù)制到了網(wǎng)站所在的目錄下,然后打開
http://網(wǎng)站路徑/smarty/demo/index.php,顯示正常,應(yīng)該算是安裝成功了。


基本語法

所有的smarty標(biāo)簽都被加上了定界符.在smarty里,所有定界符以外的內(nèi)容都是靜態(tài)的,當(dāng)smarty遇到了模板標(biāo)簽,將嘗試解釋他們,然后再以恰當(dāng)?shù)姆绞捷敵?
默認(rèn)情況下是 {和},但它們是可定制的.定制方法是:
$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';

1.注釋

模板注釋被*號(hào)包圍,例如 {* this is a comment *}
smarty注釋將不被輸出.它是模板內(nèi)在的注釋.

2.變量
模板變量以$開頭,可以包含數(shù)字,字母和下劃線。
config_file變量是例外要用#變量名#的方法引用

3.函數(shù)
smarty標(biāo)簽輸出一個(gè)變量或者調(diào)用某種函數(shù).
在定界符內(nèi)函數(shù)和其屬性將被處理和輸出.例如:
{funcname attr1="val" attr2="val"}.
funcname為函數(shù)的名稱比如:include等,attr1,attr2為屬性名,val為屬性相應(yīng)的值。

在模板里無論是內(nèi)建函數(shù)還是自定義函數(shù)都有相同的語法.
內(nèi)建函數(shù)將在smarty內(nèi)部工作,例如 {if}, {section} 和{strip}.他們不能被修改.
自定義函數(shù)通過插件機(jī)制起作用,它們是附加函數(shù),可以隨意修改,自行添加.
例如 {html_options} and {html_select_date}

4.屬性
靜態(tài)數(shù)值不需要加引號(hào),布爾值(真或假)也不需要引號(hào),可以是true,on,yes或者false,off,no. 但是字符串例外.變量同樣被用到了,它們也不能加引號(hào).

5.在字符串中插入變量
只能識(shí)別數(shù)字,字母,下劃線和[]的組合,如果為復(fù)雜的形式需要用``將變量隔起來。比如{func var="test $foo.bar test"} 中只能識(shí)別變量$foo,要識(shí)別$foo.bar,需要寫成{func var="test `$foo.bar` test"}的格式。

6.一些保留字的顯示方法
在模板中如果要將smarty的一些保留字作為語言的內(nèi)容顯示出來,比如顯示分隔符,默認(rèn)為{}的方法是: {ldelim},{rdelim} 或者{$smarty.ldelim},{$smarty.rdelim} 或者可以把{}放在{literal} .. {/literal} 中間輸出。

smarty的保留變量

{$smarty}保留變量可以被用于訪問一些特殊的模板變量.
以下是全部.

頁(yè)面請(qǐng)求變量
以下是訪問頁(yè)面請(qǐng)求變量諸如get,post,cookies,server,enviroment和session變量的例子. 例如{$smarty.server.SERVER_NAME}取得服務(wù)器變量,{$smarty.env.PATH}取得系統(tǒng)環(huán)境變量path, {$smarty.request.username}取得get/post/cookies/server/env的復(fù)合變量。

{$smarty.now}變量用于訪問當(dāng)前時(shí)間戳.
可以用 date_format調(diào)節(jié)器格式化輸出. 例如{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}

{$smarty.const}
你可以直接訪問PHP常量. 例如{$smarty.const._MY_CONST_VAL}

{$smarty.capture}
可以通過 {capture}..{/capture}結(jié)構(gòu) 截取的輸出可以使用{$smarty} 變量訪問.

{$smarty.config}
{$smarty}變量 可以訪問已經(jīng)加載的config變量.
例如 {$smarty.config.foo}就可以表示 {#foo#}.

{$smarty.section}, {$smarty.foreach}
{$smarty} 變量可以訪問'section'和'foreach'循環(huán)的屬性.

{$smarty.template}
顯示當(dāng)前被處理的模板的名字.

{$smarty.version}
顯示smarty模板的版本

{$smarty.ldelim}
顯示左分隔符

{$smarty.rdelim}
顯示右分隔符

變量調(diào)節(jié)器
變量調(diào)節(jié)器用于變量,自定義函數(shù)和字符串.
可以使用'|'符號(hào)和調(diào)節(jié)器名稱應(yīng)用調(diào)節(jié)器.
變量調(diào)節(jié)器由賦予的參數(shù)值決定其行為.
參數(shù)由':'符號(hào)分開.
如果你用變量調(diào)節(jié)器調(diào)節(jié)數(shù)組變量,結(jié)果是數(shù)組的每個(gè)值都被調(diào)節(jié).如果你想要調(diào)節(jié)器調(diào)節(jié)整個(gè)數(shù)組,你必須在調(diào)節(jié)器名字前加上@符號(hào).
例如: {$articleTitle|@count}(這將會(huì)在輸出 $articleTitle 數(shù)組里的數(shù)目)

capitalize
將變量里的所有單詞首字大寫. 參數(shù)值boolean型決定帶數(shù)字的詞是否首字大寫。默認(rèn)不大寫

count_characters
計(jì)算變量值里的字符數(shù).參數(shù)值boolean型決定是否計(jì)算空格數(shù)。默認(rèn)不計(jì)算空格

cat
將cat里的參數(shù)值連接到給定的變量后面.默認(rèn)為空。

count_paragraphs
計(jì)算變量里的段落數(shù)量

count_sentences
計(jì)算變量里句子的數(shù)量

count_words
計(jì)算變量里的詞數(shù)

date_format
日期格式

第一個(gè)參數(shù)控制日期格式.
如果傳給date_format的數(shù)據(jù)是空的,將使用第二個(gè)參數(shù)作為默認(rèn)時(shí)間

%a - 星期幾的簡(jiǎn)寫

%A - 星期幾的全寫

%b - 月份的簡(jiǎn)寫

%B - 月份的全寫

%c - 日期時(shí)間06/12/05 11:15:10

%C - 世紀(jì)時(shí)間

%d - 一個(gè)月的第幾號(hào)(從 01 到 31)

%D - 同 %m/%d/%y

%e - 一個(gè)月的第幾號(hào),號(hào)為單數(shù)則前面加一空格 (從 1 到 31)

%g - 世紀(jì)

%G - 世紀(jì) [0000,9999]

%h - 同%b

%H - 24小時(shí)形式的小時(shí)(從00到23)

%I - 12小時(shí)形式的小時(shí)(從01到 12)

%j - 一年中的第幾天(從 001 到 366)

%k - 24小時(shí)形式的小時(shí),單數(shù)字前面加空格. (從 0 到 23)

%l - 12小時(shí)形式的小時(shí),單數(shù)字前面加空格.(range 1 to 12)

%m - 月份 (range 01 to 12)

%M - 分

%n - 換行符

%p - 顯示早上還是下午`am' 或 `pm'

%r - a.m. 或 p.m.形式的時(shí)間

%R - 24小時(shí)形式的時(shí)間

%S - 秒

%t - tab符號(hào)

%T - 同%H:%M:%S

%u - 用 [1,7],表示星期幾

%U - 計(jì)算是該年的第幾個(gè)星期,從該年的第一個(gè)星期天開始計(jì)算

%V - 計(jì)算是該年的第幾個(gè)星期, 從 01 到 53, 第一個(gè)星期必須至少有4天在這一年, 星期天作為這個(gè)星期的第一天

%w - 用數(shù)字的形式表示是星期的第幾天, 星期天 為 0

%W - 用數(shù)字的形式是該年的第幾個(gè)星期,從該年的第一個(gè)星期一開始計(jì)算

%x - 顯示日期:月/日/年

%X - 顯示時(shí)間:小時(shí):分鐘:秒

%y - 不包括世紀(jì)的年份

%Y - 包括世紀(jì)的年份

%Z - 時(shí)區(qū)

%% - 輸出%

其中有些有時(shí)不能正常輸出。

default
默認(rèn)
為空變量設(shè)置一個(gè)默認(rèn)值.
當(dāng)變量為空或者未分配的時(shí)候,將由給定的默認(rèn)值替代輸出.

escape
轉(zhuǎn)碼
參數(shù)值為html,htmlall,url,quotes,hex,hexentity,javascript。默認(rèn)是html轉(zhuǎn)碼

indent
縮進(jìn)
在每行縮進(jìn)字符串,第一個(gè)參數(shù)指定縮進(jìn)多少個(gè)字符,默認(rèn)是4個(gè)字符.第二個(gè)參數(shù),指定縮進(jìn)用什么字符代替。

lower
小寫
This is used to lowercase a variable.
將變量字符串小寫

nl2br
換行符替換成<br />

regex_replace
正則替換
尋找和替換正則表達(dá)式.必須有兩個(gè)參數(shù),參數(shù)1是替換正則表達(dá)式. 參數(shù)2使用什么文本字串來替換

replace
替換
簡(jiǎn)單的搜索和替換字符串必須有兩個(gè)參數(shù),參數(shù)1是將被替換的字符串. 參數(shù)2是用來替換的文本

spacify
spacify是在字符串的每個(gè)字符之間插入空格或者其他的字符串. 參數(shù)表示將在兩個(gè)字符之間插入的字符串,默認(rèn)為一個(gè)空格。

string_format 字符串格式化
是一種格式化浮點(diǎn)數(shù)的方法.例如十進(jìn)制數(shù).使用sprintf語法格式化。參數(shù)是必須的,規(guī)定使用的格式化方式。%d表示顯示整數(shù),%.2f表示截取兩個(gè)浮點(diǎn)數(shù)。

strip 去除(多余空格)
替換所有重復(fù)的空格,換行和tab為單個(gè)或者指定的字符串. 如果有參數(shù)則是指定的字符串。

strip_tags 去除所有html標(biāo)簽

truncate 截取
參數(shù)1,規(guī)定截取的字符數(shù).默認(rèn)是80個(gè).
第二個(gè)參數(shù)指定在截取的那段字符串后加上什么字符.默認(rèn)為...
第三個(gè)參數(shù)決定是否精確截取,默認(rèn)情況下為false,則smarty不會(huì)分割單詞。

upper 將變量改為大寫

wordwrap 行寬約束
第一個(gè)參數(shù)指定段落的寬度(也就是多少個(gè)字符一行,超過這個(gè)字符數(shù)換行).默認(rèn)80.
第二個(gè)參數(shù)指定在約束點(diǎn)使用什么字符(默認(rèn)是換行符\n).
第三個(gè)參數(shù)決定是否精確截取字符,默認(rèn)情況下是不精確截取,就是截取時(shí)不能分開單詞。

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

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

 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 關(guān)閉窗口 ]

 
0條 [查看全部]  相關(guān)評(píng)論

 
推薦圖文
推薦資訊
點(diǎn)擊排行
 
網(wǎng)站首頁(yè) | 招賢納士 | 關(guān)于我們 | 聯(lián)系方式 | 使用協(xié)議 | 版權(quán)隱私 | 網(wǎng)站地圖 | 排名推廣 | 廣告服務(wù) | 網(wǎng)站留言 | RSS訂閱 | 粵ICP備10022894號(hào)-3