>[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是一个十分重要的标签,属性无任何先后顺序,一定要掌握好,它的属性如下,平时用时多看看这个表:
![](http://it.sunzoon.com/wp-content/uploads/2016/07/20160803155559.png)![](http://it.sunzoon.com/wp-content/uploads/2016/07/20160803160124.png)
>[danger]在属性中如果遇到下面的符号,一定要注意转换,这一点十分重要,也是初学者容易犯的错误
![](http://it.sunzoon.com/wp-content/uploads/2016/07/20160803160849.png)
我在这边以iWebShop的goods表为例,以下例子从goods表中按id降序排序后取前面5条数据,最后显示出来。
~~~
{query:name=goods limit=5 order=id desc}
{$item['name']}<br/>
{/query}
~~~
标签后输出如下:5条商品的名称
![](http://it.sunzoon.com/wp-content/uploads/2016/07/20160803175545.png)
分页显示采用标签:{$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()}
~~~
以上代码显示效果如下:
![](http://it.sunzoon.com/wp-content/uploads/2016/07/20160803180021.png)
由于query的标签用法相互组合很多,以上我列举了两种用法,其他在使用中再说明。
>[warning]如有不明白的地方,留言或是加入我们 “三众技术QQ交流群”一起讨论
## 关于我们
>[danger][三众科技](http://www.sunzoon.com)资讯平台——大道至简,悦你所阅!
>本教程由[三众简悦](http://it.sunzoon.com)原创,转载请注明出处,作者:bobball,由bobo整理成看云书籍
三众技术交流群:**543102562**
欢迎大家加入我们,共同讨论IT,互联网技术。同时可以扫描下面的二维码关注我们,谢谢!
![三众科技服务号](http://it.sunzoon.com/wp-content/uploads/2016/06/qrcode_for_gh_401d25b05314_344.jpg)