篇一 D is c u zX3.x模板插件开发制作教程(从入门到精通)
一、开发插件所需资料与工具
1、 D is c uz X3插件机制
插件机制D is c uz!拥有一套完整的插件机制。
合理使用插件机制你可以更好的将自己的个性功能需求整合到D is c uz!产品中的同时保持代码独立并且不受后续D is c uz!产品版本升级的影响。 我们鼓励并推荐使用插件机制进行个性需求定制和研发。
插件设计的准备工作
插件实现流程
开始编写社区插件您应当首先对插件实现的流程有一个大致的了解 以下是我们推荐的插件编写流程
??
熟练使用D is c u z!社区系统后对希望完善或补充的个性化功能进行评估进而提出插件的功能需求。
??对插件做一个概括性的设计例如需要使用什么菜单、什么参数配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
1
??阅读本文档并在系统设置中实际体验D is c u z!插件接口所实现的功用例如您的插件应当如何设计才能良好的挂接到社区系统中来。插件接口
能够实现哪些功能、不能实现哪些功能插件为此而需要做的优化、改造和取舍。
??编写相应程序代码和模板语句实现所需的功能并进行代码测试、兼容性测试和代码改进。
??如果需要公开您的插件可以用插件导出的方式将插件配置信息导出到一个XML文件中连同相应的程序和模板文件一同打包。 同时编写
一个适合新手的插件的说明书也是必不可少的其中包括插件适用的D is c uz!版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等
等。
??将插件提供给他人或自己使用根据使用者反馈对插件进行完善。插件实现流程至此结束。
??
文件命名规范
D is c uz!按照如下的规范对程序和模板进行命名请在设计插件时尽量遵循此命名规范
??可以直接通过浏览器访问的普通程序文件 以.p hp后缀命名。
2
??被普通程序文件引用的程序文件 以 .inc.php后缀命名。
??被普通程序文件或引用程序文件引用的函数库或类库以.func.php(函数库)或.class.php(类库)后缀命名。
??模板文件 以 .htm后缀命名插件模板文件存在于source/plug in/identifie r/template/ 目录中手机版插件模板存在于so urce/plug in/ide ntifie r/template/mobile/目录中
??模板语言包文件 以.lang.p hp后缀命名插件语言包文件开发时存放于data/plugindata/ 目录中 文件名为ide ntifie r.la ng.p hp。
??动态缓存文件存放于./data/cache 目录中依据不同的功用进行独立的命名。
??使用后台数据备份功能生成的备份文件通常以.sql为后缀存放于data/ 目录中。
??有些目录中存在内容为空白的index.htm文件此类文件是为了避免Web服务器打开Directory Index时可能产生的安全问题。
??[X2.5新增内容]从D isc uz!X2.5开始产品对数据表进行了封装封装后的文件统一命名为 Ta b le类通过
“C: :t(Ta b le类文件名)”方式调用。
插件如需封装自己的数据表可将Ta b le类文件存放于
3
source/plug in/identifie r/ta ble/ 目录下并以table_表名.php格式命名详见X2.5的新
程序架构。
??class_core.php模块功能白皮书source/class/class_core.php是Discuz!的通用初始化模块程序其几乎被所有的外部代码所引用在您开始插件设计之前 可以先对该模块的大致功能做一定的了解。class_core.php主要完成了以下任务
??对不同PHP及操作系统环境做了判断和兼容性处理使得D is c uz!可以运行于各种不同配置的服务器环境下。
??初始化常量IN_DISC UZ为TRUE 用于inc lude或require后续程序的判断避免其他程序被非法引用。
??读取社区程序所在绝对路径 存放于常量DISCUZ_ROOT中。
?? 加 载 所 需 的 基 本 函 数 库source/functio n/functio n_core.php。
??通过c o nfig/c o nfig_glo ba l.p hp中提供的数据库账号信息建立数据库连接。 D is c u z!支持数据表的前缀如需获得表的全名可使用
“DB: :table('tablename')”方式。
??判断用户是否登录如登录标记$_G['uid']
4
为非 0 同时将 $_G['username'] 加了adds lashes的用户名可用于不加修改的插入数据库、
$_G['member'] ['username'] 原始的用 户 名 可 用 于 页 面 显 示 、$_G['member'] ['password']用户密码的MD5串等相应用户信息赋值其他
用户信息存放于$_G['member'] 更多信息可通过“getuserprofile()”获取。
??判断用户管理权限 将管理权限标记$_G['adminid']为1~3中间的值。0代表普通用户 1代表论坛管理员 2代表超级版主 3代表论坛版
主。 将用户权限按照其所在的主用户组ID标记为$_G['groupid'] 相 关 权 限 从 该$_G['groupid']所对应的系统缓存中读出存放于$_G['g ro up'] 。
??预置读入了每个模块的各种设置变量。
??[X2.5变更内容] $_G['username']将不进行addslashes处理。
插件接口概述
使用管理员账号登录D is c u z!管理中心在顶部菜单将可以看到“插件”菜单。 “插件列表”列出了所有已安装的插件是控制插件打开与否、设计插件模块、菜单、参数和使
5
用权限的地方插件开发者可以依照设计意图在此进行插件的初步设置这里同时也提供插件导入和插件开关的功能 用于导入他人设计的插件和对插件的可用状态进行变更。
开 始 编 写一个新插件 请首先 打开c o nfig/c o nfig_globa l.p hp文件在文件结尾添加以下代码开启插件设计者模式。
??$_config['plugindevelope r']=1;
在插件管理中选择“设计新插件”填写插件名称名称用于表明此插件的用途例如设置为“虚拟银行插件”。惟一标识符用于在后续的插件模块中调用本插件不可与现有插件重复命名规则限制与PHP变量命名相同虽然初次设置后仍可改动但强烈建议一次性将此配置设置好否则可能涉及到很多代码方面的变更增加编码的麻烦。请注意惟一标识符请不要设置的过短或使用有可能与其他插件重复的命名例如制作此插件的公司叫做Comsenz Inc. 插件名称是“虚拟银行插件” 惟一标识符可设置为
“comsenz_virtual_bank”。最后在source/plugin/ 目录中创建 与 唯 一标识符 同 名 的 目 录 名 如source/plugin/comsenz_virtual_bank/。
在插件管理中添加插件后仅仅是增加了一条插件记录后面还需要很多相关的设计和设置。在列表中选择插件的
6
“详情”进入插件的详细设置。插件设置分为三个部分
??
插件模块
插件模块分为程序链接、扩展项目和程序脚本3类
程序链接主导航项目可在主导航栏增加一个菜单项可自主指派菜单链接的U RL也可以调用插件的一个模块模块文件名指派为source/plugin/插件目录/插件模块名.inc.php”。注意 由于引用外部程序 因此即便设置了模块的使用等级您的程序仍需进行判断使用等
级是否合法。
??程序链接主导航项目 -插件菜单可在主导航栏的插件子菜单中增加一个菜单项。
??程序链接顶部导航项目、底部导航项目、快捷导航项目、家园导航项目可在各个导航中增加一个菜单项。
??扩展项目个人设置可在个人设置中增加一个菜单项。
??扩展项目个人设置-个人资料可在个人设置的个人资料页上部增加一个菜单项。
??扩展项目个人设置-积分可在个人设置的积分页上部增加一个菜单项。
??扩展项目站点帮助可在站点帮助中增加一个菜单项。
??扩展项目我的帖子可在我的帖子中增加一个菜单项。
7
??扩展项目 门户管理可在门户管理面板上部增加一个菜单项。
??扩展项目论坛管理-基本可在前台论坛管理面板侧边上部增加一个菜单项。
??扩展项目论坛管理-工具可在前台论坛管理面板侧边下部增加一个菜单项。
??扩展项目管理中心可在后台插件栏目中为此插件增添一个管理模块。
??程序脚本页面嵌入-普通版设置一个包含页面嵌入脚本的模块该模块用于在普通电脑访问的页面显示。模块文件名指派为source/plugin/插件目录/插件模块名.class.php”。 页面嵌入将在后面的《》中详细说明
??程序脚本页面嵌入-手机版设置一个包含页面嵌入脚本的模块该模块用于在手机访问的页面显示。
??程序脚本特殊主题设置一个特殊主题脚本的模块模块文件名指派为 source/plugin/插件目录/插件模块名.c la s s.p hp”。 特殊主题将
在后面的《特殊主题模块开发》中详细说明
??
您可以为每个模块设置不同的使用等级例如设置为“超级版主”则超级版主及更高的管理者可以使用此模块。
8
扩展项目模块可以在社区的特定位置扩展出新的功能通常用于扩展新的设置项目。项目的脚本文件以.inc.p hp结尾如test.inc.php模版为固定文件名位于插件目录的template/子目录中文件名与脚本名同名如test.htm扩展名为.ht m。添加相应的扩展项目模块时需注明程序模块、菜单名称。例如我们添加个人面板项目程序模块为test菜单名称是“测试”当插件启用后个人面板即家园的设置中会出现“测试”拓展项目。
在新插件内核中通过plugin.php方式访问的插件可直接通过plugin.php?id=xxx:yyy方式调用而无需再在后台定义为普通脚本模块只要source/plugin/xxx/yyy.inc.php文件存在即可。 如果 xx x和 yyy 同名 可直接通过plugin.php?id=xxx方式访问。
插件变量配置
插件接口中提供了一个通用的插件配置管理程序在大多数情况下可实现插件的参数配置省却了插件开发者自行编写后台管理模块即上面提到的“扩展项目管理中心”模块的麻烦。通常情况下应优先使用通用插件配置管理程序来实现插件的参数配置只有在通用程序确实无法实现时才自行编写后台管理模块。输入配置名称和配置变量名、选择合适的配置类型后 即可为此插件增加一个配置变量点“详情”可以编辑此配置变量的更多信息。为了方便插件
9
RackNerd 商家我们应该是比较熟悉的商家,速度一般,但是人家便宜且可选机房也是比较多的,较多集中在美国机房。包括前面的新年元旦促销的时候有提供年付10美元左右的方案,实际上RackNerd商家的营销策略也是如此,每逢节日都有活动,配置简单变化,价格基本差不多,所以我们网友看到没有必要囤货,有需要就选择。RackNerd 商家这次2022农历新年也是有几款年付套餐。低至RackNerd VPS...
韩国云服务器哪个好?韩国云服务器好用吗?韩国是距离我国很近的一个国家,很多站长用户在考虑国外云服务器时,也会将韩国云服务器列入其中。绝大部分用户都是接触的免备案香港和美国居多,在加上服务器确实不错,所以形成了习惯性依赖。但也有不少用户开始寻找其它的海外免备案云服务器,比如韩国云服务器。下面云服务器网(yuntue.com)就推荐最好用的韩国cn2云服务器,韩国CN2云服务器租用推荐。为什么推荐租用...
ProfitServer已开启了黑色星期五的促销活动,一直到本月底,商家新加坡、荷兰、德国和西班牙机房VPS直接5折,无码直购最低每月2.88美元起,不限制流量,提供IPv4+IPv6。这是一家始于2003年的俄罗斯主机商,提供虚拟主机、VPS、独立服务器、SSL证书、域名等产品,可选数据中心包括俄罗斯、法国、荷兰、美国、新加坡、拉脱维亚、捷克、保加利亚等多个国家和地区。我们随便以一个数据中心为例...