>[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)