插件__discuz 插件开发教程 discuz插件设计

http://www.damubiao.com/forum.php?mod=viewthread&tid=50


其实做开源一直是个人的业余时间爱好,现在发布的二个插件是因为自己业务需要做的二个插件,所以边做边共享。希望能帮到各位广大的站长。


做discuz 产品开发,特别是插件开发,其实挺简单的,最重要一点是先看 discuz 技术文库 。

OK 下面先介绍一下插件开发的一些前期准备工作(以下代码实例以 x2.5 rc 版本下开发),相关版本下载地址可到 discuz x2.5 RC 下载地址,开发软件个人用的是 zend studio 7.2.1 。

安装好 dx2.5 之后,用zend studio 建好项目,进入后台,插件页面,插件中心。
如图:
新站点建立是没有设计插件的功能,只有安装站点的功能,需要设计插件要修改config_global.php 的文件。

插件教程1.jpg 

在项目目录下找到 config/config_global.php 文件,在文件最下面加上代码

  1. $_config['plugindeveloper'] = 1;
复制代码
其值可为 0 ,1 ,2  当设置为0时则是默认状态,1,为后台设计插件状态, 2,为前端显示嵌入开发 hook 挂钩 如下面二图。一般情况下不用嵌入开发的话,只需要设置为1则可.

插件教程2.jpg 

下图是前端页面嵌入开发一些 hookid ,意思是插件代码在指定的 hookid 显示位置。具体讲到嵌入式开发的时候再解释

插件教程3.jpg 

以上的设置是插件开发的前期基本工作,大体上就这些,相关官网的开发文档可以查看  插件设计的准备工作
下一章将讲插件的设计工作。

近来公司家具展会,比较忙,另二个插件也经常更新,所以一直没太多时间写教程。
今天终于告一段落,可以有时间写一个教程。这个章节将讲一下插件的设计+插件的目录结构。
上一章讲完了开发前的 discuz 参数设置 ,设置完了之后就有一个设置新插件的按钮。

插件设计教程1.jpg 

新建表单如上图:
以上的参数都有说明,这里不作详细解释。有不明白可以参照上面写法 。
有一点需要注意的是 我的唯一标识有一个前辍 dmb_ ,这是开发者在开发平台绑定的前辍,没本人许可是不允许使用的。

点击保存之后,可以在插件列表那看到一个新的插件 ,如下图
插件设计教程2.jpg 

然后可以再点击设计,设计界面比之前多了二个表单,一个插件描述,一个是插件语言包 。如下图
插件设计教程3.jpg 

描述不作介绍,现在介绍一下语言包。
因为 discuz 插件采用语言包分离模式,也可以说是国际化模式(只是这里没用上)。同时他也为生成XML 配置文件以及多语言版本准备,如果在插件语言包选是但又没设置好语言包文件是保存不了的。所以需要手工建立一个语言包文件。
在 /data/plugindata 目录下建立一个 *.lang.php 文件 * 代表插件的唯一标识名。我的插件标识名是:dmb_test 所以文件名是 dmb_test.lang.php 。建立好了点击保存即可(这里暂时不作语言包的介绍)。

以上是新建插件的基本设置。 但新插件目录是不会自动生成的,所以需要自己手工去生成。
进入插件目录 /source/plugin 这里是插件的目录,扩展中心安装的插件全部在这里。二次开发修改可以在这里找相应的文件。
回到正题:
以上在插件后台已经建了 dmb_test 插件,插件目录名是dmb_test  所以在 /source/plugin/ 目录建一 dmb_test 文件夹即插件目录(在这里不一定要跟唯一标识同名,这里只是写插件目录名同名,个人习惯了全统一,如果你们有兴趣可以换个不同的试试,这里我没作过任何测试),建立好插件目录后,整个插件的目录结构已经基本完成。下面再说下插件目录下的文件结构。
先上图片 

插件设计教程4.jpg 
一个插件主要的主要文件如上图
template  为插件模板目录。
install.php 插件安装文件
uninstall.php 插件卸载文件
upgrade.php 插件更新文件
xml 文件即插件的配置文件,保存了插件的全部配置信息。

以上的目录结构是整个插件所需要用到的大部分结构,不想写得太长所以下一章将讲几个文件的代码说明。


上一章讲了插件的基本目录结构,接下来介绍一下相应文件的代码说明。
下面来介绍一下

