>[danger]之前我們講了不少iWebShop的運行原理,這節課就來講解一下模板標簽的使用,標簽的開發是必不可少的一部分,主要負責數據顯示,讀取數據,顯示路徑等等。
## 一、標簽格式
iWebShop的標簽格式為{標簽名:屬性},相對于其他的一些模板來說,比較簡潔
比如以下代碼,set為標簽名,$catId =3為屬性,表示把3的賦值給$catId
~~~
{set:$catId =3}
~~~
## 二、輸出類標簽
在iWebShop標簽中,可采用{$name}的方法,直接輸出變量$name的值。也可以采用{echo:name}輸出變量name的值,注意使用echo標簽時,不帶變量符號$
舉例說明:
~~~
{$name}//輸出變量$name
{echo:"IWEB"}//輸出字符串 IWEB
{echo:name}//輸出變量$name
~~~
## 三、地址路徑類標簽
### url標簽
{url:path} 通過 path 轉換為系統統一的路徑,path由控制器(Controller)/動作(action)組成,可以在這后面追加參數,以”/”為分隔符,按照/變量名/變量值的形式加到后面。例如你要訪問 site.php 控制器下面的 index.html,就可以在模板里面寫
~~~
<a href="{url:/site/index}">首頁</a>
~~~
使用該方式定義鏈接地址,無論以后改成偽靜態還是其他方式,鏈接都能正確顯示。
### webroot標簽
{webroot:file}表示iWebShop 根目錄下的路徑,此標簽就是專門引入資源文件時候使用的。比如要引用根目錄下的 image 目錄下的 logo.png 文件,那么可以使用
~~~
<img src="{webroot:image/logo.png}"/>
~~~
### theme標簽
{theme:file}表示 當前主題目錄下的路徑
iWebshop是個多主題的商城系統,我們可以在views下面放我們自定義的主題名稱的目錄,theme則表示當前的主題的根目錄,比如你使用的是默認模板,{theme:}則表示iwebshop/views/default/這個路徑。
例如:?iwebshop/views/default/javascript/sunzoon.js則用標簽這么表示:
{theme:javascript/sunzoon.js}
### skin標簽
{skin:file}表示從當前皮膚目錄下的路徑
iWebshop是個支持多皮膚的商城系統,{skin:}表示當前主題使用的皮膚根目錄。如要引用當前皮膚下的css目錄的style.css,則這樣表示:
~~~
<link rel="stylesheet" href="{skin:css/style.css}" />
~~~
### js標簽
{js:name}表示 iWebShop 系統內置 JS
iWebShop 系統默認提供了大量的優秀 JS 工具和插件,比如日歷,jquery,artDialog 彈出框 UI,artTemplate模板引擎等等…所有系統內置的 JS 都在\lib\web\js\jspackage_class.php 有興趣的用戶可以自己擴展一些常用工具,在模板里面引用更為簡單。
如:引用 jquery 則可寫成{js:jquery},編譯運行之后,生成的目錄文件如下:
~~~
<script type="text/javascript" charset="UTF-8" src="/runtime/_systemjs/jquery/jquery-1.11.3.min.js">
~~~
關于iWebShop 系統默認提供的 JS 工具,我們會在下節課中詳細說明。
## 四、自定義PHP代碼標簽
{set: expression}?此標簽是一個簡單的標簽,expression表示php代碼。
例如:{set:$name = "sunzoon";} 表示把字符串sunzoon賦值給$name
{set:$num=90}表示把數字90賦值給$num
## 五、判斷類標簽
相當于php中的if , 如果條件成立,則執行語句,判斷標簽的格式如下:
`{if: condition} expression {elseif:condition} expression {else:} expression {/if}`
condition表示條件,expression可以是要執行標簽或是要輸出的內容。例如:
~~~
{set:$num=90}
{if:$num>=90}
優秀
{elseif:$num>=70}
良好
{elseif:$num>=60}
及格
{else:}
不及格
{/if}
~~~
以上標簽最后輸出:?優秀。
## 六、循環類標簽
### WHILE循環標簽
相當于PHP中while的用法,當條件成立,則執行語句,標簽格式:
`{while:condition}expression{/while}`
condition表示條件,expression可以是要執行標簽或是要輸出的內容。例如:
~~~
{set:$num=100;}
{while:$num-->0}
{$num},
{/while}
~~~
以上標簽最后輸出: 100,99,98,97,…….3,2,1,
### FOR循環標簽
標簽的格式為:{for:attribute}{/for}
for 標簽attribute說明:
From: 可選 默認 1,表示 從那一個值開始。
Upto: 可選 默認 10 ,表示最大到那一個值。
Downto: 可選 默認 0,表示最小到那一個值。
Step: 可選 默認 1,每次循環 步幅
Item: 可選 默認為 i ,表示輸出的變量名。
以下的例子:變量$num從10開始,循環一直到值為0,每次循環減2,輸出$num,
~~~
{for:from=10 downto=0 step =-2 item=$num}
{$num},
{/for}
~~~
輸出的結果為:10,8,6,4,2,0,
### FOREACH 循環標簽
標簽的格式為:{foreach:attribute}{/foreach}
for 標簽attribute 屬性說明:
items:必選 ,表示要遍歷的數組
key:可選 ,默認為 key,表示數組的序號,從0開始。
item:可選, 默認 為item ,數組每一項的值
以下例子,輸出數組的序號和每一項。
~~~
{set:$numbers = array(1,2,6,7)}
{foreach:items = $numbers key=$k item=$v}
key:{$k}---value:{$v}<br/>
{/foreach}
~~~
輸出的結果為:
key:0—value:1
key:1—value:2
key:2—value:6
key:3—value:7
## 七、query查詢類標簽
標簽的格式為:{query:attribute}{/query}
query是一個十分重要的標簽,屬性無任何先后順序,一定要掌握好,它的屬性如下,平時用時多看看這個表:

>[danger]在屬性中如果遇到下面的符號,一定要注意轉換,這一點十分重要,也是初學者容易犯的錯誤

我在這邊以iWebShop的goods表為例,以下例子從goods表中按id降序排序后取前面5條數據,最后顯示出來。
~~~
{query:name=goods limit=5 order=id desc}
{$item['name']}<br/>
{/query}
~~~
標簽后輸出如下:5條商品的名稱

分頁顯示采用標簽:{$query->getPageBar()},以下例子從goods取出數據,每頁5條,并且在底部輸出分頁。
~~~
{set:$page=IReq::get('page')==null?1:IReq::get('page');}
{query:name=goods page=$page pagesize=5}
{$key}:{$item['name']}<br/>
{/query}
{$query->getPageBar()}
~~~
以上代碼顯示效果如下:

由于query的標簽用法相互組合很多,以上我列舉了兩種用法,其他在使用中再說明。
>[warning]如有不明白的地方,留言或是加入我們?“三眾技術QQ交流群”一起討論
## 關于我們
>[danger][三眾科技](http://www.sunzoon.com)資訊平臺——大道至簡,悅你所閱!
>本教程由[三眾簡悅](http://it.sunzoon.com)原創,轉載請注明出處,作者:bobball,由bobo整理成看云書籍
三眾技術交流群:**543102562**
歡迎大家加入我們,共同討論IT,互聯網技術。同時可以掃描下面的二維碼關注我們,謝謝!
