请选择 进入手机版 | 继续访问电脑版
seo_网站建设_网站模板_网页源码_网站源码-千欧中软
查看: 1057|回复: 0

discuz二次开发-门户下面diy模块(全能调取数据) 自定义模块

[复制链接]

200

主题

222

帖子

257

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
257
发表于 2017-9-15 14:28:12 | 显示全部楼层 |阅读模式
discuz二次开发-门户下面diy模块(全能调取数据)

     当我在做
discuz
二次开发的时候,我添加了一个功能,我想在任何一个页面去调用数据,也想使用discuz的前台diy模式去调用这些数据,这个时候就需要你自己写代码了哦,自己写模块。下面是详细介绍。


先看下效果:我把我自己的文件写在了其他模块下面


1.png


模块开发一定要遵循discuz的规则,按照它规定的一些规则走:

discuz的所有的模块全部在:source/class/block 中,看下对应的文件就明白了

2.jpg


这个时候差不多明白一点了吧!


下面咱们在其它类中自定义一个咱们自己的吧



我现在other目录中新建一个block_othernew.php 文件 必须为block_(自定义的名称).php这种格式


其实你在新建一个文件也是可以的 ,可以参考other文件下面的文件,必须存在blockclass.php 这个文件,这个文件:

$blockclass = array(
'name' => lang('blockclass', 'blockclass_other'),//里面定义的就是语言包,就死上图中的 其他类,可以找下语言包中的这个字段,看下就明白了。

);


接着block_othernew.php


if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}


class block_othernew extends discuz_block {


function block_otherstat() {}
   
//模块名称 模块分类
function name() {
return "自己模块";
}
function blockclass(){
//othernew 模块总分类
return array('othernew', "模块杀手");
}
    //这个模块要返回的字段
function fields() {
return array(
'posts' => array('name' => lang('blockclass', 'blockclass_other_stat_posts'), 'formtype' => 'text', 'datatype' => 'int'),
'posts_title' => array('name' => lang('blockclass', 'blockclass_other_stat_posts_title'), 'formtype' => 'text', 'datatype' => 'string'),
);
}
//设置需要帅选的参数 然后参数会自动传给  etdata($style, $parameter)
function getsetting() {
global $_G;
$settings = array(
'titlelength' => array(
'title' => '傻了吧唧',
'type' => 'text',
'default' => ""
)
);
return $settings;
}

        //返回数据的函数,自己发挥吧,一定要保证你返回的字段 在上个 fields 函数里面要有
function getdata($style, $parameter) {
global $_G;
$parameter = $this->cookparameter($parameter);
$fields = array(
'posts' => 0,
'posts_title' => !empty($parameter['posts_title']) ? $parameter['posts_title'] : lang('block/stat', 'stat_posts'),
);
if(in_array('posts', $parameter['option']) || in_array('bbsnewposts', $parameter['option'])) {
$sql = "SELECT sum(f.posts) AS posts, sum(f.todayposts) AS todayposts FROM ".DB::table('forum_forum')." f WHERE f.status='1'";
$forum = DB::fetch_first($sql);
}
if(in_array('posts', $parameter['option'])) {
$fields['posts'] = intval($forum['posts']);
}
$list = array();
return array('html' => '', 'data' => $list);
}
}


?>


以上类中的函数必须有,缺少一个不可,这是更新一下工具->更新缓存-》
DIY 模块分类缓存 更新一下缓存即可,这是去后台和前台看下吧有没有!


要是想要调用最好先在后台为你的模块添加模板:


门户=》模板模块=》添加 ,选中你刚才自定义的模块,点击提交,看下图:看看里面的字段,是不是和你定义的类中fields 函数里面的字段是一样的吧!





3.png


添加模板,添加好之后,就可以去DIY了,去试试吧.有时你你可以看下 这个函数,相信你会有收获,

4.png



5.png


这个目录下。


希望能帮到每个程序员


  1. 原文地址:http://blog.csdn.net/shachao888/article/details/47336561
复制代码

这里给大家补充说明一下,以免大家在自己动手测试的时候不能成功扩展,导致放弃。
1.如下图,新增一个自己的模块文件夹,名字可以随意,大家自己喜欢就好
1.png




2.如下图,是配置模块的名字,上面教程是采用的语言包的方式,是为了防止编码问题,大家测试的时候,
可以先直接写一个英文名称,等到后面测试成功了,再去添加语言包。


2.png


3.最后需要注意的是,模块的命名一定不能和其它模块有冲突,并且新增的这个自定义模块,
最少要有一个这样的模块文件,不然也没办法正常显示
3.png
最后,发个懒人包给大家,解压出来,直接上传到source/class/block 中,然后到后台更新模块缓存,就可以看到效果了。
懒人包效果
6.png
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:自定义模块懒人包.rar 
下载次数:1  文件大小:2.36 KB  售价:1金钱 [记录]
下载权限: 不限 以上或 VIP会员   [购买VIP]   [充值铜板]  [免费赚铜板]


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

2010-2015 千欧中软 版权所有
快速回复 返回顶部 返回列表