ECMall2.x模板制作入门系列之2(模板标签/语法)
生活随笔
收集整理的這篇文章主要介紹了
ECMall2.x模板制作入门系列之2(模板标签/语法)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ECMall2.x模板制作入門系列之2(模板標(biāo)簽/語法)今天給大家?guī)硪粋€模板語法的教程。希望能為ECMall模板制作者提供一份參考資料。如有問題、建議和意見,歡迎提出。在ECMall模板中,用"{"開頭,以"}"結(jié)尾就構(gòu)成一個標(biāo)簽單元,"{"緊接著的單詞就是標(biāo)簽名。在標(biāo)簽單元中單詞前含"$"(美元符)的為變量名。一、資源引用res標(biāo)簽功能:返回當(dāng)前模板當(dāng)前風(fēng)格目錄的url路徑 實例:{res file=css/ecmall.css}這個標(biāo)簽在模板編譯后將變成http://商城域名/themes/default/styles/default,注意末尾沒有"/",返回結(jié)果會隨后臺設(shè)置的主題變化 lib標(biāo)簽 功能:返回javascript庫的url路徑 實例:{lib file=ecmall.js}這個標(biāo)簽在模板編譯后將變成http://商城域名/includes/libraries/javascript,注意末尾沒有"/",返回結(jié)果不會隨后臺設(shè)置的主題變化 url標(biāo)簽功能:url解析器,可根據(jù)后臺偽靜態(tài)狀態(tài)返回相應(yīng)url等。 說明:如果一個鏈接的目標(biāo)頁面需要偽靜態(tài)功能,請使用該url標(biāo)簽,只有當(dāng)后臺開啟偽靜態(tài)并在.htaccess文件為目標(biāo)頁面設(shè)置了偽靜態(tài)規(guī)則時url標(biāo)簽才能解析為靜態(tài)url地址。 實例:{url app=goods&id=$goods_id}解析后如果偽靜態(tài)成功則返回"goods/19"include標(biāo)簽 功能: Include 標(biāo)簽用于在當(dāng)前模板中包含其它模板. 當(dāng)前模板中的變量在被包含的模板中可用. 必須指定 file 屬性,該屬性指明模板資源的位置.實例:[tpl]{include file="header.html"} {* body of template goes here *} {include file="footer.html"}[/tpl]二、模板變量1.模板保留變量 模板預(yù)置的一些系統(tǒng)變量,包括$smarty.now 當(dāng)前時刻對應(yīng)的格林尼治時間戳,可以用{$smarty.now|date}顯示當(dāng)前日期時間,關(guān)于date變量調(diào)節(jié)器請看下文講解。$smarty.get $smarty.post $smarty.cookie $smarty.env $smarty.server$smarty.request $smarty.session同php的$_GET、$_POST、$_COOKIE、$_ENV、$_SEVER、$_REQUEST、$_SESSION變量。非程序人員如果需要了解請參考php相關(guān)手冊了解2.自定義變量從php賦值變量: 例如在調(diào)用該模板的app程序文件中進行賦值 //在app/default.app.php文件的index方法中$this->display前添加賦值語句 $this->assign('name', 'Tom'); //普通變量 $this->assign('user', array('name' => 'Tom','age' => '28' )); //數(shù)組變量 $this->display('index.html'); 復(fù)制代碼 在themes/mall/default/index.html中顯示變量[tpl]Hello,{$name},your age are {$user.age}! [/tpl] 在模板中賦值變量:assign標(biāo)簽例在themes/mall/default/index.html中賦值變量 [tpl]{assign var="name" value="Tom"} Hello,{$firstname}! [/tpl]3.模板上使用語言項說明:為了滿足多語言需求,ECMall采用了語言包機制,除掛件外,在模板、js文件中均使用語言項代替直接顯示語言文字。 語言文件:語言文件位于商城根目錄下的languages目錄下,為當(dāng)前語言建了一個目錄,如果您用的是sc-gbk版本,則會有sc-gbk目錄,進去之后就能看到屬于前臺控制器的全部語言文件了。除common.lang.php屬于所有app外,每一個語言文件都只屬于一個app(ECMall中稱為控制器)。 語言文件屬于某個控制器而不屬于某個模板,同一個模板如果被不同控制器調(diào)用將使用不同語言文件進行語言解析實例1: 在默認控制器對應(yīng)的語言文件default.lang.php添加語言項"test" <?php return array('hot_search' => '熱門搜索',... ...'best_recommended' => '精品推薦','test' => '測試語言項' ); ?> 復(fù)制代碼 在index.html模板中顯示語言項"test" [tpl]{$lang.test}[/tpl]輸出結(jié)果為: 測試語言項實例2:模板中還支持數(shù)組形式語言項: 在默認控制器對應(yīng)的語言文件default.lang.php添加語言項"test_array" <?php return array('hot_search' => '熱門搜索',... ...'best_recommended' => '精品推薦','test_array' => array('key1' => '測試數(shù)組語言項','key2' => '太好了'), ); ?> 復(fù)制代碼 在index.html模板中顯示語言項"test" [tpl]{$lang.test_array.key1}[/tpl]輸出結(jié)果為: 測試數(shù)組語言項4.變量調(diào)節(jié)器escape功能:提供各種編碼功能 參數(shù):可選參數(shù)html、url、quotes、input、editor,缺省為html html:分別替換變量中的如下字符& < > "為其html實體代碼,用于按原樣輸出html源代碼 url:如果該變量用于儲存url地址,需要進行url編碼quotes:在單雙引號字符前添加反斜杠input:給輸入框賦值時使用editor:當(dāng)顯示通過文本編輯器錄入的內(nèi)容,需要用此參數(shù)實例 php賦值 $this->assign('goods_name', "L'oreal/歐萊雅" . '"' . "清潤全日保濕乳霜" . '"' . "50ml<br /><script>"); $this->display('index.tpl'); 復(fù)制代碼 模板 [tpl]{$goods_name} {$goods_name|escape} {$goods_name|escape:"html"} {$goods_name|escape:"url"} {$goods_name|escape:"quotes"} {$goods_name|escape:"input"} {$goods_name|escape:"editor"} [/tpl]輸出結(jié)果為 L'oreal/歐萊雅"清潤全日保濕乳霜"50ml<br /><script> L'oreal/歐萊雅"清潤全日保濕乳霜"50ml<br /><script> L'oreal/歐萊雅"清潤全日保濕乳霜"50ml<br /><script> L%27oreal%2F%E6%AC%A7%E8%8E%B1%E9%9B%85%22%E6%B8%85%E6%B6%A6%E5%85%A8%E6%97%A5%E4%BF%9D%E6%B9%BF%E4%B9%B3%E9%9C%9C%2250ml%3Cbr+%2F%3E%3Cscript%3E L\'oreal/歐萊雅\"清潤全日保濕乳霜\"50ml<br /><script> L'oreal/歐萊雅\"清潤全日保濕乳霜\"50ml<br /><script> L'oreal/歐萊雅"清潤全日保濕乳霜"50ml<br /><script> nl2br功能:將換行符替換成<br /> 例子 [tpl]{$var|nl2br}[/tpl]default功能:為變量設(shè)置一個默認值,當(dāng)變量為空或者未分配的時候,將由默認值替代輸出 例子 [tpl]{$var|default:"no title"}[/tpl]truncate功能:字符串截取。從字符串開始處截取某長度的字符。默認會在末尾追加省略號。 例子: [tpl]{$content|truncate:20}[/tpl]strip_tags功能:去除<和>標(biāo)簽,包括在<和>之間的任何內(nèi)容。 例子: [tpl]{assign var="content" value="<b>文章內(nèi)容</b>"} {$content|strip_tags}[/tpl]輸出結(jié)果為:文章內(nèi)容price功能:格式化價格。 例子: [tpl]{assign var="goods_price" value="123456"} {$goods_price|price}[/tpl]輸出結(jié)果為:¥123,456.00date功能:格式化本地時間和日期。 格式:{$var|date:format} 說明:變量$var必須是格林尼治標(biāo)準時間,php中g(shù)mtime()和模板中$smarty.now得到的都是格林尼治標(biāo)準時間參數(shù)format可為simple、complete或自定義日期格式,缺省為simple。simple和complete均可由后臺設(shè)置,自定義日期格式請參考http://docs.php.net/manual/zh/function.date.php 例子: [tpl]{$smarty.now|date} {$smarty.now|date:complete} {$smarty.now|date:Y-m-d H:i} [/tpl]輸出結(jié)果為: 2010-12-01 2010-12-01 22:49:46 2010-12-01 22:49modifier功能:調(diào)用php自定義函數(shù)。 格式:{$var|modifier:user_func}三、流程控制標(biāo)簽1.條件判斷(if,elseif,else)說明模板中的 if 語句和 php 中的 if 語句一樣靈活易用,并增加了幾個特性以適宜模板引擎. if 必須于 /if 成對出現(xiàn). 可以使用 else 和 elseif 子句. 可以使用以下條件修飾詞:eq、ne/neq、gt、lt、lte/le、gte/ge、mod、not、==、!=、>、<、<=、>=、%、!使用這些修飾詞時必須和變量或常量用空格格開.多個條件之間用 and、or、&&、|| 連接,實現(xiàn)簡單的邏輯運算實例 [tpl]{if $name eq "Fred"}Welcome Sir. {elseif $name eq "Wilma"}Welcome Ma'am. {else}Welcome, whatever you are. {/if}{* 一個"或"邏輯的例子 *} {if $name eq "Fred" or $name eq "Wilma"}... {/if}{* 與上例等效 *} {if $name == "Fred" || $name == "Wilma"}... {/if}{* 下面的語法無效,條件修飾符必須由空格跟其他元素分開 *} {if $name=="Fred" || $name=="Wilma"}... {/if}{* 允許使用括號 *} {if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}... {/if} [/tpl]2.數(shù)組遍歷(foreach,foreachelse)說明:foreach 用于處理簡單數(shù)組(數(shù)組中的元素的類型一致)。foreach 必須和 /foreach 成對使用,且必須指定 from 和 item 屬性。foreach 可以嵌套,但必須保證嵌套中的 foreach 名稱唯一。 foreachelse 語句在 from 變量沒有值的時候被執(zhí)行。from 屬性:指定被循環(huán)的數(shù)組,數(shù)組長度決定了循環(huán)的次數(shù)。item屬性:單個循環(huán)項目的變量名,在循環(huán)內(nèi)部使用。name 屬性為可選屬性,可以任意指定(字母、數(shù)字和下劃線的組合)。name 屬性如果指定,foreach循環(huán)體內(nèi)會自動生成如下變量$smarty.foreach.foreach_name.index表示本次循環(huán)索引,從0開始遞增的整數(shù)$smarty.foreach.foreach_name.iteration表示本次的循環(huán)次數(shù),從1開始遞增的整數(shù)$smarty.foreach.foreach_name.first表示是否是第一次循環(huán)$smarty.foreach.foreach_name.last表示是否是最后一次循環(huán)$smarty.foreach.foreach_name.show表示是否有數(shù)據(jù)$smarty.foreach.foreach_name.total表示循環(huán)總次數(shù),也可在循環(huán)體外使用實例1 [tpl]{* 該例將輸出數(shù)組 $custid 中的所有元素的值 *} {foreach from=$custid item=curr_id}id: {$curr_id}<br> {/foreach} [/tpl] 輸出結(jié)果為: id: 1000<br> id: 1001<br> id: 1002<br>實例2 /* 在對應(yīng)的控制器中賦值 */ $this->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234") )); 復(fù)制代碼 [tpl]{* 鍵就是數(shù)組的下標(biāo),請參看關(guān)于數(shù)組的解釋 *}{foreach name=outer item=contact from=$contacts} {foreach key=key item=item from=$contact} {$key}: {$item}<br> {/foreach} {/foreach} [/tpl]輸出結(jié)果為: phone: 1<br> fax: 2<br> cell: 3<br> phone: 555-4444<br> fax: 555-3333<br> cell: 760-1234<br>[tpl]{* 最后一行不顯示<br>標(biāo)簽 *}{foreach name=outer item=contact from=$contacts name=my_name} {foreach key=key item=item from=$contact} {$key}: {$item}{if !smarty.foreach.my_name.last}<br>{/if} {/foreach} {/foreach} [/tpl]輸出結(jié)果為: phone: 1<br> fax: 2<br> cell: 3<br> phone: 555-4444<br> fax: 555-3333<br> cell: 760-1234四、顯示標(biāo)簽cycle格式:{cycle values="val1,val2,val3..."} 說明cycle 用于輪轉(zhuǎn)使用一組值。該特性使得在表格中交替輸出顏色或輪轉(zhuǎn)使用數(shù)組中的值變得很容易。 實例 [tpl]{foreach from=$data_list item=data} <tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"> <td>{$data}</td> </tr> {/foreach} [/tpl]輸出結(jié)果為: <tr bgcolor="#eeeeee"> <td>1</td> </tr> <tr bgcolor="#d0d0d0"> <td>2</td> </tr> <tr bgcolor="#eeeeee"> <td>3</td> </tr>html_options說明自定義函數(shù) html_options 根據(jù)給定的數(shù)據(jù)創(chuàng)建選項組. 該函數(shù)可以指定哪些元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代。實例1 $this->assign('cust_ids', array(1000,1001,1002,1003)); $this->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane Johnson','Carlie Brown')); $this->assign('customer_id', 1001); 復(fù)制代碼 [tpl]<select>{html_options values=$cust_ids selected=$customer_id output=$cust_names} </select> [/tpl]實例2 $this->assign('cust_options', array(1001 => 'Joe Schmoe',1002 => 'Jack Smith',1003 => 'Jane Johnson',1004 => 'Charlie Brown')); $this->assign('customer_id', 1001); 復(fù)制代碼 [tpl]<select>{html_options options=$cust_options selected=$customer_id} </select> [/tpl]實例1和實例2輸出結(jié)果均為: <select><option value="1000">Joe Schmoe</option><option value="1001" selected>Jack Smith</option><option value="1002">Jane Johnson</option><option value="1003">Carlie Brown</option> </select>html_radios說明自定義函數(shù) html_radios 根據(jù)給定的數(shù)據(jù)創(chuàng)建選項組. 該函數(shù)可以指定哪些元素被選定. 要么必須指定 values 和 ouput 屬性,要么指定 options 替代。與html_options不同的是html_radios有一個checked屬性html_radios說明自定義函數(shù) html_radios 根據(jù)給定的數(shù)據(jù)創(chuàng)建單選按鈕組。該函數(shù)可以指定哪個元素被選定。要么必須指定 values 和 ouput 屬性,要么指定 options 替代。與html_options不同的是html_radios有一個checked屬性。html_checkbox說明自定義函數(shù) html_checkboxes 根據(jù)給定的數(shù)據(jù)創(chuàng)建復(fù)選按鈕組。該函數(shù)可以指定哪些元素被選定。 要么必須指定 values 和 ouput 屬性,要么指定 options 替代.。與html_options不同的是html_checkbox有一個checked屬性。sprintf說明: 對變量進行格式化 格式{sprintf lang=my_lang var1=my_var1 var2=my_var2 ...} 實例 在語言文件添加語言項 return array(... ...'query_info' => '頁面執(zhí)行 %0.3f 秒, 查詢 %d 次,在線 %d 人' ); 復(fù)制代碼 模板中顯示 [tpl] {sprintf lang=query_info var1=query_time var2=query_count var3=query_user_count} [/tpl]輸出結(jié)果為: 頁面執(zhí)行 0.160 秒, 查詢 3 次,在線 10 人
?
| ? |
轉(zhuǎn)載于:https://www.cnblogs.com/archoncap/p/4933235.html
總結(jié)
以上是生活随笔為你收集整理的ECMall2.x模板制作入门系列之2(模板标签/语法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA并发七(多线程环境中安全使用集合
- 下一篇: input框