Discuz!使用问题、建议、BUG等请到论坛反馈以便获得及时帮助,大型问题建议走付费途径。

插件,是基于 Discuz! 论坛系统之上,设计开发的一种小程序或小方案,用来实现对论坛现有功能扩展和改进。由于 Discuz! 已具有相当完备的底层架构,因此插件并不需要具备很多深层的设计思想,也不需要很专业的开发人员,只要把想实现的功能与论坛的基本体系挂接起来,论坛就能拥有更加个性化的功能。

1、添加一个插件设置

进到后台 => 扩展 => 论坛插件,可以看到当前安装的插件,如下图。

在新增那里,填写好插件名称和唯一标识符,提交后,就可以得到一个新的插件配置.

在新增加一个插件配置后,我们需要对插件的配置进行细节的配置。在上图中点详情,会看到如下图所示界面:

除了配置上图,还需要增加对应的模块来实现需要的功能。为了插件的安全和使用我们提供的统一调用接口,配置如下图对应的模块、对应模块的方法、模块的名称(模块的标识符)和 菜单名称即可增加新的模块。“直接链接URL”,如果填写这个选项,会在前台增加一个url链接,直接跳转到你填写的地址。

2、设置模块类型

模块类型有下面几种:

直接链接(前台菜单):可在前台右上角加入一个菜单项,可自主指派菜单链接的 URL。注意:由于引用外部程序,因此即便设置了模块的使用等级,您的程序如需权限判断,仍需要引用 common.inc.php 和插件相关的缓存文件,并自行判断使用等级是否合法。

前台调用(前台菜单):与直接链接类似,但其调用的是插件的一个模块,模块文件名指派为“./plugins/插件目录/插件模块名.inc.php”,由 plugin.php 调用此模块。

后台调用(后台菜单):可在后台插件设置中为此插件增添一个管理模块,模块文件名指派为“./plugins/插件目录/插件模块名.inc.php”,由 admincp.php 调用此模块。

包含运行(无菜单):可设置一个在论坛所有页面均包含运行的脚本,此脚本在 ./include/common.inc.php 中加载,脚本文件名指派为“./plugins/插件目录/插件模块名.inc.php”。请注意,为了不导致错误的插件影响论坛运行,在 common.inc.php 加载此模块时,屏蔽了错误信息,因此请务必仔细检查是否存在语法错误,任何微小的语法错误都将不被提示出来,并且导致此模块不被正常加载。如果您配置了不正确的包含脚本而导致论坛系统设置无法使用,删除服务器上相应的脚本文件即可解决。

您可以为每个模块设置不同的使用等级,例如设置为“超级版主”,则超级版主及更高的管理者(例如论坛管理员)可以使用此模块。

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

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

3、设置变量

点击上图中的“变量”就是显示的是本插件当前所有的变量设置。

变量的增加和前面插件的增加类似。例如增加一个“开启插件”的变量设置,点“详情”,会看到如下图所示的界面。按照每一项的右边的提示就可以完成一个变量的设置。

4、设置钩子

如果我们需要修改到 Discuz! 本身的代码,那么我们可以使用插件的钩子功能。如图所示:

点“编辑”,在打开的页面中,填写“钩子描述”和需要执行的“PHP代码”,如下图。然后点“提交”。

这样,一个钩子就添加成功了,可以在模板中通过 eval($hooks['hello'])或者在PHP程序通过$hooks['hello']调用。

{lang scrolltop}