1.2 开源的PHP WCMS
WCMS在近些年来发展迅速,目前业界已经有很多成熟的WCMS系统。从简单的博客引擎系统到具有工作流、表格处理等功能的企业级内容管理系统,均有多种产品。在这些产品中,以PHP为开发语言的WCMS应用较为广泛。PHP的快速开发及部署成本低的特性,是大多数人选择它的原因。而且,PHP的WCMS多半是免费和开源的。近年涌现出了很多优秀的PHP的WCMS产品,如Joomla、 Wordpress,以及Drupal等。本节将对这几个系统进行简单的比较。
1.2.1 Drupal
Drupal是由比利时人Dries Buytaert开发的,最初只是一个用于实验室内部的新闻发布网站和网上交流区。Dries经过一段时间的发展和改进,于2001年发布了Drupal的第一个版本Drupal 1.0。随着Dries的推广,Drupal被越来越多的人所使用,其功能也逐步地向内容管理系统完善。当Drupal发展到Drupal 5.x时,进入了繁荣时期。欧美地区的很多公司、组织和个人开始使用Drupal构建各种类型的网站,如Sun公司、AOL、IBA等,都使用其开发子站点。美国政府也使用其作为政府财政开销的公众监督网站,流行天王迈克· 杰克逊的巡演网站也是用Drupal构建的,其流行的程度可见一斑。
几乎任何一个内容管理系统的发展都经过类似Drupal诞生的过程:起初为某一简单的需求而开发的一个程序,接着由于应用到更多的项目中,逐步进行功能增强和内核完善,最终将核心功能抽象出来,发布成为一个独立的系统。Drupal从诞生至今已经过十余年,算是比较成熟的系统了。
Drupal是一个免费的、开源的、具有模块化框架、使用PHP开发的网站内容管理系统。它可以使个人或用户社区轻松地发布、管理和组织Web站点上的各种内容。Drupal官方网站的地址是:http://www.drupal.org,网站本身就是用Drupa平台搭建的,主要功能包括新闻和公告、讨论组以及项目管理等。此网站对于所有的Drupal使用者都非常重要,Drupal的模块、主题、翻译包、帮助文档等几乎都由这个网站提供。读者可以在网站上注册一个账户,亲身体验一下各种功能。
国内的Drupal用户可以访问drupalchina.org,它是Drupal的简体中文官方网站。图1-2和图1-3分别为drupal.org和drupalchina.org的首页面。
图1-2 Drupal官方网站首页
Drupal包括内容管理系统、博客系统、论坛、协作型编写环境、图片库、文件上传和下载等功能,并采用GPL许可协议发布的开放源代码软件。GPL协议意味着任何人都可以复制、分发及修改源代码。同时,Drupal具有丰富的文档支持和强大的专业化社区。Drupal中国社区也有很多Drupal爱好者和开发者,他们为Drupal文档的中文化作出了巨大的贡献。
图1-3 Drupal China官方网站首页
由于Drupal是用PHP编写的,因此,可运行在Windows、Mac OS X、Linux、FreeBSD、OpenBSD、Solaris和其他任何支持PHP解释的服务器中。它目前支持MySQL和PostgreSQL数据库。笔者推荐使用Linux作为网站服务器环境,因为相比Windows + IIS的组合,LAMP(Linux + Apache + MySQL + PHP)更稳健,且性能更佳。
Drupal的最大特点是具有可扩展性。在Drupal的官方网站上,有数以千计的模块供使用者下载。这些模块涵盖了应用中的各个方面,如内容处理、电子商务、主题展现等,而且还有优化性能的模块。同时,正由于其优秀的可扩展性,它也通常被作为一种“网络应用程序框架(Web Application Framework)”。使开发者无须重复开发基础功能模块,而可将重点放在高级的自定义特性的开发上。这一点在本书的高级篇中将详细进行讲解。
无论使用者是否精通PHP或相关的编程技术,都能很好地使用Drupal。当然,更高的编程技巧意味着能更好地使用Drpual,它提供了简洁但强大的模块机制以及丰富的API,如果开发者的编程技能很好,那么Drupal必将成为其强大的建站工具。
1.2.2 Joomla
Joomla是Drupal主要的竞争对手,也是目前使用非常广泛的开源内容管理系统之一。它具有完善的内容管理功能,每个文章内容包括多种属性(如分类、所属区、发布状态、路径别名等),同时还有“回收站”功能——一个文章被删除后,先移至回收站,只有从回收站删除后才彻底删除。这样的机制对保护内容很有帮助。Joomla支持多主题模板,同时通过组件(Component)和插件(Plug-in)来扩展系统功能。Joomla的宣传口号是:让不会用PHP的管理员可以轻松的构建网站。
Joomla有统一的管理后台,可以执行站点管理的各种操作。如图1-4所示为Joomla的后台管理界面,首页面包括“发布新文章”、“首页管理”、“语言管理”等管理链接。
文章发布页面如图1-5所示,每个文章具有路径别名(Alias)和分类等属性。同时Joomla集成了Tiny MCE网页文本编辑器,便于管理员对文章内容进行样式修改。
图1-4 Joomla后台管理页面
图1-5 发布文章页面
Joomla官方的演示网站如图1-6所示,当前主题为Joomla的蜜蜂(Bee)主题。
Joomla的用户只能通过后台管理系统创建,但并不支持在线注册的功能。而Drupal原生提供了用户注册机制,只要设置为开放注册,则互联网用户便可以进行在线注册。它的核心模块也提供了博客、评论以及论坛等功能,并对内容创建也属于“协作式”平台,每节点也可以支持多版本,所以Drupal在Web 2.0方面更为擅长。
Joomla提供了内置的用户组,包括“作者(Author)”、“编辑(Editor)”、“发布者(Publisher)”和管理员等,但用户组是固定的,不能添加或删除用户组。而在Drupal中,尽管只提供了两个默认的系统角色:匿名用户(Anonymous)和注册用户(Authenticated),但管理员可以添加新的用户角色。同时,Drupal内置了权限机制,每个权限表示进行一项操作所需的权限,只有具有这个权限的用户才可以执行此操作。并且权限可以和用户角色相关联,这样凡是属于此角色的用户就拥有了相应的权限。
图1-6 Joomla的Bee主题
从系统的二次开发角度看,Joomla的开发风格和Java相近,模块需要继承JComponent类,而插件需要继承JPlugin类。Drupal则使用注册文件声明模块,并通过一系列的钩子函数实现对Drupal内核的修改和功能扩展。所以Drupal的开发属于“半面向对象、半面向过程”,在对核心对象(如用户、节点、类等)进行了类的封装外,对类的操作和常用的处理均通过函数直接完成,这在很大程度上保持了PHP的优势,使开发者更容易上手。
和Drupal相比,Joomla是一个比较专业的“内容管理系统”,它比较适合单纯以内容为主的网站。而Drupal则更具有Web 2.0的网站功能和风格,是一种多人协作式的内容管理与展示平台,且更符合“框架”的特性;其用户权限模型的灵活性很大,定制起来非常容易。
1.2.3 Typo3
Typo3是一种在GPL下发布的企业级内容管理系统,全世界有很多网站都使用它作为WCM。它历史比较悠久,所以支持的语言也比较多。许多大学、公司、政府机构和非营利组织也在使用它。图1-7为Typo3的首页截图。
Typo3是一个比较大型的系统。尽管它有一个很大的社区,也有大量用户采用它,但Typo3对使用者的编程水平要求较高,故它的学习过程很长。Typo3的网站上也提到:如果用户想在短时间内上手并搭建一个内容管理系统,那么Typo3不是最佳的选择。
Typo3的大部分核心模块和第三方模块使用的是比较早的技术,结构也不是很好,例如大量地使用了表格作为页面布局的实现方法,没有很好地使用CSS;因此,它的模板系统与Drupal和Joomla相比是较为复杂和陈旧的。
图1-7 Typo3的首页截图
1.2.4 WordPress
WordPress是当前最流行的PHP博客系统,它免费、开源、简洁并且主题丰富,是大多数个人博客的首选建站程序。它使用PHP开发,MySQL作为数据库系统。它具有标签、分类、文章评论等常用的功能,还可以安装第三方插件以扩展其功能,其官方博客页面如图1-8所示。
图1-8 WordPress官方博客页面
WordPress有统一的管理后台,如图1-9所示,提供了系统各方面的配置,如文章管理、分类设置、站点相关信息设置等。文章发布页面如图1-10所示。
图1-9 WordPress的后台管理
图1-10 WordPress的文章发布
WordPress最受欢迎的特性之一,是它丰富的主题模板。它拥有近百种免费的主题,且样式美观。如图1-11所示为WordPress的主题管理部分,在这个页面中可以查看大量主题,只需要单击“Install”按钮,即可完成主题的下载与安装,非常方便。
如果只是做博客系统,WordPress比Drupla更为简洁和轻便,比如它只使用了11个数表用于存储内容。但是,如果博客只是系统中的一个次要功能,从可扩展性角度讲,Drupal则更为适合。Drupal也具有Blog模块,在开启后可以提供简单的博客功能,但要到达WordPress的效果,则还需要使用第三方模块并进行相关的定制。
图1-11 WordPress的主题浏览
1.2.5 比较
前面列举了几种开源的使用PHP开发的WCM,下面从以下几方面对最常用的Drupal、Wordpress和Joomla做一下比较。
· 安装难易度:包括程序的安装和数据库的安装。即从下载到正式使用期间的过程的开销。
· 学习难易度:包括系统的易用性、管理界面的可操作性以及其接口或扩展机制的学习难易度等。
· 会话管理:会话管理是指服务器对当前用户的各种状态的控制与存储。除了PHP原有的会话管理机制外,WCMS一般会扩展会话管理机制,以实现更强大的会话管理机制。例如Drupal实现了基于数据库的会话管理机制。
· 用户管理:是否支持多用户注册以及对用户的权限管理等。
· 可扩展性:如果系统允许并很好地支持开发者开发自己所需的功能,那么这个系统的可扩展性就比较强。开发者自定义的模块或组件可以轻松地发布并为他人所用,这也是可扩展性的另一个重要体现。
· 可伸缩性(Scalability):系统的可伸缩性包括纵向和横向两方面。纵向可伸缩性是指在同一个逻辑单元内增加资源来提高处理能力。例如通过硬件设备的增加(如升级为更强的CPU或扩大内存或存储空间容量)来增强其性能,支持更多的用户或获得更快的运行速度等。横向可伸缩性是指系统能够通过运行更多的程序实例或者采用分布式处理来增强处理能力。数据库集群、分布式文件系统、负载平衡都是提高系统横向的可伸缩性。
· 主题模板支持:主题模板的易开发程度,以及现有的主题模板的数量。
· XHTML/CSS:对标准的支持程度影响着主题模板的可编程性。
表1-1展示了上面提到的几个开源CMS系统特性的对比,5分表示程度最高。
表1-1 几个WCM的比较
抛开广告性的溢美之词,笔者认为选择Drupal的原因有以下几点。
· 免费:无须支付任何费用即可下载、安装、再开发以及部署。
· 更新较快:有很多著名的CMS,由于其更新速度慢,很长时间没有出新版本,致使大量的用户流失。而Drupal的更新速度非常快,推出的升级和补丁也比较及时,并且每年都有Drupal会议举办,让使用者对Drupal的未来很有信心。
· 专业:强大的CMS功能,使用了当今最流行的各种网站技术。Drupal比其他的WCM更适合于PHP的专家,因为它是一个框架级的WCM,有着丰富的API及完善的代码标准和风格规范。
· 丰富的第三方模块:在Drupal的官方网站上可以下载各种第三方模块以扩展其功能,如电子商务、内容处理、主题样式等各方面。
· 扩展性强:模块式架构和主题模板引擎,使功能和表现样式均可以无限扩展。