1. 程式人生 > >ecshop二次開發手冊

ecshop二次開發手冊

關於ECSHOP
ECShop是Comsenz公司推出的一款B2C獨立網店系統,適合企業及個人快速構建個性化
網上商店。系統是基於PHP語言及MYSQL資料庫構架開發的跨平臺開源程式。
ECShop悉心聽取每一位商家的需求與建議,不僅設計了人性化的網店管理系統幫助商家
快速上手,還根據中國人的購物習慣改進了購物流程,實現更好的使用者購物體驗。
經過近兩年的發展,ECShop網店系統無論在產品功能、穩定性、執行效率、負載能力、
安全性和SEO支援(搜尋引擎優化)等方面都居國內同類產品領先地位,成為國內最流行的購物
系統之一。
官方網站:
http://www.ecshop.com
官方論壇:
http://bbs.ecshop.com

產品特點:
• 靈活的模版機制
ECShop開發了獨有的高效模板引擎(2.15以前版本使用smarty模板引擎), 並結合了
Dreamweaver的模板和庫功能,使得編輯製作模板變得更簡單。
• 開放的外掛機制
支付、配送,會員整合都是以外掛形式實現。商家可以隨時增加或變更的支付方式和配送體
系。ECShop支援大部分php開發的論壇系統,包括discuz,phpwind等,只需在後臺做簡
單引數配置,即可完成會員整合。
• 功能 AJAX 化
ECShop使用目前流行的 AJAX 技術,批量資料編輯變得更迅速,方便。
• 促銷功能
ECShop提供了積分、紅包、贈品,奪寶奇兵等多種促銷方法。
• 高效率的程式碼和執行效能
通過優化程式碼與資料庫結構,配合ECShop獨家設計的快取機制,在不考慮網速的情況下,
網店動態頁面與純靜態頁面訪問速度相當。
• 常規功能的更完善實現
針對常規功能尤其是後臺管理和購物流程,ECShop進行了更簡潔的設計,實現更好的使用者
體驗。
E-Commerce Online Shop 網上商店系統
4
• 搜尋引擎優化
在 SEO (搜尋引擎優化)上,ECShop獨家支援兩種 URL 重寫方式,並且是同類軟體中第
一家支援google / yahoo / microsoft三家共同釋出的 sitemaps 0.9 網站索引規範,能夠為
站點被搜尋引擎收錄做到最大限度的支援和幫助。
• 內建手機簡訊閘道器
ECShop內建手機簡訊閘道器,支援會員資訊群發,訂單提醒等功能。
• 多語言支援
支援簡體,繁體,英文。
• 原始碼開放
使用者可根據自己的需求對ECShop進行定製,擴充套件。
E-Commerce Online Shop 網上商店系統
5
1. 前言
1.1. 模板系統介紹
ECShop網上商店系統”的模板機制是由ECShop團隊自行研發的模板控制系統,和著名的
PHP 開源模板引擎程式Smarty 大部分功能類似。為了方便使用者開發模板, 並使用了
Dreamweaver的模板和庫功能,使得編輯模板變得更簡單容易。
1.2. 涵蓋內容
本文件主要介紹“模板結構說明”、“模板製作範例”和“模板系統標籤變數”等。
1.3. 適用版本
本文件由ECShop團隊編寫整理;文件主要針對ECShop v2.5+版本。
如果您發現文件內容有誤,或者內容尚未更新到最新版本,又或者您覺得需要新增需要了解
的資料,請Email:
[email protected]
,並請註明哪部分內容錯誤或者尚未更新,謝謝!
注意:“ecshop v2.5+” 表示此文件的適用環境為v2.5或更高版本,低於此版本的可能已
經不適用!為了獲得更多更強的功能以及更安全的使用環境,請您儘快升級您的ECShop主程
序!
1.4. ECShop 團隊主要成員
• 專案策劃
Paul Gao,Weber Liu
• 程式開發
Weber Liu , ScottYe , WenjinZhang , YanXuan , PaulGao , Stevenliu , Hackfan ,
Edisonrao
• 介面設計
Weber Liu,HengqiLu,Yecior
• 文件整理
Lily Chai,Bei Wang
E-Commerce Online Shop 網上商店系統
6
2. 模板結構說明
2.1. 模板目錄結構
名稱 備註(作用)
css 存放模板.css “樣式表”檔案目錄
images 存放模板“圖片”檔案目錄
js 存放模板.js“javascript”檔案目錄
library 存放模板.lbi“庫檔案”目錄
注意:以上目錄名全部都不可以更改,因為需要和程式做匹配,使用Unix系列作業系統的用
戶請注意目錄名稱大小寫。
2.2. 連結模板檔案使用例子
檔案格式 使用例子
.css <linkhref="style.css" rel="stylesheet" type="text/css" />
備註:注意預設的style.css檔案不可以更改檔名或移動到css目錄,額外新增的.css檔案需要
存放到css目錄路徑,不可以使用其他目錄名稱,留意紅色程式碼部分的使用。
例子:<linkhref="css/style.css" rel="stylesheet" type="text/css" />
.js <script type="text/javascript" src="js/ajax.js"></script>
備註:.js檔案必須存放在js目錄,不可以使用其他目錄名稱,注意紅色程式碼部分。
.gif/.jpg/.png .dwt檔案程式碼下面路徑使用例子:
<imgsrc="images/a.gif" alt="" />
.lbi檔案程式碼下面路徑使用例子:
<imgsrc="../images/a.gif" alt="" />
.lbi <!-- #BeginLibraryItem "/library/page_header.lbi" --><!--
#EndLibraryItem -->
注意:連結程式碼的href、rel、type的次序需要遵行上面例子,否則程式可能無法使用。
2.3. 模板檔案結構
一套完整模板應該包含以下檔案:
• 29個 .dwt檔案(模板框架檔案)
• 50個 .lbi檔案(模板庫檔案)
• 1個style.css檔案 (裡面包含了模板的配置程式碼。)
• 1個screenshot.png檔案(用於後臺管理顯示安裝模板。)
名稱 檔案型別 說明
activity.dwt 模板檔案 活動列表頁
article_cat.dwt 模板檔案 文章列表頁
article_pro.dwt 模板檔案 系統文章頁(如:“公司簡介”、“版權資訊“。)
article.dwt 模板檔案 文章內容頁
auction_list.dwt 模板檔案 拍賣商品列表頁
E-Commerce Online Shop 網上商店系統
7
auction.dwt 模板檔案 拍賣商品詳情頁
brand.dwt 模板檔案 品牌商品列表頁
catalog.dwt 模板檔案 所有分類、品牌頁
category.dwt 模板檔案 商品列表頁
compare.dwt 模板檔案 商品比較頁
flow.dwt 模板檔案 購物車和購物流程頁
gallery.dwt 模板檔案 商品相簿頁
goods.dwt 模板檔案 商品詳情頁
group_buy_goods.dwt 模板檔案 團購商品詳情頁
group_buy_list.dwt 模板檔案 團購商品列表頁
index.dwt 模板檔案 首頁
message.dwt 模板檔案 資訊提示頁(如:警告資訊,登陸成功。)
myship.dwt 模板檔案 配送方式查詢頁
pick_out.dwt 模板檔案 選購中心頁
receive.dwt 模板檔案 收貨確認資訊頁
respond.dwt 模板檔案 線上支付結果提示資訊頁
search.dwt 模板檔案 商品高階搜尋、搜尋結果頁
snatch.dwt 模板檔案 奪寶奇兵頁
tag_cloud.dwt 模板檔案 標籤雲頁
topic.dwt 模板檔案 專題活動頁
user_clips.dwt 模板檔案 使用者中心頁(包含:歡迎頁、我的留言、我的評論、

的標籤、收藏商品、缺貨登記、新增缺貨登記、我的

薦、單個商品推薦。)
user_passport.dwt 模板檔案 使用者安全頁(包含:會員登入、會員註冊、找回密碼
。)
user_transaction.dwt 模板檔案 使用者中心頁(包含:個人資料、我的紅包、新增紅包
、我的訂單、訂單詳情、合併訂單、訂單狀態、商品
列表、費用總計、收貨人資訊、支付方式、其他資訊
、會員餘額、積分兌換。)
wholesale_list.dwt 模板檔案 批發商品頁
ad_position.lbi 庫檔案 廣告位
article_category_tree.lbi 庫檔案 文章列表頁“文章分類樹”
auction.lbi 庫檔案 首頁拍賣商品
brand_goods.lbi 庫檔案 首頁品牌商品
brands.lbi 庫檔案 品牌列表和商品列表頁“品牌篩選”
cart.lbi 庫檔案 購物車
cat_articles.lbi 庫檔案 首頁分類文章
cat_goods.lbi 庫檔案 首頁分類商品
category_tree.lbi 庫檔案 商品分類樹
categorys.lbi 庫檔案 選購中心“分類列表”
comments_list.lbi 庫檔案 使用者評論表單、內容列表
comments.lbi 庫檔案 使用者評論 (ajax載入comments_list.lbi庫檔案。)
consignee.lbi 庫檔案 收貨地址表單
email_list.lbi 庫檔案 郵件訂閱
filter_attr.lbi 庫檔案 商品列表頁“屬性篩選”
goods_article.lbi 庫檔案 相關文章
goods_attrlinked.lbi 庫檔案 屬性關聯的商品
goods_fittings.lbi 庫檔案 相關配件
E-Commerce Online Shop 網上商店系統
8
goods_gallery.lbi 庫檔案 商品相簿
goods_list.lbi 庫檔案 商品列表
goods_tags.lbi 庫檔案 商品標記
goods_relative.lbi 庫檔案 相關商品
group_buy.lbi 庫檔案 首頁團購商品
help.lbi 庫檔案 網店幫助
history.lbi 庫檔案 商品瀏覽歷史
invoice_query.lbi 庫檔案 首頁發貨單列表
member_info.lbi 庫檔案 會員登入表單和登入成功以後的會員資訊
member.lbi 庫檔案 會員登入 (ajax載入member_info.lbi庫檔案。)
myship.lbi 庫檔案 配送查詢
new_articles.lbi 庫檔案 最新文章、網店公告
order_query.lbi 庫檔案 訂單查詢
order_total.lbi 庫檔案 訂單費用總計
page_footer.lbi 庫檔案 頁面腳部(包含:版權資訊、聯絡電話、地址、IM
軟體和Ajax需要呼叫的javascript程式碼。
page_header.lbi 庫檔案 頁面頭部 (包含:網店LOGO、頂部選單、主導
航)
pages.lbi 庫檔案 列表分頁
price_grade.lbi 庫檔案 商品列表頁“價格篩選”
recommend_best.lbi 庫檔案 精品推薦
recommend_hot.lbi 庫檔案 熱賣商品
recommend_new.lbi 庫檔案 新品推薦
recommend_promotion 庫檔案 促銷商品
search_form.lbi 庫檔案 搜尋表單
snatch_price.lbi 庫檔案 奪寶奇兵最新出價列表 (必須被
id="ECS_PRICE_LIST"包含實現ajax重新整理。)
snatch.lbi 庫檔案 奪寶奇兵出價表單 (必須被id="ECS_SNATCH"包含
實現ajax重新整理。)
top10.lbi 庫檔案 銷售排行
ur_here.lbi 庫檔案 當前位置
user_menu.lbi 庫檔案 使用者中心選單
vote_list.lbi 庫檔案 線上調查
vote.lbi 庫檔案 線上調查內容
screenshot.png 圖片檔案 用於後臺管理顯示安裝模板,必須使用.png格式。
style.css 樣式表文件 模板預設樣式表文件,裡面包含了模板的配置程式碼。
E-Commerce Online Shop 網上商店系統
9
3. 模板系統標籤說明
3.1. 變數調節標籤
3.1.1. escape [編碼]
引數位置 引數型別 必需 可用引數 預設 描述
1 string No html,url,quotes html 使用何種編碼格式。
描述:
用於html轉碼,url轉碼,在沒有轉碼的變數上轉換單引號,十六進位制轉碼,十六進位制美化轉碼。默
認是html轉碼。
例子:
{$articleTitle}
{$articleTitle|escape}
{$articleTitle|escape:"html"} {* escapes& " ' <> *}
{$articleTitle|escape:"url"}
{$articleTitle|escape:"quotes"}
3.1.2. nl2br [換行符替換成 <br />]
描述:
所有的換行符將被替換成 <br />.功能同PHP中的nl2br()函式一樣.
例子:
{$articleTitle|nl2br}
輸出:
Sun or rain expected<br />today, dark tonight
3.1.3. default [預設值]
引數位置 引數型別 必需 預設 描述
1 string No empty 這是變數為空的時候的預設輸出。
描述:
為空變數設定一個預設值。
當變數為空或者未分配的時候,將由給定的預設值替代輸出。
例子:
{$articleTitle|default:"no title"}
{$myTitle|default:"no title"}
輸出:
Dealers Will Hear Car Talk at Noon.
no title
E-Commerce Online Shop 網上商店系統
10
3.1.4. truncate [擷取]
引數位置 引數型別 是否必須 預設 描述
1 integer No 80 擷取字元的數量
2 string No ⋯ 擷取後追加在擷取詞後面的字串
3 boolean No false 是擷取到詞的邊界(假)還是精確到字元(真

描述:
從字串開始處擷取某長度的字元.預設是80個.
你也可以指定第二個引數作為追加在擷取字串後面的文字字串.該追加字串被計算在擷取長
度中。
預設情況下,smarty會擷取到一個詞的末尾。
如果你想要精確的擷取多少個字元,把第三個引數改為"true"
例子:
{$articleTitle}
{$articleTitle|truncate}
{$articleTitle|truncate:30}
{$articleTitle|truncate:30:""}
{$articleTitle|truncate:30:"---"}
{$articleTitle|truncate:30:"":true}
{$articleTitle|truncate:30:"...":true}
輸出:
Two Sisters Reunite after Eighteen Years at Checkout Counter.
Two Sisters Reunite after Eighteen Years at Checkout Counter.
Two Sisters Reunite after...
Two Sisters Reunite after
Two Sisters Reunite after---
Two Sisters Reunite after Eigh
Two Sisters Reunite after E...
3.1.5. strip_tags [去除html標籤]
描述:
去除<和>標籤,包括在<和>之間的任何內容.
例子:
{$articleTitle}
{$articleTitle|strip_tags}
輸出:
Blind Woman Gets <font face="helvetica">New Kidney</font> from Dad she Hasn't
Seen in <b>years</b>.
Blind Woman Gets New Kidney from Dad she Hasn't Seen in years.
E-Commerce Online Shop 網上商店系統
11
3.2. 控制標籤
3.2.1. if,elseif,else
描述:
Smarty 中的 if 語句和 php 中的 if 語句一樣靈活易用,並增加了幾個特性以適宜模板引擎. if
必須於 /if 成對出現. 可以使用 else 和 elseif 子句. 可以使用以下條件修飾詞:eq、ne、
neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、
div by、even by、odd by、==、!=、>、<、<=、>=. 使用這些修飾詞時必須和變數或常量用
空格格開.
例子:
{if $name eq "Fred"}
Welcome Sir.
{elseif $name eq "Wilma"}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
{* an example with "or" logic *}
{if $name eq "Fred" or $name eq "Wilma"}
...
{/if}
{* same as above *}
{if $name == "Fred" || $name == "Wilma"}
...
{/if}
{* the following syntax will NOT work, conditional qualifiers
must be separated from surrounding elements by spaces *}
{if $name=="Fred" || $name=="Wilma"}
...
{/if}
{* parenthesis are allowed *}
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
...
{/if}
{* you can also embed php function calls *}
{if count($var) gt 0}
...
{/if}
{* test if values are even or odd *}
{if $var is even}
...
{/if}
E-Commerce Online Shop 網上商店系統
12
{if $var is odd}
...
{/if}
{if $var is not odd}
...
{/if}
{* test if var is divisible by 4 *}
{if $var is div by 4}
...
{/if}
{* test if var is even, grouped by two. i.e.,
0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc. *}
{if $var is even by 2}
...
{/if}
{* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}
{if $var is even by 3}
...
{/if}
3.2.2. foreach,foreachelse
iteration:
iteration 用於顯示當前迴圈的執行次數[待考]
iteration 總是從 1 開始,每執行一次增加 1.[待考]
first:
當前 foreach 迴圈第一次執行時 first 被設定成 true.
last:
當前 foreach 迴圈執行到最後一遍時 last 被設定成 true.
show:
show 是 foreach 的一個引數. 取值為布林值 true 或 false. 如果指定為 false 該迴圈不顯示,
如果迴圈指定了 foreachelse 子句,該子句顯示與否也取決於 show 的取值.
total:
total 用於顯示迴圈執行的次數,可以在迴圈中或迴圈執行後呼叫.
屬性 型別 是否必須 預設值 描述
from string Yes n/a 待迴圈陣列的名稱
item string Yes n/a 當前處理元素的變數名稱
key string No n/a 當前處理元素的鍵名
name string No n/a 該迴圈的名稱,用於訪問該迴圈
描述:
foreach 是除 section 之外處理迴圈的另一種方案(根據不同需要選擇不同的方案).
E-Commerce Online Shop 網上商店系統
13
foreach 用於處理簡單陣列(陣列中的元素的型別一致),它的格式比 section 簡單許多,缺點
是隻能處理簡單陣列.
foreach 必須和 /foreach 成對使用,且必須指定 from 和 item 屬性.
name 屬性可以任意指定(字母、數字和下劃線的組合).
foreach 可以巢狀,但必須保證巢狀中的 foreach 名稱唯一.
from 屬性(通常是陣列)決定迴圈的次數.
foreachelse 語句在 from 變數沒有值的時候被執行.
例子1:
{* 該例將輸出陣列 $custid 中的所有元素的值 *}
{foreach from=$custid item=curr_id}
id: {$curr_id}<br>
{/foreach}
輸出:
id: 1000<br>
id: 1001<br>
id: 1002<br>
例子2:
{* The key contains the key for each looped value
assignment looks like this:
$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));
*}
{* 鍵就是陣列的下標,請參看關於陣列的解釋 *}
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}<br>
{/foreach}
{/foreach}
輸出:
phone: 1<br>
fax: 2<br>
cell: 3<br>
phone: 555-4444<br>
fax: 555-3333<br>
cell: 760-1234<br>
foreach 迴圈有自己的變數名,使用該變數名可以訪問該迴圈. 使用方法為
{$smarty.foreach.foreachname.varname},其中 foreachname 即在 foreach 中指定的
name 屬性.
E-Commerce Online Shop 網上商店系統
14
3.3. 顯示標籤
3.3.1. cycle
屬性 型別 是否必須 預設值 描述
name string No default 輪轉的名稱
values mixed Yes N/A 待輪轉的值,可以是用逗號分隔的列表(請檢視
delimiter 屬性)或一個包含多值的陣列.
print boolean No true 是否輸出值
advance boolean No true 是否使用下一個值(為 false 時使用當前值)
delimiter string No , 指出values 屬性中使用的分隔符,預設是逗號.
assign string No n/a 輸出值將被賦給模板變數的名稱
描述:
Cycle 用於輪轉使用一組值. 該特性使得在表格中交替輸出顏色或輪轉使用陣列中的值變得很
容易.
如果需要在模板中使用多個輪轉,需要給出唯一的 name 屬性.
使用者可以設定 print 屬性為 false 強制不輸出當前值. 該特性可以很方便地略過某個值.
advance 屬性用於重複使用某個值. 當該屬性設定為 false 時,下次呼叫該輪轉時將輸出同樣
的值.
如果指定了 "assign" 這個特殊屬性,該輪轉的輸出值將被賦給由 assign 指定的模板變數,而
不是直接輸出.
例子:
{section name=rows loop=$data}
<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}">
<td>{$data[rows]}</td>
</tr>
{/section}
輸出:
<tr bgcolor="#eeeeee">
<td>1</td>
</tr>
<tr bgcolor="#d0d0d0">
<td>2</td>
</tr>
<tr bgcolor="#eeeeee">
<td>3</td>
</tr>
E-Commerce Online Shop 網上商店系統
15
3.3.2. html_options
屬性 型別 是否必須 預設值 描述
values array Yes, unless using
options attribute
n/a 包含下拉列表各元素值的陣列
output array Yes, unless using
options attribute
n/a 包含下拉列表各元素顯示值的陣列
selected string/array No empty 已選定的元素或元素陣列
options associative
array
Yes, unless using
values and output
n/a 包含值和顯示的關聯陣列
name string No empty 下拉選單的名稱
描述:
自定義函式 html_options 根據給定的資料建立選項組. 該函式可以指定哪些元素被選定. 要麼
必須指定 values 和 ouput 屬性,要麼指定 options 替代.
如果給定值是陣列,將作為 OPTGROUP 處理,且支援遞迴. 所有的輸出與 XHTML 相容.
如果指定了可選屬性 name,該選項列表將將被置於<select name="groupname"></select>
標籤對中. 如果沒有指定,那麼只產生選項列表.
上表未提到的其它引數在 <select> 標籤中以"名稱/屬性"對的方式顯示. 如果沒有指定可選屬
性 name 這些引數將被忽略.
例子:
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('cust_ids', array(1000,1001,1002,1003));
$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
Johnson','Carlie Brown'));
$smarty->assign('customer_id', 1001);
$smarty->display('index.tpl');
index.tpl:
<select name=customer_id>
{html_options values=$cust_ids selected=$customer_id output=$cust_names}
</select>
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('cust_options', array(
1001 => 'Joe Schmoe',
1002 => 'Jack Smith',
1003 => 'Jane Johnson',
1004 => 'Charlie Brown'));
$smarty->assign('customer_id', 1001);
$smarty->display('index.tpl');
E-Commerce Online Shop 網上商店系統
16
index.tpl:
<select name=customer_id>
{html_options options=$cust_options selected=$customer_id}
</select>
輸出:
<select name=customer_id>
<option value="1000">Joe Schmoe</option>
<option value="1001" selected="selected">Jack Smith</option>
<option value="1002">Jane Johnson</option>
<option value="1003">Charlie Brown</option>
</select>
3.3.3. html_select_date
屬性 型別 是否必須 預設值 描述
prefix string No Date_ 變數名稱字首
time timestamp/
YYYY-MMDD
No UNIX時間戳
或年-月-日
使用時間型別(data/time)
start_year string No 年份或與當前
年份的相對值
下拉列表中第一個年份,或
與當前年份的相對值(正/負
幾年)
end_year string No 同start_year 下拉列表中最後一個年份,
或與當前年份的相對值(正/
負 幾年)
display_days boolean No true 是否顯示天
display_months boolean No true 是否顯示月
display_years boolean No true 是否顯示年
month_format string No %B 月份的表示方法(strftime)
day_format string No %02d 天顯示的格式(sprintf)
day_value_format string No %d 天的表示方法(sprintf)
year_as_text boolean No false 是否以文字方式顯示年份
reverse_years boolean No false 逆序顯示年份
field_array string No null 如果指定了名稱,選定的區
域將以[Day],[Year],[Month]
的形式返回給PHP(待考)
day_size string No null 如果給定,為標籤新增大小
屬性
month_size string No null 如果給定,為標籤新增大小
屬性
year_size string No null 如果給定,為標籤新增大小
屬性
all_extra string No null 如果給定,為所有標籤新增
附加屬性
day_extra string No null 如果給定,為標籤新增附加
屬性
month_extra string No null 如果給定,為標籤新增附加
屬性
E-Commerce Online Shop 網上商店系統
17
year_extra string No null 如果給定,為標籤新增附加
屬性
field_order string No MDY 顯示區域的順序
field_separator string No \n 各區域間輸出的分隔字串
month_value_format string No %m 月份值的strftime表示方法
,預設為 %m
描述:
自定義函式 html_select_date 用於建立日期下拉選單. 它可以顯示任意年月日.
例子:
{html_select_date}
輸出:
<select name="Date_Month">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12" selected>December</option>
</select>
<select name="Date_Day">
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13" selected>13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
E-Commerce Online Shop 網上商店系統
18
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="Date_Year">
<option value="2001" selected>2001</option>
</select>
例子:
{* start and end year can be relative to current year *}
{html_select_date prefix="StartDate" time=$time start_year="-5" end_year="+1"
display_days=false}
輸出:
<select name="StartDateMonth">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12" selected>December</option>
</select>
<select name="StartDateYear">
<option value="1999">1995</option>
<option value="1999">1996</option>
<option value="1999">1997</option>
<option value="1999">1998</option>
<option value="1999">1999</option>
<option value="2000" selected>2000</option>
<option value="2001">2001</option>
</select>
E-Commerce Online Shop 網上商店系統
19
3.3.4. html_radios
屬性 型別 是否必須 預設值 描述
name string No radio 單選按鈕列表的名稱
values array Yes, 或指定
options 屬性
n/a 包含單選按鈕值的陣列
output array Yes, 或指定
options 屬性
n/a 包含單選按鈕顯示值的陣列
checked string No empty 已選定的元素
options associative
array
Yes, 或指定
values 屬性
n/a 包含值和顯示的關聯陣列
separator string No empty 分隔每個單選按鈕的字串
描述:
自定義函式 html_radios 根據給定的資料建立單選按鈕組. 該函式可以指定哪個元素被選定.
要麼必須指定 values 和 ouput 屬性,要麼指定 options 替代. 所有的輸出與 XHTML 相容.
上表未提到的其它引數在 <input> 標籤中以"名稱/屬性"對的方式顯示.
例子:
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('cust_ids', array(1000,1001,1002,1003));
$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
Johnson','Carlie Brown'));
$smarty->assign('customer_id', 1001);
$smarty->display('index.tpl');
index.tpl:
{html_radios values=$cust_ids checked=$customer_id output=$cust_names
separator="<br />"}
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('cust_radios', array(
1001 => 'Joe Schmoe',
1002 => 'Jack Smith',
1003 => 'Jane Johnson',
1004 => 'Charlie Brown'));
$smarty->assign('customer_id', 1001);
$smarty->display('index.tpl');
index.tpl:
E-Commerce Online Shop 網上商店系統
20
{html_radios name="id" options=$cust_radios checked=$customer_id separator="<br />"}
輸出:
<input type="radio" name="id[]" value="1000">Joe Schmoe<br />
<input type="radio" name="id[]" value="1001" checked="checked"><br />
<input type="radio" name="id[]" value="1002">Jane Johnson<br />
<input type="radio" name="id[]" value="1003">Charlie Brown<br />
E-Commerce Online Shop 網上商店系統
21
3.3.5. html_select_time
屬性 型別 是否必須 預設值 描述
prefix string No Time_ 變數名稱字首
time timestamp No UNIX時間戳
或年-月-日
使用時間型別(data/time)
display_hours boolean No true 是否顯示小時
display_minutes boolean No true 是否顯示分鐘
display_seconds boolean No true 是否顯示秒
display_meridian boolean No true 是否顯示正午界(上午/下午)
use_24_hours boolean No true 是否使用24小時制
minute_interval integer No 1 分鐘下拉列表的間隔
second_interval integer No 1 秒鐘下拉列表的間隔
field_array string No n/a 輸出值到該值指定的陣列
all_extra string No null 如果給定,為標籤新增附加屬性
hour_extra string No null 如果給定,為標籤新增附加屬性
minute_extra string No null 如果給定,為標籤新增附加屬性
second_extra string No null 如果給定,為標籤新增附加屬性
meridian_extra string No null 如果給定,為標籤新增附加屬性
描述:
自定義函式 html_select_time 用於建立時間下拉選單. 它可以顯示任意時分秒.
例子:
{html_select_time use_24_hours=true}
輸出:
<select name="Time_Hour">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09" selected>09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
E-Commerce Online Shop 網上商店系統
22
<option value="23">23</option>
</select>
<select name="Time_Minute">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20" selected>20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
E-Commerce Online Shop 網上商店系統
23
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
</select>
<select name="Time_Second">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23" selected>23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
E-Commerce Online Shop 網上商店系統
24
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
</select>
<select name="Time_Meridian">
<option value="am" selected>AM</option>
<option value="pm">PM</option>
</select>
E-Commerce Online Shop 網上商店系統
25
3.4. 輔助標籤
3.4.1. assign
描述:
assign 用於在模板被執行時為模板變數賦值.
屬性 型別 是否必須 預設值 描述
var string Yes n/a 被賦值的變數名
value string Yes n/a 賦給變數的值
描述:
assign 用於在模板被執行時為模板變數賦值.
例子:
{assign var="name" value="Bob"}
輸出:
The value of $name is Bob.
3.4.2. Include
屬性 型別 是否必須 預設值 描述
file string Yes n/a 待包含的模板檔名
assign string No n/a 該屬性指定一個變數儲存待包含模板的輸出
[var ...] [var type] No n/a 傳遞給待包含模板的本地引數,只在待包含模
板中有效
描述:
Include 標籤用於在當前模板中包含其它模板. 當前模板中的變數在被包含的模板中可用. 必須
指定 file 屬性,該屬性指明模板資源的位置.
如果設定了 assign 屬性,該屬性對應的變數名用於儲存待包含模板的輸出,這樣待包含模板
的輸出就不會直接顯示了。
例子1:
{include file="header.tpl"}
{* body of template goes here *}
{include file="footer.tpl"}
可以在屬性中傳遞引數給待包含模板. 傳遞給待包含模板的引數只在待包含模板中可見. 如果傳
遞的引數在待包含模板中有同名變數,那麼該變數被傳遞的引數替代.
例子2:
{include file="header.tpl" title="Main Menu" table_bgcolor="#c0c0c0"}
{* body of template goes here *}
{include file="footer.tpl" logo="
http://my.domain.com/logo.gif
"}
包含 $template_dir 資料夾之外的模板請使用 模板資源 說明的格式.
E-Commerce Online Shop 網上商店系統
26
例子3:
{* absolute filepath *}
{include file="/usr/local/include/templates/header.tpl"}
{* absolute filepath (same thing) *}
{include file="file:/usr/local/include/templates/header.tpl"}
{* windows absolute filepath (MUST use "file:" prefix) *}
{include file="file:C:/www/pub/templates/header.tpl"}
{* include from template resource named "db" *}
{include file="db:header.tpl"}