Discuz!NT 扩展之空间、相册、交易插件
2011-04-06 22:04
190 查看
Discuz!NT 扩展之空间、相册、交易插件
Discuz!NT 对系统的扩展性提供了很好的支持,第三方开发者可以基于Discuz!NT扩展点开发很多插件,来改善或者扩展系统的功能。那么Discuz!NT 扩展点都体现在哪些地方呢?是如何来实现这些扩展点,让它在主系统上能够很好的插拔呢?
先来一张Discuz!NT的插件系统类图吧!(根据自己理解画的)
![](http://hi.csdn.net/attachment/201104/6/0_1302097958viin.gif)
构建插件系统,主要是为了让插件能够在主系统上进行很好的插拔。主系统通过调用SpacePluginProvider,AlbumPluginProvider,MallPluginProvider来与插件进行交互(因为在这些PluginProvider中利用反射创建插件实例,所以主系统完全可以通过PluginProvider使用插件提供的功能)。
可以查看SpacePluginProvider的源码:
![](http://hi.csdn.net/attachment/201104/6/0_1302098126MFPR.gif)
第三方开发者开发的插件需要实现SpacePluginBase,AlbumPluginBase,MallPluginBase这些抽象类的方法。下面是通过Reflector看到的SpacePlugin源码:
![](http://hi.csdn.net/attachment/201104/6/0_1302098086H0fZ.gif)
插件开发好了后,又是怎样将它插入主系统的呢?还是以空间插件为例,从网上下载了空间插件后,只需要做以下几步:
1 复制下列目录到 Discuz!NT 论坛目录 覆盖同名目录
bin
admin
config
install
javascript
templates
space
2 运行 http://您的域名/bbs/install/pluginsetup.aspx 按照提示进行操作即可。
3 在后台模板管理中重新生成模板。
4 Discuz!NT 3.5.1版本之前在 后台 - 全局 - 基本设置 里开启模块。
Discuz!NT 3.5.2版本在 后台 - 全局 - 常规选项 - 站点信息 里开启模块
通过查看PluginSetup.aspx.cs的源码:
![](http://hi.csdn.net/attachment/201104/6/0_1302098148RN15.gif)
可以发现在安装过程中,需要更改数据库,导入插件菜单
更改数据库只需执行脚本就可以完成,导入插件菜单这儿就简单的说一下原理:
在后台管理系统中的导航菜单都是通过navmenu.config文件存储的:
![](http://hi.csdn.net/attachment/201104/6/0_1302098134Bkbo.gif)
导入插件菜单首先就得更改navmenu.config文件。
然后再根据navmenu.config生成json数据:
![](http://hi.csdn.net/attachment/201104/6/0_1302098079ZBOy.gif)
通过navmenu.js存储:
![](http://hi.csdn.net/attachment/201104/6/0_1302098046kGFh.gif)
在后台页面中通过javascript访问navmenu.js对导航控件进行数据绑定。
到这儿,空间插件就很好的插入到主系统了。
Discuz!NT 对系统的扩展性提供了很好的支持,第三方开发者可以基于Discuz!NT扩展点开发很多插件,来改善或者扩展系统的功能。那么Discuz!NT 扩展点都体现在哪些地方呢?是如何来实现这些扩展点,让它在主系统上能够很好的插拔呢?
先来一张Discuz!NT的插件系统类图吧!(根据自己理解画的)
![](http://hi.csdn.net/attachment/201104/6/0_1302097958viin.gif)
构建插件系统,主要是为了让插件能够在主系统上进行很好的插拔。主系统通过调用SpacePluginProvider,AlbumPluginProvider,MallPluginProvider来与插件进行交互(因为在这些PluginProvider中利用反射创建插件实例,所以主系统完全可以通过PluginProvider使用插件提供的功能)。
可以查看SpacePluginProvider的源码:
![](http://hi.csdn.net/attachment/201104/6/0_1302098126MFPR.gif)
第三方开发者开发的插件需要实现SpacePluginBase,AlbumPluginBase,MallPluginBase这些抽象类的方法。下面是通过Reflector看到的SpacePlugin源码:
![](http://hi.csdn.net/attachment/201104/6/0_1302098086H0fZ.gif)
插件开发好了后,又是怎样将它插入主系统的呢?还是以空间插件为例,从网上下载了空间插件后,只需要做以下几步:
1 复制下列目录到 Discuz!NT 论坛目录 覆盖同名目录
bin
admin
config
install
javascript
templates
space
2 运行 http://您的域名/bbs/install/pluginsetup.aspx 按照提示进行操作即可。
3 在后台模板管理中重新生成模板。
4 Discuz!NT 3.5.1版本之前在 后台 - 全局 - 基本设置 里开启模块。
Discuz!NT 3.5.2版本在 后台 - 全局 - 常规选项 - 站点信息 里开启模块
通过查看PluginSetup.aspx.cs的源码:
![](http://hi.csdn.net/attachment/201104/6/0_1302098148RN15.gif)
可以发现在安装过程中,需要更改数据库,导入插件菜单
更改数据库只需执行脚本就可以完成,导入插件菜单这儿就简单的说一下原理:
在后台管理系统中的导航菜单都是通过navmenu.config文件存储的:
![](http://hi.csdn.net/attachment/201104/6/0_1302098134Bkbo.gif)
导入插件菜单首先就得更改navmenu.config文件。
然后再根据navmenu.config生成json数据:
![](http://hi.csdn.net/attachment/201104/6/0_1302098079ZBOy.gif)
通过navmenu.js存储:
![](http://hi.csdn.net/attachment/201104/6/0_1302098046kGFh.gif)
在后台页面中通过javascript访问navmenu.js对导航控件进行数据绑定。
到这儿,空间插件就很好的插入到主系统了。
相关文章推荐
- DiscuzNT 商品交易插件设计之[线上交易]---支付宝
- DiscuzNT 商品交易插件设计之用例模型
- Discuz NT 相册查看插件.把highslide用在Discuz NT 相册上.
- Discuz!nt插件开发简单实现
- 【中文】Joomla1.7扩展介绍之Simple Image Gallery(相册插件)
- Qt中扩展插件 命名空间的问题
- SyntaxHighlighter google开源项目(语法高亮、代码着色) - 开源空间 - 共享社区共享空间 - Powered by Discuz!NT
- 插件__Discuz!X 插件制作教程[以DST官方网站的"扩展"为例]
- Discuz!NT 2x常用插件及资源整理
- Discuz!NT 邮件插件机制分析
- Ucenter Flickr相册插件 节省主机空间
- Discuz!NT 邮件插件机制分析
- Discuz NT 3.1 在虚拟空间上安装之后 只能打开首页
- Discuz!NT 邮件插件机制分析
- Discuz!NT 邮件插件机制分析
- 解决Discuz!NT"Code: 100, Message: 指定..."问题
- oracle扩展表空间
- VM虚拟机中Linux扩展磁盘空间的方法
- 【干货】Chrome插件(扩展)开发全攻略
- Linux如何扩展XFS文件系统以完全使用额外空间