世界上最好用的工具是锤子,因为上面一个按纽都没有,很多工具没人使用不是因为功能不好,而是功能太多。cms 是网站内容管理系统,它的作用是帮助网站所有者自主创作站点内容,并对这些内容进行组织。目前,全球大约有数千家 cms 供应商,他们的目标市场各不相同,比如 的客户包括 cathy pacific 和 2004年雅典奥运会,而 这样的轻量级系统几乎可以应用到任何小规模的组织。除了商业 cms ,近年来如雨后春笋般冒出来的开源 cms 也让人目不暇接,开源 cms 最大的特点是功能丰富,既然开源,人人都愿意将自己心目中理想的功能加进去,最终的局面是,你想知道某个开源 cms 的用法,你需要去书店买一本书并把它读完,在 你能找到很长的一个,这些书都是教你如何使用那些 cms 系统的。本文从使用者的角度审视现今国外主流 cms 系统的庞大功能,并对这些功能进行评点,全文基于以下开源 cms 产品:, , , , , ,其中前三者是的获得者。
wysiwyg web 编辑器
所见即所得 (wysiwyg)web 编辑器是你编写网站内容的最重要的工具,一个好的编辑器可以生产出优秀的代码并让你拥有高质量的网站内容,目前最好的 wysiwyg 编辑器包括, 和 两种,这两种编辑器在各 cms 产品中被集成的最多,我个人最喜欢 tinymce,以为它更轻量。如果你想看到更多 wysiwyg web 编辑器,你可以访问。
wysiwyg web 编辑器是任何 cms 系统必备的功能,否则,让用户自己创建内容就成了空话。
模板
模板是 cms 将内容和形式分开的很好的机制, cms 系统必须允许使用者更改站点外观,不管是使用模板还是可视化参数调整。但模板也常常是一个 cms 系统最令人头痛的部分,你可以下载免费的模板,也可以花钱请人做,若要自己做,你会发现那是实在不是个轻松的任务。
静态 url
友好的,静态的 url 不仅让用户,而且让搜索引擎更舒服,现在的 url rewrite 技术已经可以很容易实现这个功能,对所有 cms 来说,这是必需的一个功能。但您必须纠正一个偏见,并非只有 html 后缀才叫静态 url,任何不含查询字符串的 url,不管是什么后缀,都是静态 url。
全站搜索
cms 系统一般使用后台数据库存储网站内容,这让全站搜索变得易于实现。让访问者快速找到想要的内容是 cms 的首要任务,这是一个 cms 系统必须拥有的功能。
站点地图
站点地图将全站内容的静态链接放在一个扁平页面中,对访问者和搜索引擎来说,这都是一个方便之举,自动生成站点地图,是任何 cms 系统都需必备的一个功能。
自动导航菜单
网站创作者一边添加内容,系统一边对这些内容进行自动组织,并生成导航菜单,这些自动生成的导航菜单可以有效地引导访问者发现他们想要的内容。这个功能对所有 cms 系统都非常必要。
自动面包屑导航
面包屑导航帮助访问者在任意导航深度中都能从原路返回,这是网站易用性的一个重要指标,该功能非常重要。
自动缩略图
用户向网站上载图片之后,cms 系统应该能自动按当前工作区的大小生成缩略图,该功能对任何网站都非常必要,毕竟不是所有用户都知道如何使用缩小图片,而如今主流的图片源,数码相机,即使放在最低分辨率模式下,其产生的图片尺寸仍然远远大于网站的实际需求。
批量上载
这个功能允许用户一次上载多个文件,该功能一般通过 zip 压缩包实现,用户直接将批量文件压缩成 zip 文件,上载后,cms 会将这些文件解开并防止在相应位置。该功能并非对所有站点都实用,如果你的站点并不需要大量资源的上载,该功能是可有可无的。
拼写检查
拼写检查一般通过两种方式实现,一种是纯客户端方式,用户在浏览器中创作内容的时候,客户端的 javascript 将用户的拼写同位于客户端的字典进行对照检查;第二种方式是,ajax 方式,用户在客户端创作的同时,使用 ajax 机制将当前拼写同服务器端的字典进行对照,无论何种方式,拼写检查都会给客户与服务器带来额外的负担,虽然拼写检查听起来很好,但如果是在 word 或 excel 中,那当然没问题,一切都在本地,在 web 这个领域,拼写检查要复杂得多。
captcha
captcha 是这样一种机制,网站在接收用户提供的信息的时候,为了防止被一些自动程序滥用,会生成一段只有人类才能识别的识别码要你输入,用来区分人和自动程序。该功能对大型的,需要大量用户提供信息的网站来说是非常必要的,比如 craigslist.org ,为了防止人们在某些版块使用自动发帖机重复张贴广告,便使用了 captcha 机制。但对小规模的网站,由于你的访问量和知名度还达不到会被滥用的程度,captcha 是可有可无的东西。不论怎样,选择 captcha 机制之前,一定对该 captcha 进行测试,我遇到过很多人类无法识别的 captcha 识别码系统,只能说,他们的 captcha 机制太极端了。
版本控制
按理说,版本控制是任何 cms 系统必须拥有的功能,但在实际使用中,我发现,这个复杂的版本控制功能并不想人们想象的那么好用,内容管理中最可怕的是出现内容混乱,拿你自己的文件系统做比较,有多少人在自己的文件夹中为一个文件设立不同的版本呢,即使有,最终怕也将以混乱收场,版本控制在很多场合就是将简单的问题复杂化。
但在某些场合,比如你的网站由很多人参与交叉创作,大家为了防止同一个文件被其他人错误地改动,版本控制可以帮你追溯较早的版本。版本控制功能的一个极端的例子就是 wiki, 上的一个热门词条上会有数千个修改记录,你可以凭借这些记录将这个词条追溯到几天前或几个月前的某个版本,当然 wikipedia 本来就是给 geek 们用的。
更改审计与追踪
这个功能的命运和版本控制一样,人人觉得它很重要,但人人都不喜欢。该功能可以记录站点内容的更改历史,谁在什么时候,对什么内容,做了什么样的改动,如果你有一个网站内容创作团队,为了防止团队成员犯错,这个功能是非常有用的,如果只是三五个人一起商量着做做内容,不审计也罢。
内容审批发布
内容经审批是除了版本控制之外,另外一个企图将简单的事情复杂化的功能,现在网站越来越注重内容的时效性,假如你发布了一条新闻,在等待主管审批的过程中别的网站已经抢先发布了,这种无形的损失是巨大的,与其将所有东西都完善了再做,不如一边做一边完善。
当然,如果你的内容如果失当会引起诉讼或其它麻烦,这个审批功能还是必要的。
电子邮件地址验证
有一些网站,似乎特别看中用户在注册的时候所提供的电子邮件地址的合法性,尽管这些邮件地址对他们来说可能毫无价值。他们会向你提供的邮件地址发送一个验证码,你收到验证码之后,通过点击一个链接完成验证,这听上去很严密,也很科学,但到底为了什么,你花费了这样大的气力只为了获得一个真实的 email 地址吗?即使是这样,这个地址对你来说有什么用处?如果您希望通过这个地址定期向用户发送产品资料,请一定记住,我们处在一个即将被垃圾邮件搞疯的时代,一个人每天收到200封垃圾邮件不是什么希奇的事,您定期发送给用户的邮件很可能象其它垃圾邮件一样被直接删除,或者直接被 outlook 的垃圾邮件过滤功能拖进垃圾箱。
这个机制还存在一个缺陷,就是很多人提供的免费 email 地址在许多网站是压根就不能用的,很多人等了一个下午也不见验证码回来,我的意见是,如果要求用户注册,如果用户的信息对你没有任何经济价值,那只要用户提供用户名和密码就足够了。
输出到 html 静态文件
对一些可能遇到海量访问的大型站点,将内容输出到静态 html 对性能有一定的帮助,但必须认识到输出 html 静态页面的问题,将站点全部生成 html 文件是非常耗时的,所以很多 cms 系统使用了服务器上计划任务来自动实现这个转化过程,这就面临着一个内容滞后的问题,就是说你的站点无法做到实时更新。另外,一些细微的内容更改都需要全站重建(rebuild)是很令人沮丧的。事实上,随着服务器计算能力的成倍提高,现在的服务器已经可以在豪秒级完成一个页面的渲染,这点时间比起网络上本身的延迟几乎是无法觉察的。
这里还存在另外一个误区,有些人认为只有 html 后缀的网页才是对搜索引擎友好的静态页面,事实上,任何不包含查询字符串参数的 url 都是 seo 友好的静态页面,它们之间没有区别,搜索引擎对 aspx, html, jsp 等各种不同后缀的 url 是一视同仁的,只要你不包含查询字符串。
内容采集
使用内容采集功能,你可以自动从别的网站抓取内容并发布在自己的网站上,这是个非常无耻的功能,一个网站最终是否成功,比的是内容,而且是原创内容。另外,内容采集是个很不可靠的功能,比如,被抄袭网站突然改版,内容采集只能重新定义采集规则,而那些规则是极其复杂的。
现场编辑
现场编辑允许内容创作着一边浏览自己的网站,一边在发现问题的时候,直接登陆到 cms 系统进行现场修改。有一些 cms 系统,分了严格的前端和后端,内容创作都是在一个独立的后端管理系统中实现的,内容发布后,在前端可以看到结果。现场编辑是个非常好的功能,可以让创作者在流畅的思路下进行创作。
回收箱功能
人难免出错,但出错了还有挽救的余地,这就很好,这个功能保证创作者即使不小心删除了某个内容,仍然能从回收箱找回。
访问统计
这个功能非常实用,好的统计功能可以让你随时掌握网站的访问情况,以便调整自己的优化或广告策略。访问统计功能有两种实现方式,一种是全内置的,所有统计功能由 cms 系统自身完成;另一种使用第三方统计服务, cms 系统只是将第三访提供统计代码插入所有网页。目前,最好的第三方免费统计服务是由 google 提供的,你可以到 查看更多详细介绍。
内容翻译功能
这是个听上去不错,事实上却很糟糕的一个功能,谁都想按一个按纽就把自己的中文网站翻译成英文,但迄今为止,世界上最好的翻译引擎 的翻译结果仍差强人意,更不要说那些二流或三流的。如果你觉得好玩,这个功能自然好玩,但用作正式网站却要十分谨慎,这些翻译引擎的翻译结果往往让人苦笑不得。
另外,几乎所有的 cms 翻译功能都是以调用第三方 webservice 或以 screen scrape 方式实现的,这就为它们的可靠性埋下隐患,因为你不能保证这些免费的第三方借口什么时候会突然改变。
内容聚合
两年前,内容聚合(rss)炙手可热,流行得不得了,现在社会网络取代了一切,2008年你还在自己的网站上提供 rss 链接将是很土的事。
多语种 (多国语言)
既然 cms 提供的在线翻译根本不可靠,就老老实实自己做多国语言内容好了。好的 cms 允许创作者只是提供某项内容的不同语言版本,由系统自动对这些不同语言版本的内容进行组织。
支持 utf-8
要支持多国语言,cms 就应该尽可能地使用 utf-8 编码。
xhtml 支持
现在,越来越多的浏览器加入 w3c 阵营,包括 ie,支持 w3c 标准的 cms 对生成的内容可以更好地掌控,支持更多的浏览器,对浏览器页面渲染效率的支持也更好。xhtml 可以让 cms 产生的代码更合乎规范,但需要注意的是,很多 cms 系统靠 wysiwyg 编辑器创作内容,这就要求你的 wysiwyg 编辑器能够产生 xhtml 代码,目前,生成代码最合乎 xhtml 规范的编辑器是 。
博客功能
博客和普通内容的区别是,博客基于时间,支持 tag,对 cms 来说,同时包含博客功能不是多么难的事,可能有人会说,何不使用更专业的博客系统。比如 wordpress,问题是你很难将那些专业的博客系统无缝集成到你的站点,更不要说那些系统部署起来也并不容易。cms 功能中包含博客的目的是,很多企业网站往往在自己的站点中推出团队博客,以便拉近和客人之间的距离,在个人网站中加入博客,也会让你的访问者对你了解得更多一些,政府网站,或其它官僚机构网站也是这样。
在线聊天功能
这个功能在90年代末非常流行,那是 web 聊天和 irc 聊天的时代,现在这样的功能实在多余,人们更喜欢使用 msn, skype,或者 qq.
广告管理功能
下载一段广告代码(不管是来自google,还是alimama),放到自己的网站,然后等着别人上门送钱;或者你有自己的广告渠道,cms 的广告管理功能就是在你的网站上部署广告的,如果你对自己的网站的前途非常自信,这个功能可以很好地帮你管理广告,然而如果你属于不幸运的99%,你根本不可能从广告中获得真正收益。如果你是企业网站,或者政府网站,或者某些机构性网站,压根就不该在上面部署任何第三方广告。
论坛功能
cms 中的论坛肯定无法和 discuz! 一样的专业论坛程序相比,但可以帮助要求不高的用户减少部署时间,并能让论坛功能直接集体成在网站中。但实际使用中我发现,这种系统往往成为鸡肋,如果你要部署的是大型论坛,那应该使用专业的论坛系统,如果你的论坛可能没几个人访问,干脆不要部署。
faq,招聘,产品管理等功能
我的想法是,如果这些简单的功能都需要独立的模块去实现,最终一个 cms 系统会被自己压垮,这些功能完全可以象创建普通内容那样创建,比如,如果你的企业要在网站上发布招聘信息,你没有必要要求那个系统和智联招聘一样,仅仅是编写几段文字,几个表格就可以了。
guest book
从功能上讲,这个模块无可厚非,但这个流行于90年代末的功能的实际价值实在值得怀疑。我想问的是,如今真的有人会在你的网站上留下一个问题,然后苦苦地等你的答案吗?他/她为什么不直接给你发个 email,或者在你的 msn, skype 上留言或直接交流。guest book 也许是一种卖方市场时代的思维,它的含义是,好了,你来到我这里了,你想怎么样,说吧,过两天我答复你。实际的情形往往是,可能一个月也没有人来留言,你也懒得去看,终于在第三个月的时候有人留了言,你看到时已经是半年以后了。
邮件列表
在90年代末,如果你的网站上没有个邮件列表供你的用户订阅,你都不好意思让自己的网站上线,虽然这些邮件列表里面八成没有什么有用的内容。如今,信息如此泛滥,rss 都过时了,社会网络,标签,web2.0 将所有人的眼睛塞满垃圾,我实在看不出谁还会老老实实去订阅你那些东抄西凑的内容。
当然也有例外,如果你的内容非常有价值,而且你有非常固定的阅读群,邮件列表从本质上讲,比 web2.0 时代的那些新鲜玩意好得多。
投票或调查系统
这个功能始终会有市场,毕竟,如果你的问题很别致,有新意,多数人会不吝点上一鼠标,投上一票。需要指出的是,现在已经有一些非常出色的第三方投票系统可以免费集成到您的网站,如 ,这些第三方面投票系统比目前任何 cms 产品中内置的投票功能都更出色。
电子商务
你要承认,一个功能稍微完备一点的电子商务系统的规模可能是一个 cms 系统的十倍,很多 cms 系统所配备的电子商务系统并非真正的电子商务,可能仅仅是一些产品列表,加上个购物车,然后把你引导到结算前台,通过五花八门的凯发k8天生赢家的支付方式要你付钱,我相信这种购物体验是很差,又让人不放心的。真正的电子商务系统有强大的后台支持,库存管理,物流,派送,安全的支付(必须使用 https 协议),防欺诈系统等等。
对于 cms 系统中的简单的销售系统,我建议调用第三方的支付平台,用户在你的网站选择商品或服务,然后被引导到 , 一类的专业支付平台进行。
本文由 comsharp (锐商)的35公里撰写,并发布在 comsharp 官方站点 。转载请保留本信息。