Discuz!使用问题、建议、BUG等请到论坛反馈以便获得及时帮助,大型问题建议走付费途径。

模块是对数据库中的数据进行调用的,有向导模式与高级模式两种方式。向导模式可满足用户的大部分要求,通过一步步的设置即可完成。高级模式是通过SQL的形式来进行数据调用,更灵活。模块生成的调用代码又可为内部调用代码与JS调用代码。内部调用代码只可放置于 SupeSite 系统内部模板中。JavaScript 调用,与内部调用代码的效果相同,但可以放置于任何站点的任何页面。数据调用采用自动批量缓存并按指定的时间间隔进行周期更新的机制,效率高,占有服务器资源少,速度快。

通过创建的模块代码,并放置于模板中加以使用,就可以实现对 SupeSite、Discuz 或 UCenter Home 上面的数据灵活显示。

1、后台 => 模块管理 => 创建模块,如图:

选择“资讯”,创建一个调用最新发布的资讯列表,共调用5条,如图:

频道名,选择是调用资讯或其他复制频道的内容。

向导模式,选择“高级模式”,需要自己写 SQL 语句来调用数据;选择“向导模式”,程序会根据所做的过滤设置调用数据。对于刚刚接触 SupeSite 的用户,建议使用“向导模式”。

2、过滤设置:设置对于资讯数据的调用过滤条件,可以根据实际的需要去做调整。不设置过滤条件,则调用全部的资讯数据。本例中没有限定资讯的过滤条件,则不用设置。如图:

3、排序设置:设置数据的显示顺序。可以依据发布时间、回复时间、查看数、回复数、精华级别来排序,排序的规则有:递增和递减。可以设置三个排序依据,第一排序的优先级最高,第二、第三的优先级递减。本例中要创建的为“最新资讯”,所以这里设置第一排序为“发布时间”,“递减”,则表明调用出的数据为最新的资讯。如图:

4、数据设置:设置调用数据的条数,如果要调用指定条数的数据,请选择“显示指定数目的信息”;如果需要分页显示调用的数据,请选择“读取所有满足条件的信息,并分页显示”。

当选择“显示指定数目的信息”时,需要设置“起始数据行数”及“显示数据条数”。本例中需要调用最新的 5 条资讯,则“起始数据行数”设置为 0 ,“显示数据条数”设置为 5 ,这样调用出来的数据就是前 5 条数据。如图:

当选择“读取所有满足条件的信息,并分页显示”时,需要设置“每页显示数目”,例如设置为10,就表示一页需要显示 10 条数据。启用数据分页显示后,在下面的“显示风格”配置环节,您必须指定“变量名”,并且模块风格文件只能选择“只获取数据”,此外,缓存更新时间设置将无效,数据不会被缓存。列表信息将储存到 $_SBLOCK[变量名] 变量中,分页信息将储存到 $_SBLOCK[变量名_multipage] 变量中,您只需要在模板中对列表变量、分页变量加以灵活利用就可以了。如图:

5、缓存设置和显示处理

缓存设置:设置数据缓存更新的时间间隔,默认为900,单位秒,即15分钟。数据设置选择“读取所有满足条件的信息,并分页显示”时,缓存更新时间设置将无效,数据不会被缓存。

显示处理:设置是否需要读取某些信息。

标题长度:设置数据调用后,将标题要截取的长度,单位字节。例如设置为20,则表示查询出的文章标题被截取为20字节长,其中已包含下面要设置的省略号的3个字节。

标题截取省略号:设置截取后的文章标题后是否添加省略号。

读取所在分类栏目名:选择“读取”,则可以将当前资讯所在的分类的信息一同调用出来。

读取详细内容信息:选择“读取”,则可以将当前资讯的内容读取出来。读取详细内容信息,这将增加服务器负担。如果您只想获取标题列表,请不要选择该项。

内容长度:含义同“标题长度”。

内容截取省略号:含义同“标题截取省略号”。

本例中需要调用出资讯的内容及所属分类的信息,如图:

6、显示风格:这里要设定列表信息将储存到的变量名,选择或自己输入一个模块风格文件。

变量名:您可以把获取的数据集合放置到一个模块变量中。在模板文件中可以使用 $_SBLOCK[变量名] 来调用该数据集合。

选择模块风格文件:针对不同的模块,有不同的模块风格来控制该模块数据的显示样式。您可以通过 模块风格 功能,来为该模块添加、设置不同的风格。

注意:这里如果选择“只获取数据”,那需要您自己写模块代码,将数据显示到页面,如果选择其他的风格文件,或在下面指定自己的风格文件,则可以获得站外调用时使用的 JS 代码。

自己输入模块风格文件:如果默认的模块文件中没有您需要的,您可以自己指定自己的模块风格文件地址。模块风格文件必须先上传,并放置于 styles 目录下面,后缀为 .html.php。

本例中我们要创建的调用为最新资讯,可以通过含义命名“变量名”为“test”,且该调用是用于本站的模板使用,后面需要在模板中手动编写模块的显示代码,故选择“只获取数据”即可。

至此,数据模型已经设置完毕,点击“提交”,您将获得一段这样的模板内部调用代码:

注意:此处创建的模板内部调用代码也可以直接通过手写生成,并不一定需要通过“创建模块”来创建,所以“创建模块”仅仅是创建模块的一个辅助工具,而不是决定工具。

使用获得的模板内部调用代码

注:模板代码此处不赘述。

将上面获取的代码复制到 SupeSite 的模板文件中(默认模板的目录为 templates/default),例如加入到 SupeSite “综合首页”的模板中 index.html.php 的合适的位置。

在模块的下一行开始书写模块显示的模板代码,例如:

<!--{block name="spacenews" parameter="type/news/catid/1/order/i.dateline DESC/limit/0,5/cachetime/900/subjectlen/20/showdetail/1/messagelen/200/messagedot/1/showcategory/1/cachename/test/tpl/data"}--><!--news-->
<ul>
<!--{loop $_SBLOCK[test] $key $value}-->
	<li>
	[<a href="#action/category/catid/$value[catname][catid]#">$value[catname][name]</a>] <a href="$value[url]" title="$value[subjectall]">$value[subject]</a>
	<br />$value[message]
	</li>
<!--{/loop}-->
</ul>

从上面的代码可以看出该模块查询出的数据存储在了 $_SBLOCK[test] 这样的一个变量中,其中 test 就是在上一步中设定的“变量名”,如过当前设置为分页调用数据,则可以通过 $_SBLOCK[test_multipage] 这个变量直接输出分页的全部代码,无需再次书写任何模板代码。

从本例中的模板代码可以看到 $value[catname][catid] 、 $value[subject] 、 $value[message] 等变量的使用,而这些具体的数据参数是通过模块代码无法获得的。不过,可以通过下面的代码将该模块查询出的信息全部输出,其中包含了所有可以使用参数名称及该参数对应的数据值。了解清楚之后,需要将下面这段代码删除调用,再编写模块显示的模板代码。

<!--{eval secho($_SBLOCK['test']);}-->

三、模块管理

浏览模块,可以查看所有添加的模块,也可以通过“基本模块”分类查看。如图:

删除模块:勾选模块前面的复选框,点击“提交”就可以删除模块。

编辑模块:点击模块后面的编辑,则可以重新设置该模块的参数,并重新生成该模块。详情请参考:创建模块

{lang scrolltop}