install.php 的代码设计介绍
  1. <?php
  2. /**
  3. *      This is NOT a freeware, use is subject to license terms
  4. *      $Id: install.php
  5. *      http://www.damubiao.com
  6. *      $author lijie    
  7. *      QQ 8117400
  8. */

  9. //插件第一行代码,必须代码,防止黑客恶意攻击
  10. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')){
  11.         exit('Access Denied');
  12. }

  13. //动态获取一个带前辍的表名,也可以直接手工写 pre_dmb_test. 但每个用户的安装表前辍不一样,建议用动态获取。
  14. $dmb_test = DB::TABLE('dmb_test');

  15. //新建插件需要的数据表。
  16. $sql = <<<EOF

  17. DROP TABLE IF EXISTS $dmb_test;
  18. CREATE TABLE `$dmb_test` (
  19. `id` mediumint(8) unsigned NOT NULL auto_increment,
  20. `name` varchar(60) NOT NULL default '' COMMENT '测试名称',
  21. PRIMARY KEY  (id)
  22. ) ENGINE=MyISAM;

  23. EOF;

  24. //执行SQL语句
  25. runquery($sql);

  26. //设置安装成功。必须为TRUE 如果为FALSE 则显示安装错误。
  27. $finish = TRUE;
  28. ?>
复制代码


uninstall.php 的代码设计介绍
  1. <?php
  2. /**
  3. *      This is NOT a freeware, use is subject to license terms
  4. *      $Id: uninstall.php
  5. *      http://www.damubiao.com
  6. *      $author lijie   
  7. *      QQ 8117400    
  8. */

  9. //插件第一行代码,必须代码,防止黑客恶意攻击
  10. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')){
  11.         exit('Access Denied');
  12. }

  13. //动态获取一个带前辍的表名,也可以直接手工写 pre_dmb_test. 但每个用户的安装表前辍不一样,建议用动态获取。
  14. $dmb_test = DB::TABLE('dmb_test');

  15. //卸载插件时执行的数据表删除。
  16. $sql = <<<EOF
  17. DROP TABLE IF EXISTS `$dmb_test`;
  18. EOF;

  19. //执行SQL语句
  20. runquery($sql);

  21. //设置安装成功。必须为TRUE 如果为FALSE 则显示卸载错误。
  22. $finish = TRUE;
  23. ?>
复制代码


upgrade.php 文件因为很少用到这里暂时不作介绍,其实跟上面代码一样,只是执行SQL是更改数据库的结构。

XML 文件这里也不作代码介绍,这里只介绍xml 文件的生成方法。完成以上配置文件后,可以在设计插件里点击导出,即会自动导出XML 文件,下载完毕放到相应的目录即可,如下图
插件设计教程5.jpg 
生成的文件为默认的XML 文件 如 discuz_plugin_dmb_test.xml
不同的语言版本XML文件不一样 ,现在扩展中心只需要你上传默认为 GBK 的版本即可,其他的几个版本扩展中心系统会自动生成。故不作详细介绍。

插件设计里面有模块,和变量的配置,但模块太多太泛一一作解释需要比较长的时间。这到最后一个功能一个功能介绍。 在这里先讲插件变量的配置。

插件设计教程6.jpg 
添加变量如上图,变量的数据类型有多种,初学者可以自行一个一个设置查看效果(不作说解)。
设置完毕后,因为插件设计后,还没开启,现在设置了变量,开启插件使用,则到在后台左边导航显示出来插件目录。点击即可以设置相应就是值(如果没有设置变量和模块中任何一个,导航上是不会显示出来插件的)。

插件设计教程7.jpg 

上面是插件设置的相应的值。下面介绍代码中如何调用该值。
先在模块那建立一个模块,文件名为test, 模块类型为 “管理中心” ,链接名称为 “变量名”(这里不作详细解释,下一章再作详解),设置完毕在插件的根目录建立相应的文件 test.inc.php 。
其代码如下 :
  1. <?php
  2. /**
  3. *      This is NOT a freeware, use is subject to license terms
  4. *      $Id: test.inc.php
  5. *      http://www.damubiao.com
  6. *      $author lijie   
  7. *      QQ 8117400    
  8. */

  9. //同理 后台防黑客注入
  10. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')){
  11.         exit('Access Denied');
  12. }

  13. //获取插件的缓存,这最重要,必须先获取,不然取不了值。
  14. loadcache('plugin');

  15. //读取缓存的值 目录分类是 缓存 插件 当前插件名称 缓存变量名。 呵呵挺长的,记住就好了。
  16. echo $_G['cache']['plugin']['dmb_test']['test']

  17. ?>
复制代码


以上是变量配置的基本方法与代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值