$time1 = date("Y-m-d H:i:s", gmtime());
$time = date("Y-m-d H:i:s", time());
//gmtime獲取到的時間比當前時間少了8小時,在模板里顯示的時候使用{$goods_detail.description|date:complete"}
http://www.nowamagic.net/librarys/veda/detail/1482
在ECMall模板中,用"{"開頭,以"}"結尾就構成一個標簽單元,"{"緊接着的單詞就是標簽名。在標簽單元中單詞前含"$"(美元符)的為變量名。
資源引用
res標簽
-
功能:返回當前模板當前風格目錄的url路徑
-
實例:{res file=css/ecmall.css}這個標簽在模板編譯后將變成http://商城域名/themes/default/styles/default,注意末尾沒有"/",返回結果會隨后台設置的主題變化
lib標簽
-
功能:返回javascript庫的url路徑
-
實例:{lib file=ecmall.js}這個標簽在模板編譯后將變成http://商城域名/includes/libraries/javascript,注意末尾沒有"/",返回結果不會隨后台設置的主題變化
url標簽
-
功能:url解析器,可根據后台偽靜態狀態返回相應url等。
-
說明:如果一個鏈接的目標頁面需要偽靜態功能,請使用該url標簽,只有當后台開啟偽靜態並在.htaccess文件為目標頁面設置了偽靜態規則時url標簽才能解析為靜態url地址。
-
實例:{url app=goods&id=$goods_id}解析后如果偽靜態成功則返回"goods/19"
include標簽:include 標簽用於在當前模板中包含其它模板。當前模板中的變量在被包含的模板中可用。必須指定 file 屬性,該屬性指明模板資源的位置。實例:
模板變量
1. 模板保留變量
模板預置的一些系統變量,包括
-
$smarty.now 當前時刻對應的格林尼治時間戳,可以用{$smarty.now|date}顯示當前日期時間,關於date變量調節器請看下文講解。
-
$smarty.get $smarty.post $smarty.cookie $smarty.env $smarty.server $smarty.request $smarty.session同php 的$_GET、$_POST、$_COOKIE、$_ENV、$_SEVER、$_REQUEST、$_SESSION變量。非程序人員如果需要了解請參 考php相關手冊了解。
2. 自定義變量
從php賦值變量。例如在調用該模板的app程序文件中進行賦值
在themes/mall/default/index.html中顯示變量
在模板中賦值變量。assign標簽,例在themes/mall/default/index.html中賦值變量
3.模板上使用語言項
說明:為了滿足多語言需求,ECMall采用了語言包機制,除掛件外,在模板、js文件中均使用語言項代替直接顯示語言文字。
語言文件:語言文件位於商城根目錄下的languages目錄下,為當前語言建了一個目錄,如果您用的是sc-gbk版本,則會有sc-gbk目 錄,進去之后就能看到屬於前台控制器的全部語言文件了。除common.lang.php屬於所有app外,每一個語言文件都只屬於一個 app(ECMall中稱為控制器)。語言文件屬於某個控制器而不屬於某個模板,同一個模板如果被不同控制器調用將使用不同語言文件進行語言解析。
在默認控制器對應的語言文件default.lang.php添加語言項"test":
在index.html模板中顯示語言項"test"
模板中還支持數組形式語言項,在默認控制器對應的語言文件default.lang.php添加語言項"test_array"
在index.html模板中顯示語言項"test"
4. 變量調節器
* escape
功能:提供各種編碼功能。
參數:可選參數html、url、quotes、input、editor,缺省為html html:分別替換變量中的如下字符& < > "為其html實體代碼,用於按原樣輸出html源代碼。
-
url:如果該變量用於儲存url地址,需要進行url編碼
-
quotes:在單雙引號字符前添加反斜杠
-
input:給輸入框賦值時使用
-
editor:當顯示通過文本編輯器錄入的內容,需要用此參數
例如php賦值:
模板
輸出結果為
* nl2br
功能:將換行符替換成<br />
* default
功能:為變量設置一個默認值,當變量為空或者未分配的時候,將由默認值替代輸出
* truncate
功能:字符串截取。從字符串開始處截取某長度的字符。默認會在末尾追加省略號。
* strip_tags
功能:去除<和>標簽,包括在<和>之間的任何內容。
* price
功能:格式化價格。
輸出結果為:¥123,456.00
* date
功能:格式化本地時間和日期。
格式:{$var|date:format}
說明:變量$var必須是格林尼治標准時間,php中gmtime()和模板中$smarty.now得到的都是格林尼治標准時間,參數format可為simple、complete或自定義日期格式,缺省為simple。
輸出結果為:
* modifier
功能:調用php自定義函數。
格式:{$var|modifier:user_func}
流程控制標簽
1. 條件判斷(if,elseif,else)
模板中的 if 語句和 php 中的 if 語句一樣靈活易用,並增加了幾個特性以適宜模板引擎. if 必須於 /if 成對出現. 可以使用 else 和 elseif 子句. 可以使用以下條件修飾詞:eq、ne/neq、gt、lt、lte/le、gte/ge、mod、not、==、!=、>、<、& lt;=、>=、%、!使用這些修飾詞時必須和變量或常量用空格格開.
多個條件之間用 and、or、&&、|| 連接,實現簡單的邏輯運算
2. 數組遍歷(foreach,foreachelse)
foreach 用於處理簡單數組(數組中的元素的類型一致)。foreach 必須和 /foreach 成對使用,且必須指定 from 和 item 屬性。foreach 可以嵌套,但必須保證嵌套中的 foreach 名稱唯一。foreachelse 語句在 from 變量沒有值的時候被執行。
from 屬性:指定被循環的數組,數組長度決定了循環的次數。item屬性:單個循環項目的變量名,在循環內部使用。name 屬性為可選屬性,可以任意指定(字母、數字和下划線的組合)。
name 屬性如果指定,foreach循環體內會自動生成如下變量
-
$smarty.foreach.foreach_name.index表示本次循環索引,從0開始遞增的整數
-
$smarty.foreach.foreach_name.iteration表示本次的循環次數,從1開始遞增的整數
-
$smarty.foreach.foreach_name.first表示是否是第一次循環
-
$smarty.foreach.foreach_name.last表示是否是最后一次循環
-
$smarty.foreach.foreach_name.show表示是否有數據
-
$smarty.foreach.foreach_name.total表示循環總次數,也可在循環體外使用
輸出結果為:
模板代碼:
輸出結果為:
顯示標簽
* cycle
cycle 用於輪轉使用一組值。該特性使得在表格中交替輸出顏色或輪轉使用數組中的值變得很容易。
格式:{cycle values="val1,val2,val3..."}
輸出結果為:
* html_options
自定義函數 html_options 根據給定的數據創建選項組. 該函數可以指定哪些元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代。
模板代碼:
模板代碼:
實例1和實例2輸出結果均為:
* html_radios
自定義函數 html_radios 根據給定的數據創建單選按鈕組。該函數可以指定哪個元素被選定。要么必須指定 values 和 ouput 屬性,要么指定 options 替代。與html_options不同的是html_radios有一個checked屬性。
* html_checkbox
自定義函數 html_checkboxes 根據給定的數據創建復選按鈕組。該函數可以指定哪些元素被選定。 要么必須指定 values 和 ouput 屬性,要么指定 options 替代.。與html_options不同的是html_checkbox有一個checked屬性。
* sprintf
說明: 對變量進行格式化。
格式{sprintf lang=my_lang var1=my_var1 var2=my_var2 ...}
在語言文件添加語言項:
模板中顯示:
輸出結果為:
1頁面執行 0.160 秒, 查詢 3 次,在線 10 人