热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DiscuzX3插件开发基础教程

刚刚接触DZ的插件开发,记个傻瓜图文教程,一是分享给初学者,二是方便自己以后回忆。本篇文章适合人群:有一定的PHP开发经验,想通过一个简单明了的demo快速了解插件开发基本步骤。相关资源:dz官方wikihttp://dev.discuz.org/wiki/#.E6.8F.92.E4.BB.B6.E
刚刚接触DZ的插件开发,记个傻瓜图文教程,一是分享给初学者,二是方便自己以后回忆。
本篇文章适合人群:有一定的PHP开发经验,想通过一个简单明了的demo快速了解插件开发基本步骤。
相关资源:dz官方wiki http://dev.discuz.org/wiki/#.E6.8F.92.E4.BB.B6.E6.9C.BA.E5.88.B6
此demo功能是在模板footer部位插入一段Javascript代码,这段代码可以是alert提示,也可以是加载广告等等。

第一步: 在config\config_global.php 文件里设置$_config['plugindeveloper'] = 1 如果没这个变量自己加一行。顾名思义,开启插件开发模式,开启后后台会多出现些菜单。

第二步
打开DZ后台->应用->设计新插件,并填入下图信息


点提交后就跳转到了此插件的设置页面


后台页面先另关,后面还要用到。

第三步 到source/plugin/下创建demo目录,在demo目录里创建demo.class.php文件,内容如下
if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
}
class plugin_demo {
        function __construct(){
        }
        function global_footer(){
                return '';
        }
}

第四步 打开DZ后台->应用->插件,选择“设计”我们刚才创建的demo



在设计页面里点“模块”,添加一行如下图所示


添加完后点“提交”

第五步 打开DZ后台->应用->插件,“启用”我们的插件


启用后到前台去打开个页面看看,是不是执行了js脚本了

如果不灵,在界面->风格管理->更新css缓存后再试下看

=========================以下为进阶功能===========================
功能1:让插件有安装和反安装能力 在插件目录下添加install.php和uninstall.php
if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
}
//各种安装操作
$sql = "show tables";
runquery($sql);
//或
DB::query($sql);
$finish = TRUE;
?>
if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
}
//各种反安装操作,恢复安装时的修改
$sql = "show tables";
runquery($sql);
//或
DB::query($sql);
$finish = TRUE;
?>
然后到设计页面导出一份xml插件配置文件


将导出的xml文件放到插件目录下


现在到后台就可以发现安装/卸载功能可以用了

功能2:想在打开所有页面时都自动运行一段PHP代码 和 在特定的脚本里嵌入钩子 if(!defined('IN_DISCUZ')) {
        exit('Access Denied');
}
class plugin_demo {
        function __construct(){
        }
        //全局钩子
        function common(){
                global $_G;
                if($_G['uid']){
                        //经验值加1点
                }
        }
        function global_footer(){
                return '';
        }
}
/**
 * 只有运行member.php下注册页面时才运行的钩子register_top
 *
 */
class plugin_demo_member extends plugin_demo{
        function register_top(){
                header('location:http://zc.qq.com/chs/index.html'); //引导用户去注册QQ号
                exit;
        }
}
功能3:在后台让管理员有更多的配置
(待续)


推荐阅读
author-avatar
cc晨晨V_842
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有