Micolog插件机制(一)
十二月 24th, 2009
众人拾柴火焰高,Micolog想变的更好,大家的帮助是必不可少的。
虽然作为开源项目,大家可以很方便的修改源代码,但是,大家各改各的,很难整合的主版本中。
为此,我为Micolog的新版本设计了插件机制。在这里,简单给大家做个介绍。
该插件的设计,主要参考了Wordpress,并结合了Python语言的特点。个人感觉还是不错的。不过现在还在测试阶段,所以有可能在正式版本中会有所更改。
一.结构
有图有真相:
大家看左边的图,主要的实现代码,包含在micolog_plugins.py中。
所有插件都放置在plugins目录中:
从图上可以看到,目前plugins中包含两个插件。
- googleAnalytics
- wordpress
其中:
- googleAnalytics是一个单文件的插件,如果插件功能比较简单的话,可以直接将文件放置在Plugins目录下
- 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爱好者,加入到开发人员的队伍里面来。
先秀几个截图吧:
学习了。
支持!希望有更多的功能~
micolog,千秋万代,一统江湖
这个是可以让大家都参与到插件制作中来,呵呵
刚刚接触micolog学习学习~
微博客好像在走下坡路啊~~
期待正式版本!
多谢xuming,呵呵,看着micolog越来越好,我们这些用户和特别自豪!
支持!希望能有批量修改已发布博客的插件!
迫切需要一个过滤垃圾留言的插件,这段时间我被spammer们整惨了
太强大了!!!!!!!!
老大的设想是好的,但是和谐天朝即将彻底封杀google除了搜索外其他服务的消息已经是确实的了,看来美好的micolog只能给老外用了
支持,等我的反向代理弄好了,马上升级
越来越强大了,坚持micolog到底
看到这贴真高兴~