如果你也象我一样,一直苦苦寻找合适的网站内容管理系统,那么本文可作为一个参考。
在为时半年的漫漫内容管理系统寻找历程中,Drupal、Tikiwiki、PhpNuke、PostNuke、Xoops、Tikipro、Mambo等一批优秀的内容管理系统逐个登台亮相,究竟我是如何找到它们?它们都有哪些优点,哪些缺点?最终我为什么选择Mambo?请看下述详细分解。
一直以来,我都在琢磨要在网络浪潮中做点什么,网络泡沫2000年破灭至今也有3、4个年头,网络经济的第二春是不是开始萌动了?当时的网络浪潮没能赶上,有点遗憾也很庆幸,遗憾是不能爽一把,幸亏没赶上,不然肯定死得很惨。存活下来的网络公司好像有收入了,收支平衡了,甚至开始盈利了。越想越坐不住,是时候该做点什么了!
且不管有什么好的想法或点子,肯定都要通过网站的形式来实现。现实的情况,不是没有想法,而是想法太多,每多一个想法都兴奋一阵子,失眠好几天,但却不知道能不能行得通,需要做个网站试试才知道。不可能每个想法都从头手工做一个网站,哪有这么多时间和精力,得有一个通用的网站内容管理系统才行。
我非常迫切需要一个好的网站内容管理系统,来实现或检验我过多的想法,好让我能安心睡觉。对于有8年Deiphi开发经验,从1996年开始使用Delphi1.0,做过n个MIS系统的我来说,做个网站理论上是小菜一碟,原理非常简单,肯定没有MIS复杂!可这仅仅停留在理论上,真正做起来麻烦死了!先说html语言,拿来做界面虽说是所见即所得,但是稍微不注意就弄得面目全非,好看点的界面需要css,输入控制需要javascript,纯粹是体力活,麻烦死了!要是Delphi,只要几个控件就轻松解决问题,html要老半天,试问一个网站有多少个界面,需要多少个老半天?再说开发调试,Delphi编译报错,当场就能找出问题所在,几秒钟就解决Bug,而php/asp的运行报错,不敢奢求快速找到错误,往往是几个钟头都找不到,几天都解决不了一个Bug!天啊,晕死了!我的网站内容管理系统什么时候才能做出来呀?
自从知道有开放源码的建站系统后,我马上放弃自己开发的念头,牛顿说过,伟大是因为站在巨人的肩膀上。现在有免费的巨人肩膀,干嘛不站?也许不会全部满足需要,但在别人的基础上扩展和改进,也比从头开发容易,更何况开放源码的系统有很多优秀开发团队参与,系统性能也会比我独自闭门造出来的车好,还可以跟着升级,这么美的差事,何乐而不为?
2003年11月,我开始了轰轰烈烈的网站内容管理系统(CMS)寻找历程。
首先映入我眼帘的是Drupal,4.3版本,官方网站http://www.drupal.org,这个名字好怪,不知道什么意思。Drupal系统的功能很多,可实现文章、论坛、Blog等应用,有很多第三方插件扩展使用;界面很简洁,我比较喜欢,我个人比较喜欢像Google那样简洁的界面,也许是被html界面搞怕了,有点花样的界面就感到头疼!Drupal更令我叹服的是数据库设计非常精简,20多个表就实现很多功能,通过严格的数据库编码,使多个功能共用几张表,在数据库设计精简方面堪称一流!但我个人并不赞赏这种数据库设计模式,这往往要付出额外的代价,一来源码很难阅读,二来系统功能扩展困难,三来系统维护也很复杂,四来可能会降低系统运行效率。但我最关心的是有没有汉化支持,幸亏国内有海微在做汉化工作http://www.hiweed.com,虽然汉化程度不高,但总比没有好。但令我奇怪的是,本来系统的运行速度还可以,可刚做了汉化,系统突然变得很慢,才几条记录,打开一个页面需要1秒多的时间,这可是在局域网,要是放到互联网上会成什么样子?!我大概看了一下,发现原来Drupal的汉化是放在数据库中的,如果界面上有100个英文需要翻译成中文,那么需要读取100次数据库,这么频繁的数据库读取,系统不慢才怪!我只有忍痛割爱了,cut!
接下来到http://www.sourceforge.net狂搜,搜到很多系统,如 eGroupware、 phpWebSite、PHPX 等等,感觉都不错,只是没有汉化,cut!顺便提一下,sourceforge.net也许是全球最大的开放源码交流网站,有很多优秀的开放源码项目都在这里,如phpMyAdmin、SquirrelMail等,还有许多诸如ERP、CRM的项目,真是应用具有。这段时间我是它的常客,发现大部分开放源码项目都是基于Apache+PHP+MySQL开发的,都是免费的支撑平台,再配合Linux/Unix/BSD,可以搭建完全免费的Web服务,放到互联网上,根本不必再为系统的版权和许可费担心受怕。
2004年1月,我发现了Tikiwiki,官方网站http://www.tikiwiki.org,这是非常优秀的网站内容管理系统,基于 PHP+ADOdb+Smarty等技术构建,功能非常齐全,主要特点:
1、有文章、论坛、分类目录、blog、图库、文件下载、在线调查、Wiki等功能。
2、用户权限管理很棒,可以设置启用哪些功能,设置哪些用户使用哪些功能。
3、管理后台和用户界面合在一起,通过用户权限控制界面的显示。
4、界面被分割成上中下、左中右区域,非常结构化。
5、有很多实用模块,如菜单、登录、搜索、在线调查、最新发表文章等等,可以灵活定制显示在左右界面区域。
6、界面很简洁,有很多界面模版来换肤,我非常喜欢。
看看汉化情况,只有Tikiwiki1.6的中文包,这时Tikiwiki已发布1.8版本了,汉化有点滞后。我怀着对Tikiwiki的钟爱,花了2-3天时间进行完全深度汉化,效果很好。随着深入试用,发现很多缺点:
1、页面生成速度有点慢。
2、一个功能只有一个主菜单,不能设置成多个菜单,比如文章管理就只有一个‘文章’菜单项,不能分开设置成‘公告’、‘新闻’等,而是所有文章都显示在一块。这样就限制了网站的灵活性了,因为网站有很多类型的‘文章’需要分开设置。
3、用户菜单和管理菜单混合在一起,通过用户权限控制菜单显示,菜单需要展开才能使用,比较复杂,也不直观。
4、文档支持比较滞后,Tikiwiki的用户手册还是1.6版本的,其实文档和代码一样重要,它像是一个窗口,让用户详细了解系统的操作,让开发人员了解系统内部构造,这样才能使系统发扬光大。
虽然如此,这并不影响我对Tikiwiki的喜爱,它的界面分块设置、功能模块结构化细分、用户和权限管理,使我看到了熟悉的MIS影子,感觉这就是我想要的网站内容管理系统。
我第一个想做的网站是中华文书网http://www.doc.net.cn,其中有一个成语查询功能,很显然Tikiwiki并没有此功能,必须定制开发。Tikiwiki文档上说功能开发很简单,可现实情况并不如此,不看不知道,一看吓一跳。
首先是smarty技术,它使数据库开发和界面设计分开,确实达到简化数据库编码的效果,但却增加一个中间层,使得界面的设计难度增加了,本来已经够烦的html代码要拆成很多小块,再分别用smarty语法编写,不敢渴望可视化设计,简直是晦涩难读!引入smarty技术后,每个小功能都要有一个数据库描述文件,一个界面文件,和一个数据库和界面的连接文件,且被放在不同目录,晕死了,怎么维护呀?另外由于smarty是动态生成界面文件的,速度有些慢,需要cache缓存来提高速度,也就是把首次生成的界面文件放在cache目录中,这些文件有一定的生命周期,到期后重新再生成。第一次打开界面时有点慢,以后就快多了。不过cache缓存有个后遗症,有时内容更新了,缓存却没有更新,用户就不能及时看到最新的页面,晕!
其次Tikiwiki的功能设计不是真正意义上的结构化设计,整个是一个大杂烩,所有功能模块的初始化代码堆在一起,不管你有没有用到,所有功能都被初始化,系统速度怎能不慢!核心代码中也混杂着多种功能模块的代码,使得核心代码乱七八糟,可读性太差!天啊!这么漂亮的外表怎么有这么肮脏的芯!
一个简单的成语查询功能被分成三个文件来实现,而且为了初始化成语功能,我必须修改Tikiwiki的初始化文件,加入成语初始化代码,好像改了2-3个文件,记不太清楚了。Tikiwiki的这种肮脏内核明显是不想让人往里增加新功能,也不想让人把它的功能去掉,简而言之,Tikiwiki就是一个封闭的系统,可扩展性太差!一旦Tikiwiki系统升级,原来更改的地方需要重新修改一遍,你说累不累!成语查询功能最终是做出来了,但我不敢再做别的功能了。
我带着一丝遗憾继续寻找,发现PhpNuke,官方网站http://www.phpnuke.org,已经发布7.0版本了。PhpNuke据称是目前使用最多的内容管理系统,已经有5-6年的历史了,而我现在才发现,真落伍!中文汉化支持也很及时,我迫不及待地装上,给我的第一印象是界面好土!也许界面的感受因人而异,但我对界面的评判标准并不高,一个好的界面并不要求充斥大量的图片和颜色,关键是布局要合理,颜色搭配要协调,而这两点PhpNuke做得并不好。界面还充满了各式各样的广告,有横条的,有竖条的,顶部放,底部放,左边放,右边放,中间也放,让人误以为进入了二流的地方电视台,各种治疗阳痿和性病的广告层出不穷,开个玩笑:-)。这些广告把界面撑得很长,真正想了解的PhpNuke功能的演示内容只占据一小块界面,造成中间大量的空白,像被疯狗啃过一般。我非常理解PhpNuke作为开源项目,日常开发和维护付出很多,收入来源又很少,资金肯定很紧缺,多做几个广告也无可厚非。但也不能这样作践自己,完全可以把界面布局合理一点,广告位置排放合理一点,让人看起来舒服,这样也对得起出钱的主儿,对得起观众,效果好了,自己的收益也会上去,实现三赢,岂不是很好?
闲话少说,进入管理后台一看,功能还挺多,有文章、下载、在线调查、FAQ、用户管理、权限管理等等,最重要的是支持第三方插件的安装和卸载,可以随意扩展系统的功能!这点比Tikiwiki强多了。经过多年的发展,PhpNuke社区的人气很旺,支持它的插件Addon、区块Block和界面风格Theme很多。
经过这么长时间的寻找和使用web内容管理系统,使我对web内容管理系统有较为深入的了解和认识,难免要做一下总结:
1、大凡web内容管理系统都有一个核心系统,实现许多web的常用功能,如文章管理、分类管理、用户管理、权限管理等。
2、提供系统的功能扩展机制,方便第三方开发和使用插件。
3、提供界面布局的控制机制,把界面布局切成上中下、左中右等区块,让用户能把自定义的功能放到这些区块上。
4、提供界面风格的控制机制,让用户开发和使用各种风格各异的界面风格,然后随心所欲的换肤。
评价一个内容管理系统是否优秀,先要看它有没有上述的4点特征,然后看运行效率如何,再看易用性如何,是否易于用户使用和开发人员扩展新功能。当然了,对于我们这些非英语用户来说,还要看它是否支持多语言,尤其是有没有汉化包,或容不容易汉化。
我根据上述原则对Tikiwiki和PhpNuke评价了一番,Tikiwiki的第1、2条是合并在一起的,难以扩展,不过用户管理和权限管理功能比较强大,第3、4条做得非常棒,易于使用。PhpNuke涵盖了上述4条特征,尤其是第2条做得很好,只不过第1条的用户管理、权限管理,第3、4条做得不是很好,易用性较差,界面很土。
后来发现了PostNuke,官方网站http://www.postnuke.org,它是PhpNuke的简化版和美化版,内核作了一些简化,对第3、4条做了一些简化和美化处理,界面果然没有广告了,不过和Tikiwiki相比还是略逊一筹。有一点让我担忧的是,它的版本升级太慢了,发现它的时候是0.723版,很长一段时间内才升级到0.726版,我怀疑它的社区不是很旺,作者是不是放弃升级了?汉化支持也很薄弱,我花了很长时间才找到它的汉化版,由无雨进行汉化http://www.chinammgg.com/,只有少数几个插件。
在这期间我也下载过Xoops中文版,不知道是汉化效果不好还是Xoops本身的问题,其界面布局和风格都很差,懒得试就把它cut掉了。因为现在已经不像当初一样,急于寻找巨人的肩膀,而是巨人的肩膀太多了,评价哪个肩膀更合适成了首要任务。Tikiwiki和Nuke各有优缺点,哪个都不能很好满足我的标准。这段时间痛苦死了,经常寻找Tikiwiki、Nuke的新版本,看看功能有没有改进提高,装了又卸,卸了又装,都成装CMS高手了,可我想要的它还是没有给我改出来。
不知不觉,到了2004年4月底,我还在Tikiwiki和Nuke之间犹豫不决,究竟哪个更合适?Tikiwiki和Nuke这两个巨人的肩膀都不太平坦,难以立足,必须动动手术,整平才行。经过多次全方位权衡,我决定从Tikiwiki开刀,虽然它的内核很混乱,但其设计思路很清晰,界面布局和风格的控制也很好,只需要把它的内核和功能模块分开就行,这与MIS开发有点类似,对我来说相对容易一些。我开始阅读它的内核代码,妈的有好几万行!就在我完成系统总体设计和数据库设计,要对Tikiwiki下手时,在Sourceforge.net中我发现Tikipro项目(这段时间我每天都要逛几次Sourceforge.net),Tikipro的发起者们也发现Tikiwiki存在的弊端,正在着手进行改进,还专门建个网站http://www.tikipro.org来进行开发的沟通和交流。我狂喜!世界上真是什么人都有,连我肚子里的蛔虫也在异国他乡存在!我天天泡在Sourceforge.net和Tikipro.org之间,密切关注Tikipro项目的开发动态,深入阅读Tikipro的技术文档,Tikipro开发者们对优秀CMS的见解很精辟,对Tikiwiki的弊端也了如指掌,他们为Tikipro的发展制定详细的规划,虽然很多英文我看得模棱两可,但我对他们佩服得五体投地。
又过2个星期,使用了Tikipro的2次体验版之后,我发现Tikiwiki内核还是没有净化,内核和功能模块的代码还是混杂在一起。怎么搞的,这帮鬼子都在干嘛?技术文档上不是写得很清楚吗,难道是我看错了?我又详细阅读技术文档,并订阅邮件列表,才发现他们已经走弯路了。本来工作重点应该是简化内核,剥离出功能模块,而这帮鬼子却在讨论如何把Tikiwiki的所有功能模块转到Tikipro中,既然这样的话,那Tikipro和Tikiwiki有什么区别?干嘛还要花精力来开发Tikipro?真是气死我了!
我在阅读Tikipro技术文档时发现,Tikipro要引进phpgacl来增强权限控制和管理。phpgacl是什么东东?难道要比Tikiwiki的权限管理还要好?我以往开发MIS系统时经常和权限管理打交道,对这比较在行也很感兴趣。任随兴趣驱动,我在Sourceforge.net中揪出phpgacl,原来它是用php+ADODB+Smarty开发的通用权限管理模块,设计思路非常好,能实现非常复杂的权限控制,提供很多实用的API函数,方便整合进已有的web内容管理系统中。phpgacl专门介绍使用它的主要用户,在仅有的两个用户中,排在第一的是Mambo - http://www.mamboserver.com,点击这个链接,2004年5月12日,我来到了Mambo官方网站。这是非常有意义的一个点击,在我所有鼠标的点击当中,这个是最有价值的!它让我放弃改进Tikiwiki的念头,结束了我的内容管理系统寻找历程。这一天晚上,睡梦中我不停的笑,掉了三颗大牙(其实我的大牙早在几年前已经掉了)。
让我们来看看,到底发生了什么,让我如此疯狂。
Mambo,中文意思为曼波音乐(源于古巴黑人音乐),是这个星球上功能最强大的开放源码的内容管理系统之一。在2004年4月20日伦敦举行的Linux用户和开发员大会上,Mambo从众多优秀的开放源码系统中脱颖而出,获得2004年度最佳Linux开放源码系统奖项,和它同场竞技的有KDE、Firebird SQL以及eGroupware等,这些都是知名度很高,被广泛使用的系统,现在却沦为Mambo的手下败将,可想而知,Mambo的魔力有多大!
Mambo的口号 Power in Simplicity! ( 强大源自简易!)
Mambo基于php+mysql技术开发,具有易于安装、管理简单、可靠性高等特点。
Mambo可在全球范围内构建各种类型的网站,小到简单的个人网站,大到复杂的公司应用网站,Mambo都可轻松搞定!
看到这里,我的血管都快爆了!鼻血不停往外喷。我还没用过Mambo,就已经被它征服!赶紧下载,版本为Mambo4.5-1.0.7。都到4.5版了,国内怎么很少有介绍?害得我找这么久才找到。不过狂喜的心情已经容不下任何抱怨,马上安装使用,功能确实强大,管理确实简单,界面布局合理,界面风格大方,比宣传材料有过之而无不及!Mambo系统设计非常灵巧和简单,把我心中许多悬而未决的设计难题,用很简单的方法实现了,真绝!
Mambo分为核心系统(core)、组件(component)、模块(module)、界面模版(template)等,采用结构化的功能设计和界面布局设计。
Mambo核心系统有前台用户界面和后台管理界面,方便最终用户使用和系统管理员管理,实现用户管理、权限管理、多语言管理、组件管理、模块管理、界面模版管理、数据库备份和恢复等诸多系统管理功能,提供文章管理、首页管理、网站链接、在线调查、横幅广告等常用组件,提供菜单、登录框、计数器等常用模块,还提供4个界面模版,满足小型网站使用游刃有余。其后台管理界面采用类似于MIS系统的界面布局,有菜单、工具栏、按钮、状态栏等,界面简洁大方,风格统一,符合Windows用户的使用习惯,不注意看还以为是在使用Windows应用程序。
Mambo的组件相当于功能模块,在界面的中央主区域显示,通过管理后台灵活安装和卸装,支持第三方开发,非常便于系统扩展。
Mambo的模块是一个个豆腐块,可显示在除中央主区域之外的任何界面区域,在界面的顶部、底部、左栏、右栏,还可以自定义显示位置,可通过管理后台灵活安装和卸装,还可动态创建基于html语言的简单模块,如友情连接、合作伙伴等。通过Mambo模块设置,可以定制出专业的前台用户界面布局,其机制比Tikiwiki更简单,功能更强大,更灵活!
Mambo的界面模版机制更绝,只需要一个index.php文件和一个css文件就搞定,index.php中大部分是html代码,另有几个php的echo、mosLoadModules函数,用于动态显示页面标题和动态调入Mambo模块,这种机制使界面模版的设计可以在准可视化的方式下进行,原来首页怎么设计,现在也是怎么设计,界面的美化程度就要看你的美感和美术功底了,首页设计完后把一些地方换成php函数动态调入就行。界面模版同样也可通过管理后台灵活安装和卸装,换肤相当容易。简单、灵活、高效,比起smarty技术来不知道要强多少倍!真是空前绝后,绝子绝孙!
此外Mambo还有Mambot,不知道怎么翻译,只知道它是一段小的代码,在页面显示之前进行某些特殊的处理,可以实现某个特殊功能,用来增强组件和模块的功效。
Mambo原来在Sourceforge.net安家,最近专门成立Mambo开发社区 http://www.mamboforge.net,把核心系统开发活动转移到社区中,另外还提供项目空间,让Mambo的爱好者创建各种各样的项目。目前Mambo开发社区非常火爆,规模迅速膨胀,有一百多个组件项目,几十个模块项目,几十个界面模版项目,还有其它各色各样的项目,这里就不一一罗列,感兴趣的赶快去看看。
除了Mambo开发社区之外,还有很多第三方网站提供Mambo技术支持,提供许多优秀的组件、模块以及界面模版。
Mambo真是优点多多,魅力无穷,许多强大的功能没法用简单的语言讲清楚,只有用了Mambo,才能真正体会到其中奥妙。这时也许有人较劲,Mambo优点这么多,难道就没什么缺点?有,肯定有!所谓人无完人,物无尽美,Mambo也不例外。
Mambo的权限管理功能稍弱,名义上Mambo使用phpgacl进行权限控制,应该很强大才是,实际上Mambo只借用phpgacl的壳而已,原因很简单,phpgacl是基于php+ADODB+Smarty开发,而Mambo则基于php+MySQL开发,技术底层明显有冲突,因此Mambo简化了phpgacl的API函数,并把它写死在核心代码中,并不能进行动态的权限控制。但对于只需几个人维护的网站,Mambo权限管理已经够用,大的网站,管理角色一多就不适用。权限控制将在以后的Mambo版本中得到改善,也许是Mambo4.6,也许是Mambo5.0,让我们拭目以待。
Mambo的多语言支持,尤其是中文支持比较弱,Mambo核心系统只提供前台用户界面的翻译接口,后台管理界面却没有提供,这就要求管理员要有几十个英文词汇量才行。好在Mambo开发社区已有人开个项目adminlanguage,专门提供Mambo后台管理界面的翻译接口,鄙人也开个项目Simplified Language for Mambo,专门提供Mambo核心系统、组件和模块的简体中文汉化。这两个项目配合使用,使Mambo管理后台界面得到很好的汉化。不过一旦Mambo核心系统升级,推出新的版本,adminlanguage项目组必须作大量的工作才能使新系统的后台管理界面具有翻译接口,要花一周甚至一个月的时间,势必影响Mambo汉化版及时推出,真是一大憾事!
手握着Mambo宝刀,做了一些汉化和界面模版的调整工作之后,我一口气建了五个网站:
中华文书网http://www.doc.net.cn
易达网上营销http://www.9819.com
好房网http://www.howfang.com
旅游直通车http://www.trip2.net
Mambo中国http://www.mambochina.net
踌躇满志,游刃有余!现在做个网站对我来说已是小菜一碟,正所谓磨刀不误砍柴功!不过这把刀磨了半年多,也真够久的。
Mambo是自由的、开放的、免费的好东东,我不敢一个人独享,要给大家分享。为了使更多的人了解Mambo,使用Mambo,享受Mambo的好处,我在Mambo中国http://www.mambochina.net,也就是Mambo中文社区中,介绍Mambo最新动态,提供最新核心系统、常用组件、模块和界面模版以及Mambo文档资料的下载。目前Mambo最新的稳定版为Mambo4.5-1.0.9,最新的候选版为Mambo4.5.1-RC-2。欢迎大家加入Mambo中文社区,交流Mambo的使用心得。同时希望更多的人参与Mambo组件、模块、界面模版的开发,参与Mambo简体中文的汉化,使Mambo在古老的神州大地上开花结果,发扬光大!
附录网址:
Mambo官方网站:http://www.mamboserver.com
Mambo开发社区:http://www.mamboforge.net
Mambo开发社区简体中文项目:http://mamboforge.net/projects/simpchinese/
Mambo中文社区(Mambo中国):http://www.mambochina.net
特别声明:本文如实地陈述了我的网站内容管理系统的寻找历程,对很多网站内容管理系统的描述只代表我个人的感受和观点,并不想贬低各种网站内容管理系统及用它们建设出来的网站。我个人认为,本文所提及的网站内容管理系统都非常优秀,是它们陪我度过半年多的漫长寻找历程,教会我许多网站内容管理系统的知识,让我知道如何评价和选择优秀的网站内容管理系统,在这里我对这些网站内容管理系统的作者及其社区里的开发者表示衷心的感谢和崇高的敬意!我衷心祝愿在以后的日子里他们做得更好,在各自的专长领域大放异彩!