在熟练掌握DzzOffice系统的基础上,对希望完善或补充的个性化功能进行评估,进而提出插件的 功能需求。
对插件进行概要设计,如:需使用哪些菜单、参数,配置哪些选项、数据结构设计、前后台实现哪些功能等。
阅读本文档并在系统设置中实际体验DzzOffice插件接口所实现的功用,如:如何设计插件以便顺利接入官方应用市场,插件接口能实现哪些功能、不能实现哪些功能,以及插件为此所需的优化、改造和取舍。
编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
如有必要公开插件,可将其配置信息导出为XML文件,并与相应程序和模板文件一同打包。同时,编写一份适用于新手的插件说明书也是必不可少的,包括:插件适用的DzzOffice版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等。
将插件提供给他人或自行使用,根据使用者反馈对插件进行完善。至此,插件开发流程结束。
可直接通过浏览器访问的普通程序文件,以.php为后缀命名。
被普通程序文件引用的程序文件,以.inc.php为后缀命名。
被普通程序文件或引用程序文件引用的函数库或类库,以function_.php(函数库)或class_.php(类库)为后缀命名。
模板文件,以.htm为后缀命名,插件模板文件位于dzz/identifier/template/目录中,移动端插件模板位于dzz/identifier/template/mobile/目录中。
模板语言包文件,以.php为后缀命名,插件语言包文件位于dzz/identifier/language/zh-cn/目录中,文件名为lang.php。
动态缓存文件,存放于/data/cache目录中,根据不同的用途进行独立命名。
使用后台数据备份功能生成的备份文件,通常以.sql为后缀,存放于data/目录中。
某些目录中存在内容为空白的index.htm文件,此类文件旨在避免Web服务器在打开Directory Index时可能产生的安全问题。
自DzzOffice 2.0起,产品对数据表进行了封装,封装后的文件统一命名为Table类,通过"C::t(Table类文件名)"方式调用。插件如需封装自己的数据表,可将Table类文件存放于dzz/identifier/class/table/目录下,并以table_表名.php格式命名。
请将所有与插件相关的所有程序(包括前端和后端程序)放置于 dzz/ 目录中。同时在插件的安装说明中指出,插件的文件需要复制到哪些目录。为了避免与其他插件冲突,请尽量建立 dzz/ 下的子目录,并将插件程序放置于子目录下,这样您编写的插件将获得更好的兼容性。
如果您的插件包含“导航栏”模块,该模块将统一用 index.php?mod=xxx&op=yyy 的方式调用,请在相应链接、表单中使用此方式。其中 xxx 为插件的惟一标识符,yyy 为模块名称。前台插件外壳程序 index.php 已经加载了通用初始化模块 /core/class_core.php,不需再次引用。
如果您的插件包含“管理中心”模块,该模块将统一用 index.php?mod=xxx&op=admin 的方式调用,请在相应链接、表单中使用此方式。其中 xxx 为插件的惟一标识符,admin 为模块名称。
请勿绕过插件的前后台外壳(index.php 和 admin.php)而以直接调用某程序的方式编写插件。这种做法会导致用户使用不便、代码冗余和不规范,同时又产生了因验证程序考虑不周到而带来的安全隐患。您可以在任何地方(如链接和表单)方便地使用上述 URL 地址调用插件模块。
由于所有与插件相关的程序(包括前端程序)都使用外壳调用,请务必在第一行添加以下代码:
通常情况下,请使用插件导出的功能发布插件,以便用户一次性导入插件的配置数据。在极特殊情况下,也可以分步骤告知使用者如何进行插件配置管理和安装此插件。
若功能独立,请尽量使用单独程序的方式编写插件(即外挂型插件),并尽量减少对 DzzOffice 本身代码的修改,这将为使用者今后的升级带来很大方便。
您可以修改 DzzOffice 本身的数据结构,但推荐在不影响效率的前提下将插件数据存储在另外的数据表中,以防您添加的字段、索引与后期版本 DzzOffice 核心数据字段重名。
请在插件说明书中对插件进行详尽描述,如新增字段、表、程序,版本兼容性,后续支持方式(如不提供支持或采用特定方式提供)。若可能,请提供插件的卸载方法,包括去除字段、删除新增程序、恢复被插件修改的程序等。使用者会感激您为此付出的辛勤劳动,甚至愿意支付相应的费用支持您未来的发展。
若插件使用另外的数据表存储,请在插件管理中准确设置插件所使用的数据表名称(不含前缀),以便用户在备份数据时能一并备份插件数据。