Discuz教程网

[插件制作] discuz x2.5插件开发傻瓜图文教程,用demo说话

  [复制链接]
authicon dly 发表于 2012-10-13 14:24:27 | 显示全部楼层 |阅读模式
刚刚接触DZ的插件开发,记个傻瓜图文教程,一是分享给初学者,二是方便自己以后回忆。

本篇文章适合人群:有一定的PHP开发经验,想通过一个简单明了的demo快速了解插件开发基本步骤。


相关资源:dz官方wiki
游客,如果您要查看本帖隐藏内容请回复

此demo功能是在模板footer部位插入一段javascript代码,这段代码可以是alert提示,也可以是加载广告等等。


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

第二步
打开DZ后台->应用->设计新插件,并填入下图信息
1337063910_9326.png
点提交后就跳转到了此插件的设置页面
1337064055_6860.png

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

第三步到source/plugin/下创建demo目录,在demo目录里创建demo.class.php文件,内容如下

  1. <?php

  2. if(!defined('IN_DISCUZ')) {
  3. exit('Access Denied');
  4. }

  5. class plugin_demo {

  6. function __c**truct(){

  7. }

  8. function global_footer(){

  9. return '<script>alert("插件我来了")</script>';
  10. }

  11. }
复制代码


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

1337065405_3396.png

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

1337064558_5114.png
添加完后点“提交”


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

1337064781_4888.png
启用后到前台去打开个页面看看,是不是执行了js脚本了
1337065097_1567.png
如果不灵,在界面->风格管理->更新css缓存后再试下看


=========================以下为进阶功能===========================
功能1:让插件有安装和反安装能力在插件目录下添加install.php和uninstall.php
  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3. exit('Access Denied');
  4. }


  5. //各种安装操作
  6. $sql = "show tables";
  7. runquery($sql);
  8. //或
  9. DB::query($sql);


  10. $finish = TRUE;

  11. ?>
复制代码
  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3. exit('Access Denied');
  4. }


  5. //各种反安装操作,恢复安装时的修改
  6. $sql = "show tables";
  7. runquery($sql);
  8. //或
  9. DB::query($sql);


  10. $finish = TRUE;

  11. ?>
复制代码


然后到设计页面导出一份xml插件配置文件
1337066106_1644.png

将导出的xml文件放到插件目录下
1337066144_8164.png

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

功能2:想在打开所有页面时都自动运行一段PHP代码 和 在特定的脚本里嵌入钩子
  1. <?php

  2. if(!defined('IN_DISCUZ')) {
  3. exit('Access Denied');
  4. }


  5. class plugin_demo {

  6. function __c**truct(){

  7. }
  8. //全局钩子
  9. function common(){
  10. global $_G;
  11. if($_G['uid']){
  12. //经验值加1点
  13. }
  14. }

  15. function global_footer(){
  16. return '<script>alert("插件我来了")</script>';
  17. }

  18. }

  19. /**
  20. * 只有运行member.php下注册页面时才运行的钩子register_top
  21. *
  22. */
  23. class plugin_demo_member extends plugin_demo{

  24. function register_top(){
  25. header('location:http://zc.qq.com/chs/index.html'); //引导用户去注册QQ号
  26. exit;
  27. }
  28. }
复制代码


功能3:在后台让管理员有更多的配置(有空再继)

作者:xiangzi1113



上一篇:discuz 通过ajax动态获得的javascript不执行问题
下一篇:discuz x2.5插件开发之直接访问插件页面(做简单接口插件)
authicon beyondhcm 发表于 2012-10-19 15:23:16 | 显示全部楼层
lai xue xi le
authicon 启程 发表于 2012-10-20 14:54:50 | 显示全部楼层
强烈支持楼主ing……
authicon 绝对零度 发表于 2012-11-7 13:59:06 | 显示全部楼层
看到这帖子真是高兴!
authicon 天天飞 发表于 2012-11-9 18:13:47 | 显示全部楼层
真是难得给力的帖子啊。我无语了……
authicon 让测试飞起来 发表于 2012-11-9 18:14:47 | 显示全部楼层
强烈支持楼主ing……楼下的听好了……
authicon 风逝之旅 发表于 2012-11-10 20:51:56 | 显示全部楼层
新手享福
authicon 中清协武汉傅清 发表于 2012-11-10 21:34:56 | 显示全部楼层
强烈支持楼主ing……
authicon 15456413521 发表于 2012-11-19 23:26:59 | 显示全部楼层
9999999999999
authicon 游戏吧丶小磊 发表于 2012-11-20 12:51:57 | 显示全部楼层
强烈支持楼主ing……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2024-4-26 06:20

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表