ecstore關於smarty語法調用

如下是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)

foreach foreachelsejavascript

屬性 類型 是否必須 描述
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}>

if,elseif,elsehtml

概述:       條件判斷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

require數組

所屬類:     site_view_compiler
概述:       加載當前模板目錄下模板文件網絡

屬性 類型 是否必須 描述
file string yes 指定模板文件路徑
<{require file="block/header.html"}> 輸出:     加載當前模板目錄下block/header.html文件

includeapp

引用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 做爲主區域模板進行渲染, 並輸出主區域內容 

widgets

所屬類:     site_view_compiler
概述:       模板掛件區域

屬性 類型 是否必須 描述
id string no 掛件區域惟一標識, 一旦設定請勿輕易改動
<{widgets id='index-banner'}> 輸出:     爲模板頁面增長了一個掛件區域, 可經過後臺模板但是化編輯中掛載掛件

default
所屬類:     base_view_compiler
功能:       設置默認值

<{assign var="key" value=''}> <{$key|default:30}> 輸出:     30

ship_area

所屬類:     site_view_compiler
概述:       將內部地址轉換爲, 顯示地址
方式:       modifier

<{assign var="ship_area" value="mainland:廣東/廣州市/東山區:425"}> <{$ship_area|ship_area}> 輸出:     廣東廣州市東山區

cur/cur_odr

所屬類:     ectools_view_compiler
概述:       將貨幣價格(默認系統裏價格爲基準貨幣價格)轉換成當前貨幣價格, 並以當前貨幣格式輸出
別名:       cur_odr

% 當前貨幣和基準貨幣價格一致, 而且基準價格爲人民幣 <{40|cur}> 輸出:     ¥40.00

 counter

所屬類:     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 記數器方向,(增/減)
print 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

 html_options

所屬類:     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>

html_table

所屬類:     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 &nbsp; 在最後行空單元格中填充的字符(若是有的話)
<{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]]

mailto

所屬類: 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}>

 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' }>

效果預覽:

ecstore關於pager分頁效果

ecstore關於pager分頁效果

pagers得第二種寫法

分配變量  $this->pagedata['pagers'] = array(     'current'=>2,     'total'=>20,     'link'=>'index.php/shopadmin/#app=ecbook&ctl=admin_dbeav&act=index', );  html中調用  <{pagers data=$pagers}>

 toinput隱藏框

參數: 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'}>

 cdate控制日期輸出

參數:   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

 cut控制字符串輸出

 參數:第一個參數 輸出幾個字符   默認是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

 regex_replace正則替換

參數:第一參數:替換正則表達式.       第二參數:用來替換的文本字符串  先分配數據:     $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.

 region

參數:第一參數 被替換的字符串       第二參數 用來替換的字符串  先分配數據:         $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

 strip替換空格

先分配數據:     $this->pagedata['strip'] = "ss  fbsd fsd   fs "; 	$this->page('list.html');      list.html:     <{$strip}><br />     <{$strip|strip:''}><br /> 輸出:     ss fbsd fsd fs     ssfbsdfsdfs
相關文章
相關標籤/搜索