discuzapi插件_Discuz! 插件开发手册

插件设计

您在开始论坛插件的设计之前,有必要了解一下我们所推荐的插件设计方式,更好的规范性和兼容性,将使得您设计的插件受到更多使用者的欢迎,对于程序员而言,也有助于形成良好的编码习惯,实现自身能力的提升。如果您有意编写 Discuz! 论坛插件,请按照先后顺序仔细阅读本文档。

准备工作

插件实现流程开始编写论坛插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:

熟练使用 Discuz! 论坛系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。

对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。

阅读本文档并在系统设置中实际体验 Discuz! 插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到论坛系统中来。插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。

编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。

如果需要公开您的插件,可以用插件导出的方式,将插件配置信息导出到一个文本文件中,连同相应的程序和模板文件一同打包。同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括:插件适用的 Discuz! 版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。

将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。插件实现流程至此结束。

文件命名规范Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:

可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。

被普通程序文件引用的程序文件,以 .inc.php 后缀命名。

被普通程序文件,或引用程序文件引用的函数库或类库,以 .func.php(函数库) 或 .class.php(类库) 后缀命名。

模板文件,以 .htm 后缀命名,模板文件只存在于 ./templates 目录中。

模板语言包文件,以 .lang.php 后缀命名,语言包文件只存放于 ./templates 目录中,与模板文件同级目录。

被编译后的模板文件,以 .tpl.php 后缀命名,前面的数字是模板套系的 ID,下划线后面的是模板原名,编译模板文件只存在于 ./forumdata/templates 目录中。

动态缓存文件,存放于 ./forumdata/cache 目录中,依据不同的功用进行独立的命名。

使用后台数据备份功能生成的备份文件,通常以 .sql 为后缀,存放于 ./forumdata/ 目录中。

有些目录中存在内容为空白的 index.htm 文件,此类文件是为了避免 Web 服务器打开 Directory Index 时可能产生的安全问题。

common.inc.php 模块功能白皮书./include/common.inc.php 是 Discuz! 的通用初始化模块程序,其几乎被所有的外部代码所引用,在您开始插件设计之前,可以先对该模块的大致功能做一定的了解。common.inc.php 主要完成了以下任务:

对不同 PHP 及操作系统环境做了判断和兼容性处理,使得 Discuz! 可以运行于各种不同配置的服务器环境下。

初始化常量 IN_DISCUZ 为 TRUE,用于 include 或 require 后续程序的判断,避免其他程序被非法引用。

读取论坛所在绝对路径,存放于常量 DISCUZ_ROOT 中。

加载所需的基本函数库 include/global.func.php。

通过 config.inc.php 中提供的数据库账号信息,建立数据库连接。Discuz!支持数据表的前缀,如需获得表的全名,可使用”{$tablepre}tablename”

或 $tablepre.’tablename’的方式。

判断用户是否登录,如登录标记 $discuz_uid 为非 0,同时将 $discuz_user(加了 slash 的用户名,可用于不加修改的插入数据库)、

$discuz_userss(原始的用户名,可用于页面显示)、$discuz_pw(用户密码的MD5串)、$discuz_secques(登录提示问题的加密串)等相应用户信息赋值。

判断用户管理权限,将管理权限标记 $adminid 为 -1~3 中间的值。-1 代表为特殊用户组用户。0 代表普通用户;1 代表论坛管理员;2 代表超级版主;3 代表论坛版主。

将用户权限按照其所在的主用户组 ID 标记为 $groupid,相关权限从该 $groupid 所对应的系统缓存中读出(./forumdata/cache/usergroup_$groupid.php)。

将用户扩展权限按照其扩展用户组 ID 标记为 $extgroupids,中间以 \t(tab) 分隔,格式为“$groupid1\t$groupid2...”,扩展用户组用于确定用户的扩展浏览权限,例如能否访问某些有特殊权限设定的论坛等。

读入系统设置中的各种变量,并根据 Cache 模块的设定,根据当前被调用的程序文件名(如 index.php,forumdisplay.php 等等)读入

