如何开发Discuz插件(一)
2014-07-24 14:32
225 查看
一个插件包含了一些源码文件和设置信息。Discuz的管理中心里提供了帮助建立插件设置信息的工具。首先在config\config_global.php里加入下列一行:
后,在管理中心的应用->插件页里的插件列表旁就出现了一个新的选项叫设计新插件。在这里就可以开发自用或它用的新插件。在新插件的设计中,得给插件一个唯一标识符(identifier),我将它设为imyoona_test1。它决定了我们的有关插件文件将放在source\plugin里的以这个唯一标识符为名的子目录里。
有多种不同性能的插件,这里我们造一个页面嵌入插件。我们得指明包含插件程序块的文件名。
当填完相关信息后,最后点击启用后,就能使用这个插件了。但是我们只是完成了插件的设置,也就是说将插件的一些信息告诉了Discuz系统,还没有开发插件的功能。接下来我们要造有关的文件和源码。
这个it.class.php文件的名字是在设置时规定好的。这里面的类名也是有规定的:plugin_<唯一标识符>.
这个类名符合了要求,那里面的函数又会如何被使用呢?这涉及到一个概念叫嵌入点。Discuz的网页里包含了很多个可以添加内容的嵌入点。当我们把前面config里的那个值改为2以后,我们就能在页面上看到这些嵌入点。
其中一个嵌入点叫global_header,这就是我们的类里有这样一个函数的原因。它的返回值会显示在网页上那个嵌入点的位置里。有两类嵌入点。一类叫全局嵌入点,如global_header,它存在于每个网页上。还有一种是非全局嵌入点,它们只存在于某个网页。如space_blog_title只存在于日志页里。这样的嵌入点得定义在前面的类的一个扩展类里,它的类名必须是基类名加底线再加程序块名,这里是home:
将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
$_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
相关文章推荐
- discuz 插件开发经验之如何运用 C::t 方法
- 如何开发Discuz插件(二):文库插件
- 如何简单部署用VSTO SE 2005开发的Excel,Word插件
- (转贴的)如何开发Firefox插件
- 如何开发一个Joomla插件 【转】
- 我是如何利用插件赚钱的(开发delphi6,VB 2008,Java ME等流行软件的第三方插件)
- 我是如何利用插件赚钱的(开发delphi6,VB 2008,Java ME等流行软件的第三方插件)
- Eclipse上如何通过安装插件来进行对C/C++的开发
- 如何用c++开发3ds max插件
- MVC架构在Discuz!插件开发的应用【附PPT下载地址】
- uchome插件开发中如何对管理员权限判断?
- Discuz! X 插件开发手册
- eclipse 插件开发中如何实现刷新和重编译
- PDF教程 - 如何开发Firefox插件
- PDF教程 - 如何开发Firefox插件
- 如何开发一个Joomla插件
- 如何在Eclipse中使用Ruby开发工具(RDT)插件进行Ruby开发
- ContactDemo - 演示如何为PIMShell开发插件
- word2007插件开发经验备忘1--如何开发word插件
- VS 2010 : 如何开发和部署Outlook 2010插件(Add-in)