21番茄网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 21番茄网
查看: 782|回复: 0

discuz编写插件的原则与注意事项

[复制链接]

650

主题

805

帖子

2708

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2708
发表于 2020-10-10 08:37:32 | 显示全部楼层 |阅读模式
discuz编写插件的原则与注意事项

请在动手编写插件之前仔细阅读以下原则,遵循这些原则,将能有效地避免可能发生的问题:
1.所有与插件的程序,包括其全部的前后台程序,请全部放入"./plugins" 目录中,同时在插件的安装说明中指出,插件的文件需要复制到哪些目录。为了避免与其他插件冲突,请尽量建立"./plugins" 下的子目录,并将插件程序放置于子目录下,这样编写的插件将获得更好的兼容性。`

2.如果插件包含“前台调用导航栏)”模块,该模块将统一用"plugin. php ?identifier=xxx&module=yyy" 的方式调用,请在相应链接、表单中使用此方式。其中XXX 为插件的唯一标识符yyy模块名称。前台插件外壳程序plugin.php 已经加载了通用初始化模块("/source/class/class_core.php"), 不需再次引用。

3.如果插件包含“后台调用管理中心)”模块,该模块将统一用"admincp. php ?action=plugins&identifier=xxx&mod=yyy "的方式调用,请在相应链接、表单中使用此方式。其中XXX 和yyy 的定义与“前台调用(前台菜单)”模块中的相同。系统还允许用"admincp.php?action=plugins&edit=$edit&mod=$mod" 的方式来生成链接和表单地址, $edit $mod 变量已经被插件后台管理接口赋值,因此将这两个变量值带入URL 中也是被支持的。由于后台模块是被admincp.php 调用,已加载了通用初始化模块(" /source/class/class_core.php") 并进行了后台管理人员权限验证,因此模块程序中可直接写功能代码,不需再进行验证。

4.请勿绕过插件的前后台外壳(plugin.phpadmin.php) 而以直接调用某程序的方式编写插件,因为这样既导致了用户使用不便,代码冗余和不规范,同时又产生了因验证程序考虑不周到而带来的安全隐患。可以在任何地方,包括链接、表单等处方便地使用上述URL 地址对插件模块进行调用

5.所有与插件有关的程序,包括全部的前后台程序,因全部使用外壳调用,请务必在第一行加入以下内容以免其被URL 直接请求调用,产生安全问题
if(!defined('IN_DISCUZ')) {
       exit('Access Denied');}


后台程序第一行加入

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


6.一般情况下,发布插件请使用插件导出的功能,以方便使用者一次性导入插件的配置数据,极特殊的情况下,也可以分步骤告知使用者如何进行插件配置管理和安装此插件。

7.如果功能独立,请尽量使用单独程序的方式编写插件(即外挂型插件),而尽量少地对论坛本身代码进行修改,这将对使用者今后的升级带来很大方便。

8.可以修改Discuz!本身的数据结构,但推荐在不影响效率的前提下将插件数据用另外的数据表存储因为不能排除增加的字段或索引和Discuz! 以后版本的核心数据字段重名的可能。在任何情况下,请不要删除Discuz! 标准版本数据结构中已有的字段或索引

9.请在插件说明书中对插件做详尽的描述,例如增加了哪些字段、哪些表,修改了或新增了哪些程序,版本兼容性,后续支持的提供方式(例如不提供支持,或以什么样的方式提供)。如果方便,请尽可能提供插件的卸载方法,例如去除哪些字段、删除哪些新增的程序、将哪些被插件修改的程序恢复原状等等。

10.如果插件使用另外的数据表存储,请在插件管理中准确设置插件所使用的数据表名称(不包含前缀),这样用户在备份数据的时候,能够把插件数据一同备份。

11.Discuz! 内置了8 种自定义积分,存储于 common_member中的extcredits1extcredits8 字段中,类型为有符号整数,可以在引用common.inc.php 后,在$extcredits$_DCA CHE['settings'] ['extcredits'] 中读取8 种积分的启用信息(详情请参考"./forumdata/cache/cache_settings.php ") 。插件程序中如果需要更新用户积分,可直接UPDATE 相应的积分字段,无需其他操作




上一篇:discuz插件参数读取与缓存控制
下一篇:discuz插件开发的技术文档
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|21番茄网 ( 粤ICP备10099428号 ) 奇远富

GMT+8, 2024-5-21 11:09 , Processed in 0.437191 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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