如何开发Discuz插件(一)

一个插件包含了一些源码文件和设置信息。Discuz的管理中心里提供了帮助建立插件设置信息的工具。首先在config\config_global.php里加入下列一行:
$_config['plugindeveloper'] = 1
后,在管理中心的应用->插件页里的插件列表旁就出现了一个新的选项叫设计新插件。在这里就可以开发自用或它用的新插件。在新插件的设计中,得给插件一个唯一标识符(identifier),我将它设为imyoona_test1。它决定了我们的有关插件文件将放在source\plugin里的以这个唯一标识符为名的子目录里。


有多种不同性能的插件,这里我们造一个页面嵌入插件。我们得指明包含插件程序块的文件名。

当填完相关信息后,最后点击启用后,就能使用这个插件了。但是我们只是完成了插件的设置,也就是说将插件的一些信息告诉了Discuz系统,还没有开发插件的功能。接下来我们要造有关的文件和源码。

这个it.class.php文件的名字是在设置时规定好的。这里面的类名也是有规定的:plugin_<唯一标识符>.

class plugin_imyoona_test1 {
	function global_header() {  return "Hello World"; }
}
这个类名符合了要求,那里面的函数又会如何被使用呢?这涉及到一个概念叫嵌入点。Discuz的网页里包含了很多个可以添加内容的嵌入点。当我们把前面config里的那个值改为2以后,我们就能在页面上看到这些嵌入点。

其中一个嵌入点叫global_header,这就是我们的类里有这样一个函数的原因。它的返回值会显示在网页上那个嵌入点的位置里。有两类嵌入点。一类叫全局嵌入点,如global_header,它存在于每个网页上。还有一种是非全局嵌入点,它们只存在于某个网页。如space_blog_title只存在于日志页里。这样的嵌入点得定义在前面的类的一个扩展类里,它的类名必须是基类名加底线再加程序块名,这里是home:

class plugin_imyoona_test1_home extends plugin_imyoona_test1 {
  function space_blog_title() { return "Hi"; }
}
将config里的值改为0后就能看到这个插件给网页带来的变化。


一个插件可以有多个模块。模块的类型有多种。上面我们讨论的是页面嵌入,把东西显示在某个现有网页的指定位置。我们还可以有扩展项目和程序链接。



程序链接让我们将菜单项目添加在各种导航菜单上。



注意家园导航指的是下图左侧的竖立的菜单,而不是横放的菜单。

当我们加入家园导航项目模块时,没有显示顺序的选择。这得到界面->导航设置->家园导航里去设置,注意新加的家园导航项目模块已经自动的被加在名单里了。

在这页上也可以直接添加导航项目,与导航项目模块的不同,我的理解是前者适合自用,后者可以成为第三方插件。



'
前面我们介绍的是开发并使用一个插件的基本步骤。如果我们要把自己开发的插件给别人用的话该怎么办呢?在插件设计里有个导出xml的功能,它将插件的设置信息都放入了这个xml文件里。将这个xml文件和其它插件文件都交给对方,放入对方网站与上面说的同样的地方,然后从他的管理中心里启动后就能用了。


参考资料:
1。Discuz!插件开发手册 http://faq.comsenz.com/library/plug/plugin/plugin_pre.htm
2。Discuz! 技术文库 http://dev.discuz.org/wiki/index.php
3。2013年第一届Discuz!插件制作开发培训视频 http://v.youku.com/v_show/id_XNTMwNTI3NzU2.html
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值