DISCUZ!X插件开发手册.doc
《DISCUZ!X插件开发手册.doc》由会员分享,可在线阅读,更多相关《DISCUZ!X插件开发手册.doc(8页珍藏版)》请在三一办公上搜索。
1、Discuz! X 插件开发手册文件命名规范Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。被普通程序文件引用的程序文件,以 .inc.php 后缀命名。被普通程序文件,或引用程序文件引用的函数库或类库,以 .func.php(函数库) 或 .class.php(类库) 后缀命名。模板文件,以 .htm 后缀命名,插件模板文件存在于 source/plugin/identifier/template/ 目录中。模板语言包文件,以 .lang.php 后缀命名,插件语言包文件开发时存放于 data
2、/plugindata/ 目录中,文件名为 identifier.lang.php。动态缓存文件,存放于 ./data/cache 目录中,依据不同的功用进行独立的命名。使用后台数据备份功能生成的备份文件,通常以 .sql 为后缀,存放于 data/ 目录中。有些目录中存在内容为空白的 index.htm 文件,此类文件是为了避免 Web 服务器打开 Directory Index 时可能产生的安全问题。class_core.php 模块功能白皮书source/class/class_core.php 是 Discuz! 的通用初始化模块程序,其几乎被所有的外部代码所引用,在您开始插件设计之前
3、,可以先对该模块的大致功能做一定的了解。class_core.php 主要完成了以下任务: 对不同 PHP 及操作系统环境做了判断和兼容性处理,使得 Discuz! 可以运行于各种不同配置的服务器环境下。初始化常量 IN_DISCUZ 为 TRUE,用于 include 或 require 后续程序的判断,避免其他程序被非法引用。读取社区程序所在绝对路径,存放于常量 DISCUZ_ROOT 中。加载所需的基本函数库 source/function/function_core.php。通过 config/config_global.php 中提供的数据库账号信息,建立数据库连接。Discuz!
4、支持数据表的前缀,如需获得表的全名,可使用“DB:table(tablename)”方式。判 断用户是否登录,如登录标记 $_Guid 为非 0,同时将 $_Guser(加了 addslashes 的用户名,可用于不加修改的插入数据库)、 $_Gmemberusername(原始的用户名,可用于页面显示)、$_Gmemberpassword(用户密码 的MD5串)等相应用户信息赋值,其他用户信息存放于 $_Gmember,更多信息可通过“getuserprofile()”获取。判 断用户管理权限,将管理权限标记 $_Gadminid 为 13 中间的值。0 代表普通用户;1 代表论坛管理员;2
5、 代表超级版主;3 代表论坛版主。将用户权限按照其所在的主用户组 ID 标记为 $_Ggroupid,相关权限从该 $_Ggroupid 所对应的系统缓存中读出,存放于 $_Ggroup。预置读入了每个模块的各种设置变量。插件接口概述使用管理员账号登录 Discuz! 管理中心,在顶部菜单将可以看到“插件”菜单。“插件列表”列出了所有已安装的插件,是控制插件打开与否、设计插件模块、菜单、参数和使用权限的地方,插 件开发者可以依照设计意图,在此进行插件的初步设置,这里同时也提供插件导入和插件开关的功能,用于导入他人设计的插件和对插件的可用状态进行变更。开始编写一个新插件,请首先在插件管理中选择“
6、设计新插件”,填写插件名称,名称用于表明此插件的用途,例如设置为“虚拟银行插件”。惟一 标识符用于在后续的插件模块中调用本插件,不可与现有插件重复,命名规则限制与 PHP 变量命名相同,虽然初次设置后仍可改动,但强烈建议一次性将此配置设置好,否则可能涉及到很多代码方面的变更,增加编码的麻烦。请注意:惟一标识符请不要 设置的过短,或使用有可能与其他插件重复的命名,例如制作此插件的公司叫做 Comsenz Inc.,插件名称是“虚拟银行插件”,惟一标识符可设置为“comsenz_virtual_bank”,后面将以“虚拟银行插件”和 “comsenz_virtual_bank”为例进行说明。在 s
7、ource/plugin/ 目录中创建与唯一标识符同名的目录名,如 source/plugin/comsenz_virtual_bank/。在插件管理中添加插件后,仅仅是增加了一条插件记录,后面还需要很多相关的设计和设置。在列表中选择插件的“详情”进入插件的详细设置。插件设置分为三个部分:插件基本设置:设置插件的基本参数,配置项目右边括号中的内容,为此设置对应的参数名称,调用方法将在后面的参数读取与缓存控制中详细说明。 插件模块:插件模块分为程序链接、扩展项目和程序脚本 3 类:程序链接 导航栏项目:可在前台导航栏增加一个菜单项,可自主指派菜单链接的 URL,也可以调用插件的一个模块,模块文件
8、名指派为 source/plugin/插件目录/插件模块名.inc.php”。注意:由于引用外部程序,因此即便设置了模块的使用等级,您的程序仍需进行判断使 用等级是否合法。程序链接 导航栏 - 插件菜单项目:可在前台导航栏的插件子菜单中增加一个菜单项。扩展项目 个人面板:可在个人面板上部增加一个菜单项。扩展项目 个人面板 - 个人资料:可在个人面板的个人资料页上部增加一个菜单项。扩展项目 个人面板 - 积分和用户组:可在个人面板的积分和用户组页上部增加一个菜单项。扩展项目 站点帮助:可在站点帮助增加一个菜单项。扩展项目 管理面板 - 基本:可在前台论坛管理面板侧边上部增加一个菜单项。扩展项目
9、管理面板 - 工具:可在前台论坛管理面板侧边下部增加一个菜单项。扩展项目 管理中心:可在后台插件栏目中为此插件增添一个管理模块。程序脚本 页面嵌入:设置一个包含页面嵌入脚本的模块,模块文件名指派为 source/plugin/插件目录/插件模块名.class.php”。(页面嵌入将在后面的页面嵌入模块开发中详细说明)程序脚本 特殊主题:设置一个特殊主题脚本的模块,模块文件名指派为 source/plugin/插件目录/插件模块名.class.php”。(特殊主题将在后面的特殊主题模块开发中详细说明)您可以为每个模块设置不同的使用等级,例如设置为“超级版主”,则超级版主及更高的管理者可以使用此模
10、块。 插件变量配置:插件接口中提供了一个通用的插件配置管理程序,在大多数情 况下可实现插件的参数配置,省却了插件开发者自行编写后台管理模块(即上面提到的“扩展项目 管理中心”模块)的麻烦。通常情况下,应优先使用通用插件配置管理程序来实现插件的参数配置,只有在通用程序确实无法实现时,才自行编写后台管理模块。输 入配置名称和配置变量名、选择合适的配置类型后,即可为此插件增加一个配置变量,点“详情”可以编辑此配置变量的更多信息。为了方便插件程序调用使用者配 置好的参数,配置变量同样被存放在了缓存文件中,读取方法将在后面的参数读取与缓存控制中详细说明。注意:您只有在插件管理中将插件设置为“可用”,以上
11、设置才能生效。 参数读取与缓存控制编写插件程序时,可能需要读取一些插件的信息,如果插件需要使用者进行配置,还需要读取使用者设置的参数值。Discuz! 允许插件程序使用数据库读取和缓存读取这两种方法获取插件信息和参数。Discuz! 的插件接口已经对插件信息进行了合理的缓存,使用缓存读取的方式,将比数据库读取速度更快,消耗的资源更是几乎可以忽略不计。缓存读取唯一的局限是需要插 件使用插件接口提供的通用后台管理程序。如果使用自定义后台模块的方式,需要后台模块将参数存放到 pluginvars 数据表中,才能被系统正常缓存。我们强烈推荐您通过缓存读取插件信息和配置数据。插件参数读取由于调用系统缓存
12、统一通过“loadcache()”函数调用,并存放于 $_Gcache 中,因此“loadcache(plugin)”后可加载插件的缓存并存放于 $_Gcacheplugin 中。嵌入点插件和以 plugin.php 为主脚本调用的插件无需加载此缓存,系统已自动加载了缓存。页面嵌入模块开发 页面嵌入类型脚本格式identifier插件的唯一标识符,在插件设置中设置。CURSCRIPT嵌入点位于的脚本名,如 forum.php 为 forum。HookId可用函数名以及被调用的脚本请看下面的介绍。这些函数将在 Discuz! 所有模块执行前调用。如果要在模板输出前调用,需在函数名结尾加上“_ou
13、tput”。全局调用的函数(“global_”开头的)在模板输出前调用。如:viewthread_imicons() 在模块执行前调用,viewthread_imicons_output() 在模板输出前调用。要查看所有的预定义嵌入点可通过查找 source/class/class_template.php 中找到以下代码,去除 /for Developer 注释后,更新缓存即可查到。$dev = ;/for Developer $dev = echo $hookid;预定义的嵌入点会在页面预置好的位置输出函数返回的内容。函数返回值类型如果是 array 且是空值的,必须输出一个空数组,如:r
14、eturn array(); 函数名并不限于以上列表,您可以自定义,只要符合以下规则,函数就会在适当的地方被调用。function CURMODULE_USERDEFINE_output()CURMODULE 指明了此函数在哪个模块执行,可通过常量 CURMODULE 得到当前页面的 CURMODULE 值。USERDEFINE 可自定义,如果函数名以“_output”结尾则会在模板输出前调用,否则会在模块执行前调用。如:attachment_test() 函数会在论坛的下载附件的时候执行。“_output”结尾的函数的第一个参数为数组,含义为 array(template = 要输出的模板名
15、, message = showmessage 的文字)如:以下函数将在登录的时候输出调试文字function logging_test_output($a) print_r($a); print_r($_POST); plugin_identifier 类中的其它函数为了便于阅读建议以“_”开头,如:特殊主题模块开发特殊主题模块用于创建一个特殊主题,特殊主题类型脚本格式identifier插件的唯一标识符,在插件设置中设置。函数名以及含义 函数名含义newthread发主题时页面新增的表单项目,通过 return 返回即可输出到发帖页面中newthread_submit主题发布后的数据判断n
16、ewthread_submit_end主题发布后的数据处理editpost编辑主题时页面新增的表单项目,通过 return 返回即可输出到编辑主题页面中editpost_submit主题编辑后的数据判断editpost_submit_end主题编辑后的数据处理newreply_submit_end回帖后的数据处理viewthread查看主题时页面新增的内容,通过 return 返回即可输出到主题首贴页面中扩展项目模块开发扩展项目模块可以在社区的特定位置扩展出新的功能,通常用于扩展新的设置项目。扩展项目的脚本文件以 .inc.php 结尾(如 test.inc.php),模版为固定文件名,位于插
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DISCUZ 插件 开发 手册

链接地址:https://www.31ppt.com/p-2388695.html