天天看點

ecshop的smarty基本文法

模闆制作比較核心的其實就是變量的使用,因為這些就是資料的根本,想從資料庫裡擷取資料并顯示在界面就必須使用smarty來展示,下面是關于smarty的介紹和使用。

Smarty是一個php模闆引擎,它分開了邏輯程式和外在的内容,提供了一種易于管理的方法.

Smarty要求web伺服器運作php4.0.6和以上版本.

網上講了很多安裝的教程,但是我都沒有成功,是以直接把整個目錄名改為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}

顯示右分隔符

變量調節器

變量調節器用于變量,自定義函數和字元串.

可以使用'|'符号和調節器名稱應用調節器.

變量調節器由賦予的參數值決定其行為.

參數由':'符号分開.

如果你用變量調節器調節數組變量,結果是數組的每個值都被調節.如果你想要調節器調節整個數組,你必須在調節器名字前加上@符号.

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).

第三個參數決定是否精确截取字元,預設情況下是不精确截取,就是截取時不能分開單詞。

内建函數

内建函數不能擅自修改。