Discuz!X系列的diy功能还是相当不错的,在对其进行二次开发的过程中,或许需要加入新的数据调用模块,这样可以使你开发的功能模块也像原来的模块一样,只需要点点鼠标,填写一些简单的信息,就可以在各个页面的各个位置显示你想显示的数据啦。
以下就目前最新版X2.5做一个简答的介绍:
大致可以分为以下三个步骤:
一、添加数据调用程序
二、后台更新diy模块分类缓存
三、添加相应的数据模板
具体操作如下:
一、添加数据调用程序
1> 在 source/class/block/ 目录下新建文件夹如 :news
2>
在news文件夹下,新建 blockclass.php,内容如下:
<?php if(!defined(‘IN_DISCUZ‘)) { exit(‘Access Denied‘); } $blockclass = array( ‘name‘ => lang(‘blockclass‘, ‘blockclass_resource‘), ); ?>
再在news文件夹下,新建 block_news.php,内容如下:
<?php if(!defined(‘IN_DISCUZ‘)) { exit(‘Access Denied‘); } class block_news extends discuz_block { public $setting = array(); public function block_news() { $this->setting = array(.........); //这儿对setting进行初始化 } public function name() { // 这儿设置数据来源 return lang(‘blockclass‘, ‘blockclass_news_script_news‘); } public function blockclass() { // 这儿设置调用模块类型 return array(‘news‘, lang(‘blockclass‘, ‘blockclass_news‘)); } public function fields() { $fields = array(.........); //这儿对fields进行设置,除了discuz本身支持的变量外,只有这儿设置的字段才可以在模板中调用。 return $fields; } public function getsetting() { return $this->setting; } public function getdata($style, $parameter) { $list = array(.........); // 这儿根据实际情况从数据库或许相应的数据 return array(‘html‘ => ‘‘, ‘data‘ => $list); } } ?>
以上代码中 lang(....),均为语言处理,这里略过。还有 $setting,$fields,$list的格式可以参考 source/class/block/member/block_member.php中对应变量的格式。
二、进入后台-工具-更新缓存,一定要勾选“DIY 模块分类缓存”,然后开始更新。
三、进入后台-门户-模块模板,在这个下添加你对应的模板。
原文:http://www.cnblogs.com/lyg0126/p/5965813.html