牛骨文教育服务平台(让学习变的简单)

第十课 模板标签

之前我们讲了不少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 都在libwebjsjspackage_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是一个十分重要的标签,属性无任何先后顺序,一定要掌握好,它的属性如下,平时用时多看看这个表:

在属性中如果遇到下面的符号,一定要注意转换,这一点十分重要,也是初学者容易犯的错误

我在这边以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的标签用法相互组合很多,以上我列举了两种用法,其他在使用中再说明。

如有不明白的地方,留言或是加入我们 “三众技术QQ交流群”一起讨论

关于我们

三众科技资讯平台——大道至简,悦你所阅!
>本教程由三众简悦原创,转载请注明出处,作者:bobball,由bobo整理成牛骨文书籍

三众技术交流群:543102562

欢迎大家加入我们,共同讨论IT,互联网技术。同时可以扫描下面的二维码关注我们,谢谢!

三众科技服务号