tag()参数详解
在了解destoon tag()的参数,可以先打开destoon官方的 标签调用手册,便于我们接下来的学习。
这是一个 destoon 默认首页模板index.htm中的标签
<!--{tag("moduleid=6&condition=status=3&areaid=$cityid&pagesize=".$DT['page_trade']."&datetype=2&target=_blank&order=addtime desc")}-->
在tag(" 这里面的都是参数"),传输参数的方式是: &参数名=参数值,第一个参数省略&符号。
tag()的参数,分类必须参数和可选参数两种
必须参数:
moduleid:
示例: moduleid=6,表示调用的是求购频道的内容,调用其它频道的内容只需要将6改成对应的频道id即可,频道Id可以destoon后台的系统维护,模块管理中查看。
table:
示例:table=buy_6,和moduleid=6效果是一样的,也表示调用的是求购频道的内容,不同的是table传的值直接是表名,并且不带表前缀,如果要调用其它表的内容只需要将buy_6替换成对应的表名即可。
注: tag()的必须参数一共就moduleid,table两个,而且这两个是二选一,只能同时使用其中的一个,moduleid用来调用各大频道主表的内容,如果要调用非频道主表的内容就得使用table直接传表名了。
可选参数:
condition:
示例:&condition=status=3,conditon使用度和moduleid是几乎一样的,只要是tag()标签中都会传这个参数,这个参数的作用是将传入的值直接作为sql条件进行数据库内容筛选。比如我们示例中的 &condition=status=3,php解析后就是 where status=3。、
condition是可以无限传条件的,有多少都可以往这里传,比如:&condition=status=3 and level>0 and vip>0 and itemid>100 and itemid<1000
这是传的标准的sql语句。
如果您是小白,不懂啥是sql。举个简单的示例:我们要调用供应频道的已审核的信息,并且这信息要是推荐的,还得是vip会员发布的。那么首先我们构建tag标签语句,<!--{tag("")}-->,然后传入第一个参数 moduleid=5,供应频道的id是5;当然也可以用table=sell_5替代。
<!--{tag("moduleid=5")}-->
第二步传入condition筛选我们需要要的数据
<!--{tag("moduleid=5&condition=")}-->
条件一:已审核的信息,换成sql语句就是 status=3
<!--{tag("moduleid=5&condition=status=3")}-->
条件二:推荐的信息,换成sql语句是 level>0,如果是调用指定推荐级别的,如推荐2的, level=2
<!--{tag("moduleid=5&condition=status=3 and level>0")}-->
因为level 是第二个条件了,所以我们得用and来连接,并且and 前后都必须有空格,没有的话就会报错,condtion的值,从第二个条件开始都要用and来连接。
条件三:vip会员发布的信息,换成sql语句就是 vip>0,如果要指定vip级别,如1 就是 vip=1
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0")}-->
通过本示例,相信大家已经学会如何信condition传值调用我们想要的信息了。
常用的一些condition条件:
已审核:status=3, 推荐的:level>0,vip会员的:vip>0, 有缩略图的:thumb<>'', 指定会员组的:groupid=6
pagesize:
怎么传条件我们已经学会了,但是我们调出来的内容还得限制数量不是吗?pagesize就是用来指定数量的。
示例:
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20")}-->
调多少条就写&pagesize=20 是多少就行了。这个参数没啥好解释的。
另外pagesize 有一个搭配使用的参数叫 offset,写法是&offset=10, 作用是从第一几条开始调用。
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20&offset=10")}-->
表示从10条开始调用,往后调20条信息出来。
提示:pagesize 如果不传,tag()会员默认调用10条信息。
order:
tag()的排序参数,用法:&order=addtime desc,edittime desc,可以多个排序字段连接,用,隔开。
示例:
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20&offset=10&order=addtime desc,edittime desc")}-->
常用排序方法:
添加时间降序:addtime desc,倒序:addtime asc
修改时间降序:edittime desc ,倒序: edittime asc
推荐级别降序:level desc,倒序:level asc
vip级别降序:vip desc,倒序:vip asc
提示:order如果不传,就会默认使用mysql的排序,destoon是没有封装order默认排序的。
template:
标签模板参数,指给当前tag()调用出来的内容赋给给一个循环模板展示,使用方法:&template=list-sell
标签模板存放在模板目录的 tag目录下面,我们要调用哪个模板就&template=模板文件名, 文件名不带.htm
示例:
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20&offset=10&order=addtime desc,edittime desc&template=list-sell")}-->
不传template参数,tag()函数会默认调用tag目录下的list.htm模板。
不调用标签模板,在当前页面自定义模板,template的值设为null: &template=null
然后标签语句也得做相应的修改,用loop在当前页面循环,具体请看上一节课的详细介绍。
fields:
fields指查询的字段,默认为*。可以传递例如 fields=title,addtime,但是一般情况下无需传递,Destoon独有的标签缓存机制会自动缓存查询结果,不必担心效率问题。
以上是官方的介绍,看了也能明白了,就是循环模板中要调用哪些字段,就把哪些字段用,隔开传给fields。
示例:
<!--{tag("moduleid=5&condition=status=3 and level>0 and vip>0&pagesize=20&offset=10&lields=title,addtime,&order=addtime desc,edittime desc&template=list-sell")}-->
以上的参数是比较重要的一些可选参数,下面部分参数都是一些不常用的,解释就比较简单了,大家请自行研究实验。
catid:
调用指定分类下的信息,用法&catid=10
areaid:
调用指定地区的信息,用法:&areaid=1, 一般用来调用当前分站的信息,如:&areaid=$cityid
showcat:
需要调用当前信息的分类名称和分类连接时传入,用法:&showcat=1 showcat的值只能是1
然后标签模板中调用 {$t[caturl]} 分类连接,{$t[catname]} 分类名称
showpage 和 page:
tag()自带的分页参数,showpage和page必须一起使用才能正常分页,使用方法: &showpage=1&page=$page, 参数值是固定的。
然后在标签模板中传入 {$pages} 即可实现分页。
提示:tag()使用showpage和page时,必须使用标签模板,template的值不能为null,
length:
控制标题长度用的,用法:&length=20,表示标题长度为20个字符,10个汉字。
debug:
debug参数用于调试标签,例如传递&debug=1, 系统将输出标签构造成的SQL语句,以便验证标签写法是否正确,不需要调试的标签不用加此参数。
自定义参数:
自定义参数只能在标签模板方式下使用,在当前页面自定义循环模板是无效的。
使用方法: &参数名=参数值,如:&dtmoban=123456, 在标签模板中使用 {$dtmoban} 调出的值便是 123456
本节小结:
本节课主要掌握destoon tag()函数的常用自定义参数。
但是同学们在做模板时经常会遇到参数传值造成页面出错,那么我们如何给参数正确的传值呢?下节课我将为大家专门讲解。