正在加载...

Micolog插件机制(一)

十二月 24th, 2009

众人拾柴火焰高,Micolog想变的更好,大家的帮助是必不可少的。

虽然作为开源项目,大家可以很方便的修改源代码,但是,大家各改各的,很难整合的主版本中。

为此,我为Micolog的新版本设计了插件机制。在这里,简单给大家做个介绍。

该插件的设计,主要参考了Wordpress,并结合了Python语言的特点。个人感觉还是不错的。不过现在还在测试阶段,所以有可能在正式版本中会有所更改。

一.结构

image

有图有真相:

大家看左边的图,主要的实现代码,包含在micolog_plugins.py中。

所有插件都放置在plugins目录中:

从图上可以看到,目前plugins中包含两个插件。

  1. googleAnalytics
  2. wordpress

其中:

  1. googleAnalytics是一个单文件的插件,如果插件功能比较简单的话,可以直接将文件放置在Plugins目录下
  2. wordpress是一个复杂插件,该插件包含多个py文件,还包括一个名为wpimport.html的模板文件

按照Micolog插件机制的默认规则,插件引擎将搜索plugins目录,该目录下的所有py文件和目录都将视为一个插件。

从结构上看,micolog支持两种方式的插件,单文件插件和目录插件。

二.接口类型

Micolog的插件接口类型,从功能上可以分为:Filter Plugin和Action Plugin,另外还包含一类特殊的插件Import Plugins.

  • Filter Plugin:
    用于替换或修改Micolog中插入点处的文本。
    为此,Micolog在系统内部定义了一系列的Filter tag。在插件中使用register_filter系列函数进行注册,那么在相应的Filter tag处,将会调用插件中指定的函数,用来返回结果。
    例如:
    我们定义了Head filter,可以在这个Filter中用来增加html head标签,如加载script脚本,加载css文件等
    我们定义了Footer filter,可以在这个Filter中增加统计代码
    另外,Micolog还支持自定义Filter,只要在template文件中使用{%mf filter_name%}{%endmf}就可以增加Filter插入点,我们就可以为这个插入点增加Filter Plugin了
  • Action Plugin
    Action Plugin是一个事件处理器,在Micolog中的一系列事件(如增加,删除,修改文章内容)中,都会调用这些已经注册的Action Plugin.
  • Import Plugin
    Import Plugin是一类特殊的Plugin专门用于向Micolog导入数据,该类型的插件,将会显示在系统管理页面的Import/Export页面,通过扩展这个Plugin,实现不同类型的Blog系统,向Micolog平滑的进行迁移。
    在Micolog的新版本中,对数据导入模块进行了重新设计,将采用task queue的方式进行导入,使用这种方式,能有效的解决单次导入时间过长的问题。

我们编写的插件,可以同时实现以上一种或多种插件接口。通过这些接口,希望很让更多的micolog爱好者,加入到开发人员的队伍里面来。

先秀几个截图吧:

image

image

相关阅读:



我要留言


  • 热门文章

  • 最近评论

  • 最近文章

  • 分类杂谈

  • 标签

    Appdrop Google Google App Engine IT Micolog Python SCapture ajax apple appspot best gae bug buzz db gae gfw google google-app-engine-toturial hostmonster html5 linux live micolog picasa plugin python script skpye skydriver svn system taobao tutorial ubuntu vmware vs2008 windows live writer 乐一个 地震 女装 王石 现代寓言故事 生活 艺术 范跑跑 输入法 郭跳跳
  • 归档

  • 友情链接