插件机制

准备职责

插件杀青流程

初阶编写社区插件,您应当首先对插件杀青的流程有一个大致的领悟。

  • 纯熟行使 足球论坛 社区系统后,对希望完善或补充的性格化功用举行评价,进而提出插件的功用需求。
  • 对插件做一个概括性的计划,例如:需要行使什么菜单、什么参数,配置哪些选项、数据布局如何计划、前后台杀青哪些功用等等。
  • 阅读本文档并在系统设置中现实体验 足球论坛 插件接口所杀青的功用,例如:您的插件应当如何计划才干精良的挂接到社区系统中来。插件接口能够杀青哪些功用、不能杀青哪些功用,插件为此而需要做的优化、改造和弃取。
  • 编写相应法式代码和模板语句,杀青所需的功用并举行代码测试、兼容性测试和代码矫正。
  • 假使需要公然您的插件,可以用插件导出的方式,将插件配置信息导出到一个 XML 文件中,连同相应的法式和模板文件一同打包。同时,编写一个适宜新手的插件的证明书也是必不可少的,其中包括:插件适用的 足球论坛 版本、功用概述、兼容性声明、安置本领、行使本领、卸载本领等等。
  • 将插件提提供他人,或自己行使,根据行使者反应,对插件举行完善。插件杀青流程至此解散。

文件命名典范榜样

足球论坛 服从如下的典范榜样对法式和模板举行命名。

  • 可以直接通过阅读器探问的大凡法式文件,以 .php 后缀命名。
  • 被大凡法式文件引用的法式文件,以 .inc.php 后缀命名。
  • 被大凡法式文件,或引用法式文件引用的函数库或类库,以 .func.php(函数库) 或 .class.php(类库) 后缀命名。
  • 模板文件,以 .htm 后缀命名,插件模板文件保存于 source/plugin/identifier/template/ 目录中,手机版插件模板保存于 source/plugin/identifier/template/mobile/目录中
  • 模板语言包文件,以 .lang.php 后缀命名,插件语言包文件开发时寄存于 data/plugindata/ 目录中,文件名为identifier.lang.php。
  • 静态缓存文件,寄存于 ./data/cache 目录中,依据不同的功用举行独立的命名。
  • 行使后台数据备份功用生成的备份文件,通常以 .sql 为后缀,寄存于 data/ 目录中。
  • 有些目录中保存形式为空白的 index.htm 文件,此类文件是为了制止 Web 办事器翻开 Directory Index 时不妨发生的安宁问题。
  • [X2.5新增形式] 从 足球论坛 X2.5 初阶,产品对数据表举行了封装,封装后的文件统一命名为 Table 类,通过“C::t(Table类文件名)”方式调用。插件如需封装自己的数据表,可将 Table 类文件寄存于 source/plugin/identifier/table/ 目录下,并以 table_表名.php 格式命名,详见X2.5的新法式架构

class_core 模块功用

source/class/class_core.php 是 足球论坛 的通用初始化模块法式,最火的足彩论坛。在您初阶插件计划之前,其险些被所有的外部代码所引用。

  • 对不同 PHP 及操作系统环境做了剖断和兼容性治理,使得 足球论坛 可以运行于各种不同配置的办事器环境下。
  • 初始化常量 IN_DISCUZ 为 TRUE,用于 include 或 require 后续法式的剖断,制止其他法式被犯罪引用。
  • 读取社区法式所在一概途径,寄存于常量 DISCUZ_ROOT 中。
  • 加载所需的根本函数库 source/function/function_core.php。
  • 通过 config/config_global.php 中提供的数据库账号信息,开发数据库接连。足球论坛 支持数据表的前缀,如需得到表的全名,可行使“DB::table('tablename')”方式。
  • 剖断用户能否登录,如登录符号 $_G['uid'] 为非 0,同时将 $_G['username'](加了 addslashes 的用户名,可用于不加修改的拔出数据库)、 $_G['member']['username'](原始的用户名,可用于页面显示)、$_G['member']['password'](用户密码的MD5串)等相应用户信息赋值,其他用户信息寄存于 $_G['member'],更多信息可通过“getuserprofile()”获取。
  • 剖断用户管理权限,将管理权限符号 $_G['adminid'] 为 1~3 中间的值。0 代表大凡用户;1 代表论坛管理员;2 代表超级版主;3 代表论坛版主。 将用户权限服从其所在的主用户组 ID 符号为 $_G['groupid'],相关权限从该 $_G['groupid'] 所对应的系统缓存中读出,寄存于 $_G['group']。
  • 预置读入了每个模块的各种设置变量。
  • [X2.5改观形式] $_G['username'] 将不举行 addslashes 治理。