正在加载...

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

相关阅读:



“Micolog插件机制(一)” 共有14条留言

我要留言


google reader 抓虾
bloglines my yahoo
哪吒 鲜果
* 更多订阅本站方式请看 订阅帮助