我们在SupeSite系统的每个模板里,都可以看到类似的一段代码:
<!--{block name="spacenews" parameter="dateline/2592000/haveattach/1/showattach/1/order/i.viewnum DESC/showdetail/1/messagelen/180/messagedot/1/limit/0,1/cachetime/98800/subjectlen/30/cachename/hotnews/tpl/data"}-->
<div id="topicnews" class="block" style="height: 240px; overflow: hidden;">
<h3>月点击图文头条</h3>
<!--{loop $_SBLOCK[hotnews] $value}-->
<p class="blockintro"><a href="$value[url]"><img src="$value[a_thumbpath]" class="blockintroimg" alt="$value[subject]" /></a>$value[message]...<a href="$value[url]">阅读更多</a></p>
<!--{/loop}-->
</div>
这里为大家解释下这段代码的作用,相信大家看完这篇文章之后可以比较深入了解 SupeSite 模板机制,从而更加方便地进行模板修改,也可以更加灵活地进行数据调用。
一、
<!--{block name="spacenews" parameter="dateline/2592000/haveattach/1/showattach/1/order/i.viewnum DESC/showdetail/1/messagelen/180/messagedot/1/limit/0,1/cachetime/98800/subjectlen/30/cachename/hotnews/tpl/data"}-->
包含两个部分的内容:
1、根据 parameter 后面给出的参数在数据库里查询某个数据表,将查询到的所有资源存放到 $_SBLOCK[变量名] 数组里。通俗的说法是,这段代码相当与一段SQL的 select 语句,查询的数据表是 name 后面的参数,查询的条件是 parameter 后面的参数,最后查询的果存放到 $_SBLOCK[变量名] ,变量名是 cachename 后面的参数。
2、确定这部分数据的缓存时间:cachetime后面的参数,单位是秒;确定这部分数据在页面的显示模板:tpl后面的参数,如:data,那么这段数据显示的模板是:.stylesdata.html.php。大家可以看到 .stylesdata.html.php 这个文件夹里没有定义任何样式,所以必须在 block 代码下方定义样式。
二、
<!--{loop $_SBLOCK[hotnews] $value}-->
...
<!--{/loop}-->
loop 的含义是:将 $_SBLOCK[hotnews] 数组里的资源,逐一存放到 $value 数组里。注意:loop 和 foreach() 函数的作用一样。
三、
<p class="blockintro"><a href="$value[url]"><img src="$value[a_thumbpath]" class="blockintroimg" alt="$value[subject]" /></a>$value[message]...<a href="$value[url]">阅读更多</a></p>
这一段内容,都是 html 标签,<a href="$value[url]">...</a>,含义是在页面展示一个 a 标签,a标签的指向是 $value[url]。一般情况下,我们都不知道 $value[] 数组里存放的内容是什么,我们可以应用的元素有哪些。这时,我们可以使用这个语句将 $value[] 数组打印到页面上。<!--{eval print_r($value);}-->
四、
为大家介绍常用的 parameter 参数含义:
order------------------------------以什么方式排序,常见的排序方式如下几种:
displayorder--------------以后台设置的显示顺序排序
views DESC----------------以查看数递减的方式排序
replies DESC--------------以回复数递减的方式排序
posts DESC----------------以帖子数递减的方式排序
m.posts DESC--------------以会员贴子数递减的方式排序
m.oltime DESC-------------以会员在线时间递减的方式排序
u.dateline DESC-----------以会员注册时间递减的方式排序
i.goodrate DESC-----------以信息好评数递减的方式排序
u.spaceallnum DESC--------以会员个人空间的信息总数递减排序
u.spaceblognum DESC-------以会员个人空间的日志总数递减排序
g.usernum DESC------------以圈子会员数递减的方式排序
g.lastpost DESC-----------以圈子最后更新时间递减的方式排序
limit------------------------------显示多少条信息
0,100---------------------显示100条
dateline---------------------------发布时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
showdetail-------------------------是否显示信息摘要
1-------------------------1为显示(0为不显示)
messagelen-------------------------摘要显示的长度,以字节数为单位
160-----------------------显示160个字节信息
subjectlen-------------------------主题的显示长度,以字节数为单位
40------------------------显示40个字节信息
type-------------------------------设置信息的类型
forum---------------------二级版块的信息
goods---------------------商品的信息
news----------------------资讯的信息
video---------------------影音的信息
filetype---------------------------设置附件的类型
image---------------------图片附件
lastpost---------------------------最后回复时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
subjectdot-------------------------显示主题时,如果主题长度大于显示长度,末尾是否加点
1-------------------------末尾加点(0为末尾不加点)
messagedot-------------------------显示摘要时,如果摘要长度大于显示长度,末尾是否加点
1-------------------------末尾加点(0为末尾不加点)
showattach-------------------------是否显示附件信息
1-------------------------显示附件信息
haveattach-------------------------是否必须包含附件
1-------------------------必须包含附件
isstar-----------------------------空间之星
1-------------------------是
perpage----------------------------每页显示的信息条数
15------------------------显示15条
regdate----------------------------注册时间范围,以秒(s)为单位
2592000-------------------2592000秒,即:3天
再给大家介绍一个技巧:一般可以通过英文意思来判断参数的含义,例如subjectlen,是subject length,即:主题长度。
以上给大家介绍的是调用 spacenews 表里的信息,即资讯的信息。另外SupeSite 可以和 Discuz! 完美整合,如此在 SupeSite 里同样可以调用 Discuz! 的数据。