D-haha 的情侣博客 » 网站日志 » 关于 Z-blog 插件接口的一点简单想法
题记: 这个贴子也发到了Z-blog社区, 我对Z-blog甚为喜爱, 但能力所限, 谈不上正式的建议, 绝对是闲着没事儿瞎想, 然后说着玩的
正文: 忙了一晚上的Z-blog问题, 也看了一些插件, 感觉许多插件都需要改代码, 不大敢试了, 因为我最不愿意的就是改代码而背离官方版本. 想必很多人也有同感吧? 看来Z-Blog的插件接口问题的确很急迫, 没仔细想过这个问题, 也深恐能力低微, 更没有参考过WP那样的程序(不会PHP), 随便谈些想法吧.
操作系统下程序的安装大致分为三个部分, 系统文件, 注册表, 运行文件.
可以把Z-blog当成系统, 插件当成程序, 于是这样想:
建立一个空的包含文件, 如"sysroot.asp", 包含在尽可能靠前的地方,但在"option"后, 这个文件起到系统目录的作用.
建立一个文件, XML文档或数据库之类, 起到注册表的作用. 如"PluginReg.XML". 每个插件都有一个ID值, 可以是作者定义或安装时定义.
建立一个用来运行插件安装程序的文件, 和插件的安装目录.
插件要求: 安装有的文件要有: 安装包(XML文档?), 安装文件(不是系统提供的安装程序). 安装后的插件要有: 系统代码文件("functionFile.asp"), 运行文件, 所有安装过文件的列表(安装记录, 如"log.xml").
插件的安装过程是这样的:
1. 安装程序运行安装文件, 根据安装文件中的信息将数据注册进数据库或XML文档内, 如ID, 名称, 主程序文件, 等等.
2. 根椐数据库或XML文档中的内容重建"sysroot.asp", 将插件用到的代码以包含文件的形式包含在其中.
3. 将需要运行的文件生成到"Plugin"文件夹内.
4. 删除或不删除安装包和安装文件.(可选?)
运行插件就像现在这个样子就行了.
升级插件: 和安装差不了多少, 不改变ID值, 覆盖运行文件, 有必要时重写"sysroot.asp"就行了.
卸载插件:
1. 运行卸载程序, 根据ID中的值对应插件的注删项, 并重写"sysroot.asp".
2. 卸载程序读取安装记录, 删除所有安装过的文件.
3. 删除安装记录文件.
好像和Windows下安装程序差不多? 呵呵.举个小例子吧.
安装名为TEST的插件.
1. 运行它的安装文件, 向"PluginReg.xml"中增加这一标签:
假设这时还安有另一个插件,如下:
2. 根据"PluginReg.xml", 安装程序重新生成"sysroot.asp", 如下:
(注: 这里略去了"!--", 而"functionFile.asp"中包含了本应该手动插入到"c_system_event.asp"中的代码.)
3. 复制插件文件, 不用说了...
卸载时:
1. 删除"PluginReg.xml"中
"
2. 根据此时"PluginReg.xml"中的信息重新生成"sysroot.asp".
3. 根据插件提供的"log.xml"删除所有安装过的文件, 然后删掉"log.xml. 或删除"Test1.2052"文件夹?,
插件系统大致就是这样, 但这样对程序内核的要求就高了, 这部分工作最复杂也最艰巨, 要尽可能精减功能, 只保有最基本的; 要功能和代码的尽可能分离, 并要整齐而有条理(主要是方便读者和万一修改), 还要留有足够的接口, 比如再要个"sysconfig.asp"做参数设置接口, 有个"systemplate.asp"做模版接口等; 安装程序的工作可以交给插件提供的安装文件去做(如果这个文件是ASP), 但最好还是由插件安装程序来做(而插件安装文件为XML, 只提供安装信息), 这样安装程序的结构也比较复杂了.
尽量避免修改已有的博客系统文件, 这要尽可能的预计不大可预计的各种插件的功能和性质, 如果较难做到, 那就把文件尽可能的打散, 使改动一个功能时对其他功能尽可能小的造成影响. 安装过的插件则在"PluginReg.xml"(更应该是数据库)中记录修改过的文件, 甚至可以备份它们并在卸载时还原, 而将要安装的程序则可以提前说明将会修改哪个文件, 这样就知道将会和哪个插件造成冲突, 还可以将Blog系统文件索引成ID, 而安装程序通过某种算法检测是否会和已装插件冲突, 程序内核越清晰, 文件越"散", 造成冲突的可能就越小. 而如果插件的安装和配置足够完善的话还可以开发管理插件的插件, 类似于系统管理软件, 这些插件专门用来修改Blog系统文件以协调各种插件不再冲突, 然后Z-blog就可以不再升级, 而来靠插件和补丁生存了.
越说越复杂了, 搞得新一代操作系统都像要诞生了. ^_^
一点浅见, 绝对是说着玩儿的.
« 孤独之夜, "战争之夜".住在夜不闭户的小区(外一则: 感谢温雅静) »
不过真要改起来挺烦的,Z-BLOG的内核还是比较紧凑的<#include file=>要插入到哪个位置有必要考虑一下。
发表评论: