如下是smarty語法
assign
屬性 | 類型 | 是否必須 | 描述 |
var | string | yes | 被賦值的變量名 |
value | string | yes | 賦給變量的值 |
<{assign var="age" value=20}> <{$age}> 輸出: 20 <{assign var="arr" value=array("s","b")}> <{dump var=$arr}> 輸出: array 0 => string 's' (length=1) 1 => string 'b' (length=1)
屬性 | 類型 | 是否必須 | 描述 |
---|---|---|---|
from | string | yes | 待循環數組的名稱 |
item | string | yes | 當前處理元素的變量名稱 |
key | string | on | 當前處理元素的鍵名 |
name | string | on | 該循環的名稱,用於訪問該循環 |
概述: 用於在模板被執行時循環 foreach 必須和 /foreach 成對使用, 且必須指定 from 和 item 屬性.name 屬性能夠任意指定 .foreach 能夠嵌套,但必須保證嵌套中的 foreach 名稱惟一. from 屬性(一般是數組)決定循環的次數。foreachelse 語句在 from 變量沒有值的時候被執行. % 輸出數組$array中全部元素 <{foreach from=$array item=value key=key}> <{$key}> : <{$value}><br> <{/foreach}> 輸出: a : c# b : php c : java % 當輸出爲空時, 輸出foreachelse的值 <{foreach from=$array item=value key=key}> <{$key}> : <{$value}><br> <{foreachelse} empty <{/foreach}> 輸出: empty
include
概述: 加載app級模板, 加載網店級模板能夠用requirephp
<{include file='site/product/goods_js.html' app=b2c}>
概述: 條件判斷java
修飾符 | 備用詞 | 語法用例 | 說明 | php等同表達式 |
---|---|---|---|---|
== | eq,is | $a eq $b | equals | == |
!= | ne,neq | $a neq $b | not equals | != |
> | gt | $a gt $b | greater than | > |
< | lt | $a lt $b | less than | < |
>= | gte,ge | $a ge $b | greater than or equal | >= |
<= | lte,le | $a le $b | less than or equal | <= |
=== | $a === 0 | check for identity | === | |
! | not | not $a | negation(unary) | ! |
% | mod | $a mod $b | modulous | % |
is [not] odd | $a is not odd | [not] an odd number(unary) | $a%2!=0 | |
is [not] even | $a is not even | [not] an even number(unary) | $a%2=0 |
注意:每個{if}必須與一個{/if}成對出現,容許使用{else}和{elseif},全部php條件和函數在這裏一樣適用,諸如||、or、&&、and、is_array()等等正則表達式
下面是一串有效的限定符,它們的左右必須用空格分隔開,注意列出的清單中方括號是可選的,在適用狀況下使用相應的等號(全等或不全等)。json
<{if $name eq "yi"}> ... <{elseif $name eq "yu"}> ... <{else}> ... <{/if}> {if $name == 'Fred' || $name == 'Wilma'} ... {/if} % 容許使用圓括號 {if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#} ... {/if} % 能夠嵌入函數 {if count($var) gt 0} ... {/if} % 數組檢查 {if is_array($foo) } ..... {/if} % 是否空值檢查 {if isset($foo) } ..... {/if} % 測試值爲偶數仍是奇數 {if $var is even} ... {/if} {if $var is odd} ... {/if} {if $var is not odd} ... {/if} % 測試var可否被4整除
math
所屬類: base_view_compiler
概述: 在模板中進行運算c#
屬性 | 類型 | 是否必須 | 描述 |
---|---|---|---|
equation | string | yes | 計算表達式 |
assign | string | no | 被賦值的變量名 |
format | string | no | 輸出格式 |
<{math equation="x*2+y" format="--%03d--" assign="newkey" x=10 y=3}> <{$newkey}> 輸出: --023-- --023-- <{math equation="x*2+y" assign="newkey" x=10 y=3}> 輸出: 23
所屬類: site_view_compiler
概述: 加載當前模板目錄下模板文件網絡
屬性 | 類型 | 是否必須 | 描述 |
---|---|---|---|
file | string | yes | 指定模板文件路徑 |
<{require file="block/header.html"}> 輸出: 加載當前模板目錄下block/header.html文件
引用view下html輸出
<!--引入B2C下xxx.html--> <{include file="admin/sales/coupon/xxx.html" app=b2c}> <!--引入ome下xxx.html--> <{include file="admin/sales/coupon/xxx.html" app=ome}> <!--注意:該引用默認目錄指向/app/app名稱/view-->
main
所屬類: site_view_compiler
概述: 模板系統級區域
屬性 | 類型 | 是否必須 | 描述 |
view | string | no | 指定主區域模板路徑 |
<{main}> 輸出: 使用系統內置的主區域模板進行渲染, 並輸出主區域內容 <{main view="abc.html"}> 輸出: 使用{$ecstore_root}/themes/{$template_name}/abc.html 做爲主區域模板進行渲染, 並輸出主區域內容
所屬類: site_view_compiler
概述: 模板掛件區域
屬性 | 類型 | 是否必須 | 描述 |
---|---|---|---|
id | string | no | 掛件區域惟一標識, 一旦設定請勿輕易改動 |
<{widgets id='index-banner'}> 輸出: 爲模板頁面增長了一個掛件區域, 可經過後臺模板但是化編輯中掛載掛件
default
所屬類: base_view_compiler
功能: 設置默認值
<{assign var="key" value=''}> <{$key|default:30}> 輸出: 30
所屬類: site_view_compiler
概述: 將內部地址轉換爲, 顯示地址
方式: modifier
<{assign var="ship_area" value="mainland:廣東/廣州市/東山區:425"}> <{$ship_area|ship_area}> 輸出: 廣東廣州市東山區
所屬類: ectools_view_compiler
概述: 將貨幣價格(默認系統裏價格爲基準貨幣價格)轉換成當前貨幣價格, 並以當前貨幣格式輸出
別名: cur_odr
% 當前貨幣和基準貨幣價格一致, 而且基準價格爲人民幣 <{40|cur}> 輸出: ¥40.00
所屬類: base_view_helper
概述: 用於顯示一個計數器
counter 用於輸出一個記數過程. counter 保存了每次記數時的當前記數值. 用戶能夠經過調節 interval 和 direction 調節該值. 也能夠決定是否輸出該值. 若是須要同時運行多個計數器,必須爲它們指定不一樣的名稱. 若是沒有指定名稱,模板引擎使用 「default」 做爲缺省值.若是指定了 「assign」 這個特殊屬性,該計數器的輸出值將被賦給由 assign 指定的模板變量,而不是直接輸出.
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
name | string | No | default | 計數器的名稱 |
start | number | No | 1 | 數器初始值 |
skip | number | No | 1 | 記數器間隔、步長 | |
direction | string | No | up | 記數器方向,(增/減) |
boolean | No | true | 是否輸出值 | |
assign | string | No | n/a | 輸出值將被賦給模板變量的名稱 |
% counter 例子: 0-<{counter name="wocao" start=6 skip=3 direction=down print=false}><br /> 1-<{counter name="wocao"}><br /> 2-<{counter name="wocao"}><br /> 3-<{counter name="wocao" assign="result"}><br /> 4-<{counter name="wocao"}><br /> 5-<{$result}><br /> ----- <br /> 0-<{counter name="kkk" start=6 skip=2 direction=down print=false}><br /> 1-<{counter name="kkk"}><br /> 2-<{counter name="kkk"}><br /> 3-<{counter name="kkk" assign="result"}><br /> 4-<{counter name="kkk"}><br /> 5-<{$result}><br /> <{counter start=6 skip=3 direction=down print=false}><br /> <{counter}><br /> <{counter}><br /> <{counter assign="www"}><br /> <{$counter}> 輸出: 0- 1-3 2-0 3- 4--6 5--3 ----- 0- 1-4 2-2 3- 4--2 5-0
所屬類: base_view_helper
概述: 生成HTML的<select><option>標籤
建議: 詳細用法可參考smarty文檔
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
values | array | Yes, 除非使用 options 屬性 | n/a | 下拉框值的數組 |
output | array | Yes, 除非使用 options 屬性 | n/a | 下拉框顯示的數組 |
selected | string/array | No | empty | 選中的項 |
options | 數組 | Yes, 除非使用 values 和 output | n/a | 鍵值對的數組,用於下拉框 |
name | string | No | empty | select組的名稱 |
%必要的屬性是values 和 output, 除非你使用組合的options來代替。 %除非提供了可選屬性name, 纔會建立 <select></select>標籤, 否則,只會生成<option>列表。 %若是設置的value是數組,會看成HTML的<optgroup>,而且顯示該下拉組。 <optgroup>是支持遞歸的。 %其餘不在上面列表中的鍵值對參數,會直接在輸出的 <select> 標籤中顯示成 名稱=值 的屬性。 若是可選參數name沒有設置,那麼它們將被忽略。 %所有的輸出都符合XHTML的。 <{assign var="options" value=array('a'=>'php','b'=>'c#','c'=>'java')}> <{html_options name='bb' options=$options }> 輸出: <select name="bb"> <option label="php" value="a">php</option> <option label="c#" value="b">c#</option> <option label="java" value="c">java</option> </select>
所屬類: base_view_helper
概述: 可以使用數組形式的數據來建立一個HTML的<table>, 此plugin是smarty的html_table簡化版
建議: 詳細用法可參考smarty文檔
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
loop | array | Yes | n/a | 循環賦值的數組 |
cols | mixed | No | 3 | 表 格的列數,或者是逗號分隔的列頭文字列表,或是列頭文字的數組。 若是cols屬性爲空,但設置了rows,將以rows數量和顯示元素的總數進行計算得出列數, 以便每列能顯示所有的元素。 若是rows和cols都設置了,那麼cols會忽略默認值3. 若是設置cols爲一個列表或數組,那麼列數將取決於列表或數組的元素個數。 |
table_attr | string | No | border=」1″ | <table>標籤的屬性 |
tr_attr | string | No | empty | <tr>標籤的屬性 (循環) |
td_attr | string | No | empty | <td>標籤的屬性 (循環) |
trailpad | string | No | | 在最後行空單元格中填充的字符(若是有的話) |
<{assign var="loop" value=array(1,2,3,4,5,6,7,8,9,10)}> <{html_table loop=$loop cols=3 }> 輸出: <table border="1"> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>4</td><td>5</td><td>6</td></tr> <tr><td>7</td><td>8</td><td>9</td></tr> </table>
json
所屬類: base_view_helper
概述: 對變量進行JSON編碼
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
from | string | No | null | 須要進行JSON編碼的變量 |
% $array 要進行JSON編碼的變量 <{assign var="array" value=array(1,2,3,4,array(2,4,5))}> <{json from=$array}> 輸出: [1,2,3,4,[2,4,5]]
所屬類: base_view_helper
概述: 能夠自動建立一個mailto:連接,並且能夠選擇編碼方式。 對郵件編碼能夠使郵件地址更難以被網絡爬蟲抓取
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
address | string | Yes | n/a | 電郵地址 |
text | string | No | n/a | 顯示的文字,默認是電郵地址 |
encode | string | No | none | 如何編碼電郵。能夠是none,hex,javascript或者javascript_charcode. |
cc | string | No | n/a | 抄送的電郵地址,用逗號隔開 |
bcc | string | No | n/a | 暗送的地址,用逗號隔開。 |
subject | string | No | n/a | 郵件標題 |
newsgroups | string | No | n/a | 發送到的新聞組地址,用逗號隔開。 |
followupto | string | No | n/a | 回執地址,用逗號隔開。 |
extra | string | No | n/a | 任何附加的連接信息,如樣式表等 |
<{mailto address="me@domain.com"}><br /> <{mailto address="me@domain.com" text="send me some mail" subject="Hello to you!" cc="you@domain.com,they@domain.com" extra='class="email"'}><br /> <{mailto address="me@domain.com" encode="javascript"}><br /> <{mailto address="me@domain.com" encode="hex"}><br /> 輸出: <a href="mailto:me@domain.com" >me@domain.com</a><br /> <a href="mailto:me@domain.com?cc=you@domain.com%2Cthey@domain.com&subject=Hello%20to%20you%21" class="email">send me some mail</a><br /> <script type="text/javascript" language="javascript"> eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d% 61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%22%20%3e%6d%65%40%64%6f%6d%61%69%6e% 2e%63%6f%6d%3c%2f%61%3e%27%29%3b'))</script><br /> <a href="mailto:%6d%65@%64%6f%6d%61%69%6e.%63%6f%6d" > me@domain.com</a><br />
appconf
所屬類: base_view_helper
概述: 變相的使用app::get($app_id)->getConf($key)取數據
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
app | string | Yes | empty | app_id |
key | string | Yes | empty | key |
<{appconf app="site" key="site.name"}> 輸出: 商店名稱
pager
所屬類: base_view_helper
概述: 簡單分頁組件
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
data | array | Yes | paper數據 |
data格式:
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
current | int | Yes | 須要進行JSON編碼的變量 | |
total | int | Yes | 須要進行JSON編碼的變量 | |
link | string | Yes | 須要進行JSON編碼的變量 | |
token | string | Yes | 須要進行JSON編碼的變量 |
分配變量 $this->pagedata['pagers'] = array( 'current' => 33, 'total' => 3333, 'token' => '_PPP_' 'link'=>'index.php/shopadmin/#app=ecbook&ctl=admin_dbeav&act=index&p=_PPP_', ); html中調用 <{assign var=data value=array('current=>33,'total <{pagers data=$pagers}>
所屬類: b2c_view_helper
概述: 分頁組件
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
data | array | Yes | paper數據 |
data格式
屬性 | 類型 | 是否必須 | 默認值 | 描述 |
---|---|---|---|---|
data | array | Yes | 須要進行JSON編碼的變量 |
pager current 當前頁 total 總頁數 link 鏈接地址 <{assign var="data" value=array('current'=>35,'total'=>3333,'token'=>'@@@','link'=>'http://a/@@@')}> <{pagers data=$data}> <{pager current=1 total=30 link='index.php/shopadmin/#app=ecbook&ctl=admin_dbeav&act=index' }>
效果預覽:
pagers得第二種寫法
分配變量 $this->pagedata['pagers'] = array( 'current'=>2, 'total'=>20, 'link'=>'index.php/shopadmin/#app=ecbook&ctl=admin_dbeav&act=index', ); html中調用 <{pagers data=$pagers}>
參數: from 包含隱藏框的name和value的關聯數組
先分配數據: $this->pagedata['toinput'] = array('a'=>'c#','b'=>'php','c'=>'java'); $this->page('list.html'); list.html: <{toinput from=$toinput}><br /> 輸出: <input type="hidden" name="a" value="c#" /> <input type="hidden" name="b" value="php" /> <input type="hidden" name="c" value="java" />
amount
參數 第一個參數:貨幣幣種(貨幣代碼) 默認爲人民幣 第二個參數:是否爲基本數據格式 false|true 第三個參數:是否須要改變費率 false|true 注意 此方法是繼承ectools的,因此要調用必須安裝ectools。 <{123466789|amount:'CNY'}> 輸出效果:¥123,466,789.00
storager
根據image_id對圖片顯示進行修飾
參數 l 大圖 m 中圖 s 小圖 默認顯示原圖 <{$image_id|storager:'s'}> //顯示小圖,如無圖片,顯示默認設置圖 <{$ajuncts.thumbnail_pic|default:$env.conf.site.default_thumbnail_pic|storager:'s'}>
參數: FDATE Y-m-d SDATE y-m-d DATE m-d FDATE_FTIME Y-m-d H:i:s FDATE_STIME Y-m-d H:i SDATE_FTIME y-m-d H:i:s SDATE_STIME y-m-d H:i DATE_FTIME m-d H:i:s DATE_STIME m-d H:i 默認:FDATE_FTIME 先分配數據: $this->pagedata['time'] = time(); $this->page('list.html'); list.html: <{$time|cdate:FDATE}> 輸出: 2011-01-06
參數:第一個參數 輸出幾個字符 默認是80 第二個參數 後三個代替字符 默認是 ... 先分配數據: $this->pagedata['string'] = 'abcdefghijklmno'; $this->page('list.html'); list.html: <{$string|cut:10}><br /> <{$string|cut:10:'+++'}><br /> 輸出: abcdefg... abcdefg+++
date
參數:參照php中date函數寫參數 先分配數據: $this->pagedata['time'] = time(); $this->page('list.html'); list.html: <{$time|date:'r'}><br /> 輸出: Thu, 06 Jan 2011 17:53:26 +0800
date_format
參數: 參數php中strftime函數寫參數 先分配數據: $this->pagedata['time'] = time(); $this->page('list.html'); list.html: <{$time|date_format:'%Y年'}><br /> 輸出: 2011年
t 將所要修飾的字符串調用語言包格式輸出
參數: appid alt=$___b2c="刪除"|t:'b2c'
number
對$number數據進行格式化
參數 0 把$number強制轉換爲int型原樣輸出 1 判斷$number是否小於1,若是小於1則輸出‘低於1’,不然若是是整數則原樣輸出,小數則進1位輸出 2 判斷$number是否小於1,若是小1則輸出'超過99',不然輸出100-$number 3 判斷$number是否小於1,若是小於1則輸出'低於1',不然輸出對小數四捨五入的值 <{1234.247|number:3}> //1234.3
參數:第一參數:替換正則表達式. 第二參數:用來替換的文本字符串 先分配數據: $this->pagedata['articleTitle'] = "Infertility unlikely to\nbe passed on, experts say."; $this->page('list.html'); list.html: <{$articleTitle}><br /> <{$articleTitle|regex_replace:"/[\r\t\n]/":" "}> 輸出: Infertility unlikely to be passed on, experts say. Infertility unlikely to be passed on, experts say.
參數:第一參數 被替換的字符串 第二參數 用來替換的字符串 先分配數據: $this->pagedata['region'] = "afsd/fsd:bbcd/czxc:fsd"; $this->page('list.html'); list.html: <{$region}><br /> <{$region|replace:'/':'-'}><br /> 輸出: afsd/fsd:bbcd/czxc:fsd afsd-fsd:bbcd-czxc:fsd
先分配數據: $this->pagedata['strip'] = "ss fbsd fsd fs "; $this->page('list.html'); list.html: <{$strip}><br /> <{$strip|strip:''}><br /> 輸出: ss fbsd fsd fs ssfbsdfsdfs