您的位置:首页 > 编程语言 > Java开发

Discuz!NT 扩展之空间、相册、交易插件

2011-04-06 22:04 190 查看
Discuz!NT 扩展之空间、相册、交易插件
Discuz!NT 对系统的扩展性提供了很好的支持,第三方开发者可以基于Discuz!NT扩展点开发很多插件,来改善或者扩展系统的功能。那么Discuz!NT 扩展点都体现在哪些地方呢?是如何来实现这些扩展点,让它在主系统上能够很好的插拔呢?
先来一张Discuz!NT的插件系统类图吧!(根据自己理解画的)


构建插件系统,主要是为了让插件能够在主系统上进行很好的插拔。主系统通过调用SpacePluginProvider,AlbumPluginProvider,MallPluginProvider来与插件进行交互(因为在这些PluginProvider中利用反射创建插件实例,所以主系统完全可以通过PluginProvider使用插件提供的功能)。
可以查看SpacePluginProvider的源码:



第三方开发者开发的插件需要实现SpacePluginBase,AlbumPluginBase,MallPluginBase这些抽象类的方法。下面是通过Reflector看到的SpacePlugin源码:



插件开发好了后,又是怎样将它插入主系统的呢?还是以空间插件为例,从网上下载了空间插件后,只需要做以下几步:
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的源码:



可以发现在安装过程中,需要更改数据库,导入插件菜单
更改数据库只需执行脚本就可以完成,导入插件菜单这儿就简单的说一下原理:
在后台管理系统中的导航菜单都是通过navmenu.config文件存储的:



导入插件菜单首先就得更改navmenu.config文件。
然后再根据navmenu.config生成json数据:



通过navmenu.js存储:



在后台页面中通过javascript访问navmenu.js对导航控件进行数据绑定。
到这儿,空间插件就很好的插入到主系统了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息