作为个人站长,我们都在或至少有一段时间一直在寻找最好的CMS,结果得到的答案往往都是“没有最好,只有最适合”,然后便沉溺于什么才是最适合的困顿之中,因为总有一些功能是自己所选择的和正在使用的CMS所不具备或者实现起来很麻烦的,那么这样一个能够方便快速地帮我们建站的CMS到底存不存在呢?希望本文能给一些刚刚接触CMS的新手站长们提供一点帮助。

   什么是CMS?CMS全称Content Management System,也就是内容管理系统,顾名思义就是管理内容的,而我们今天要讨论的Drupal,以及Joomla!和WordPress等等都是Web CMS,也就是网页内容管理系统。相关的还有企业CMS、学习CMS、媒体CMS、移动CMS和组件CMS等等很多,但宗旨都是一样的,就是管理内容。它就像是一个操作系统,比如Windows、比如Mac OS,管理着我们的计算机资源,软件和硬件,我们并不需要去关心内存如何保存数据,怎么控制循环、存储以及进程优先级以提高效率,这一切都由操作系统来完成,我们甚至不会关心操作系统是如何工作的,我们需要的是软件,比如Word,我们撰写一篇文章,然后保存,便于以后浏览和修改,选中一段文字,然后点几个按钮就可以改变样式,这都是CMS要做的事。   或者可以说CMS就像是一个ATM提款机,钱放在一个大铁箱子里,我们把卡插进提款机,然后输入密码和取款数额,提款机就会自动把钱吐出来。仅此而已吗?不仅要吐钱,还要记账,把取款金额从帐号中删除,并做记录,这还是不够的,为了防止中途断电或意外情况发生,取款的每一个步骤都会有严格和完善的监控机制,确保只要你没有拿到钱,帐号上就不会扣钱。操作的步骤虽然简单,但系统却很复杂。这也是CMS要解决的一个问题,就是把原本很复杂的事变得很简单。

   Web CMS就是管理网页内容的,CMS并不是古已有之的,在最早的时候网页只不过是一个个HTM文件和目录,并且当时有的系统不支持4字符扩展名,所以我们至今还会看到有的HTML文件的后缀是.htm。网页以文件夹形式组织,优点是上手难度低,很容易理解这个层级关系,缺点是维护成本高,如果你要做一个Amazon,就可能有几十万、上百万的HTML,而且有的主机可能还不允许你这么做。更可怕的是,如果你想把所有页面的背景换上带有节日气氛的背景图片,恐怕得提前一年就开始着手了。当然,这种情况并没有持续很久,脚本语言很快就出现了。  脚本语言从CGI发展到PHP,再到RoR,总体呈现了动态、抽象、灵活的趋势,但也使得上手难度加大,因为有些地方对网站管理者来说的确不太好理解,因为你不可能要求每个网站编辑都熟悉PHP。所以没过多久,CMS也诞生了,这一切发展都很快,CMS中的网站内容统统保存在数据库中,CMS负责数据流控制和显示。网站访客通过输入和点击等操作告诉CMS想要看什么内容,然后由CMS到数据库里提取数据,再显示出来。成熟的CMS还会提供模板系统,也就是将数据、控制和表现完全分离,以后比如要修改网站外观,只要替换一些必要的网页文件即可,其他都不会受到影响。这也是当前流行的软件开发模式。行话叫MVC.

什么是Drupal?
CMS有很多,优秀的也不少,今天说的Drupal就是其中之一,也是我今后的选择,这是综合多方面考虑后的决定。之前也尝试过Joomla!,发现Joomla!功能完善,资源也丰富,但架构效率不高,扩展性差,很多资源还是收费的。而现在用的WordPress则偏重博客发布。这两个代表性的,也是国内认知度比较高的CMS就代表着当前CMS的两个派别,某种程度上也是不足吧,就是扩展性差或针对博客,但也有优点就是初始时功能齐备,安装完了马上就可以用,Drupal初始安装几乎没什么功能,但同时也提供了广阔的拓展空间,你可以任意发挥它的能力,从网店到在线社区,从企业展示到在线视频。所以说,只要服务好自己定位的人群,就都是好的CMS。没有最好的CMS,因为没有最好的人。

谁在用Drupal?
这里http://www.seo-expert-blog.com/list/the-most-incomplete-list-of-drupal-sites是一个比较完整的著Powered by Drupal网站列表,你会看到很多熟悉的名字。包括联合国官方网站、华纳兄弟、探索频道、SONY PS(亚洲站)、雅虎(Research)、美国在线、Mozilla官网、jQuery官网、艾薇儿、小甜甜的官网等等,他们都用Drupal建设网站。这充分说明Drupal以及PHP是国际各行各业,世界各族人民所喜闻乐见的技术。

选择Drupal的10个理由
1. 高级URL控制
Drupal不像WordPress只有几个固定链接样式,Drupal提供精确的URL控制结构。Drupal中的每个元素(称为节点Node)都可以指定独特的URL(URL别名),而WordPress中的URL虽然有几个样式可以自定义,但也得统一着装,就是所有Post的URL都是一个样式的。在Drupal中,你可以用Pathauto给不同类型的内容指定不同样式的URL。

2. 自定义内容类型和视图
借助CCK和Views模块,你只要轻点几下鼠标就可以创建各式各样的内容类型,包括最基本的页面和博客文章,还有比如产品信息、音乐专辑介绍、招聘启事、维基百科等等,并根据自定义的过滤条件显示数据。大部分CMS都需要修改模板,而在Drupal中,你要做的只是点点鼠标。

3. 版本控制
你设置Drupal在每次保存时都创建一个副本,以便将来需要的时候恢复。WordPress也有这个功能,但Drupal可以主动创建修订版本,而不是简单的设置启用和禁用修订。

4. 词汇
Drupal有非常强大的词汇(目录)系统,允许你将已创建的词汇组绑定到特定的内容类型,比如文章类型可以指定一个类似WordPress的分类目录,允许用户自行添加和删除,而对于新闻或产品类的内容,则需要用户从事先创建的分类中进行选择,这都是可以分开管理的。词汇也可以设置层级关系,允许单/多继承,配合CCK和Views更可以实现非常丰富而且精妙的控制。

5. 用户管理
这也是其他许多CMS无法相比的,Drupal拥有强大的用户角色和权限控制能力,你可以用Drupal创建类似Facebook、校内网那种在线社区,并且由于Drupal的任何东西都是以节点为单位,所以你可以为这些角色指定非常精细的权限。

6. 页面标题和元标签
Drupal的Page Title模块允许你控制页面中的<title>和<meta>标签,这在其他CMS中即便可以实现也很麻烦,而在Drupal中非常简单。

7. 丰富的学习资源
Drupal官方网站有丰富翔实的帮助文档和学习社区,还有大量出版教程,乃至专门教学Drupal的Lullabot,虽然大多是英文的,但你无论遇到任何问题,都可以找到解决的办法。

8. 模板系统
Drupal默认采用PHP Template引擎,同时还支持Smarty和PHPTAL等其他模板引擎,创建Drupal比WordPress要简单,而且无需PHP基础。

9. Drupal食谱
如果你想要某个功能,但Drupal本身没有提供,说不定你就可以在Drupal社区的代码片段中找到这些小模块。Drupal的文件类型支持导入/导出。

10. 多网站
大部分CMS都只能管理一个网站,而Drupal则可以同时管理多个网站,如果你想建立一个多国语言版的网站,Drupal将是最好的选择,并且借助完善的覆盖和继承架构,你可以为每个网站指定模块和主题。最新的Drupal 7还支持跨主机管理,非常强大!