相应的缓存代码。缓存代码被存放于 ./forumdata/cache/ 中。除了对应当前程序的缓存,可能还会加载一些通用的缓存数据,例如整个论坛

的设置(./forumdata/cache/cache_settings.php)、界面风格(./forumdata/cache/style_x.php)、当前用户的用户组(./forumdata/cache/usergroup_x.php)、

管理组权限(./forumdata/cache/adminusergroup_x.php)等。

缓存数据的格式,大多是存放在 $_DCACHE['cachename'] 数组中,有些常用的参数,如系统设置中的参数、风格界面等,通常还被进行了

展开操作(extract)或使用常量进行赋值。

用户如果处在登录状态,会自动读出 members 表相关用户的参数值,用户的个性设置参数:如时差、时间格式、界面风格等等,会根据实际

情况覆盖系统默认值,因此在后续程序通常不用再做判断。

如果程序提交的 URL 中包含 tid=x 或 fid=x,common.inc.php 模块会自动读出其所对应的论坛记录及包括 access masks、版主设定等相应

权限,记录在 $forum 变量中。后续程序只要通过URL将tid或fid传递过来,便可通过 $forum 数组的存在性或相关参数来对论坛权限进行判断,

不需要再读 forums 表的资料。

插件接口概述

使用管理员账号登录 Discuz! 系统设置,在左侧菜单将可以看到“插件设置”和“插件管理”两个选项,使用超级版主或版主账号登录,将只出现“插件设置”一个选项。“插件管理”是控制插件打开与否、设计插件模块、菜单、参数和使用权限的地方,插件开发者可以依照设计意图,在此进行插件的初步设置,这里同时也提供插件导入和插件开关的功能,用于导入他人设计的插件和对插件的可用状态进行变更。“插件设置”是对已经安装的插件进行设置的地方,供使用者对插件参数进行调整以实现不同的插件功能。即前者主要面向开发者,后者主要面向使用者。

开始编写一个新插件,请首先在插件管理中࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Discuz! 是一款流行的论坛系统,支持插件开发,以下是一个简单的插件开发实例: 1. 创建插件目录 在 Discuz! 的 plugin 目录下创建一个新的目录,例如 myplugin。 2. 创建插件文件 在 myplugin 目录下创建一个新的文件,例如 myplugin.inc.php。这个文件是插件的主文件,需要包含以下代码: ``` <?php if(!defined('IN_DISCUZ')) { exit('Access Denied'); } class plugin_myplugin { // 插件代码 } ?> ``` 3. 注册插件 在 myplugin.inc.php 文件中,使用以下代码注册插件: ``` <?php if(!defined('IN_DISCUZ')) { exit('Access Denied'); } class plugin_myplugin { function __construct() { // 注册插件 global $_G; $_G['cache']['plugin']['myplugin'] = array( 'name' => '我的插件', 'version' => '1.0', 'description' => '这是我的第一个 Discuz! 插件', 'author' => '我的名字', 'pluginurl' => '', 'url' => '', 'lang' => '', 'modules' => array() ); } } ?> ``` 4. 实现插件功能 在插件的主文件中,实现插件的功能。例如,在 myplugin.inc.php 文件中加入以下代码: ``` <?php if(!defined('IN_DISCUZ')) { exit('Access Denied'); } class plugin_myplugin { function __construct() { // 注册插件 global $_G; $_G['cache']['plugin']['myplugin'] = array( 'name' => '我的插件', 'version' => '1.0', 'description' => '这是我的第一个 Discuz! 插件', 'author' => '我的名字', 'pluginurl' => '', 'url' => '', 'lang' => '', 'modules' => array() ); } function global_footer() { // 在页面底部添加一段文本 echo '<div>这是我的第一个 Discuz! 插件</div>'; } } ?> ``` 这段代码将在页面底部添加一段文本,展示插件的功能。 5. 安装插件 将 myplugin 目录上传到 Discuz! 的 plugin 目录下,然后在后台插件管理页面中安装插件即可。 这是一个简单的 Discuz! 插件开发实例,你可以根据自己的需求,实现不同的插件功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值