什么是 Joomla!——写下这个题目,我暗自苦笑:这个Joomla之门网站开通已经快3个月了,才刚刚想起来解释一下这个最基本的问题。我相信很多新手,在第一眼看到Joomla!这个词,或者在寻找建站系统的过程中碰到这个词,都会想知道:Joomla!到底是什么?

Joomla! 的 logo
Joomla! 的 logo

这个问题并非三言两语所能回答。

要理解Joomla!,必须先知道CMS;要了解CMS,多少还得了解一点各种网页制作及网站建设方法的历史。我姑且为大家写一篇综述性文章。

 

Internet 互联网

 

众所周知,互联网起始于上世纪70年代美国国防部为军方建立的APARNET。当时还不叫Internet,范围也仅限于美国军方。后来逐渐扩展到民用/商用领域,也逐渐走出美国,扩展到欧洲。中国在1986年才通过长途电话拨号连接上了欧洲的CERN,算是用计算机走出了国门。那个时候,全世界的网络上应用最多的服务是E-mail,然后是FTP,还有Gopher,Telnet这些现在已经很陌生的服务。1987年,北京大学的钱天白教授向德国发出第一封电子邮件,当时中国还未加入互联网。1991年10月,在中美高能物理年会上,美方发言人怀特·托基提出把中国纳入互联网络的合作计划。 1994年,中国科学院高能物理研究所正式进入Internet网并建立了中国第一个WWW服务器,成为中国第一个进入国际互连网的计算机网络。

网站*网页

有了World Wide Web(WWW)服务器,才有了我们现在所说的“网站”(website)和“网页”(web page)。由于WWW服务基于HTTP(HyperText Transfer Protocol,超文本传输协议)施行,所以我们现在访问网站时,网址前面都有http://这样的开头。为了编写基于HTTP协议传输的网页,HTML(HyperText Markup Language,超文本标记语言)诞生了。现在我们随便查看一个网页的源文件(IE浏览器上点菜单“查看->源文件”),里面所有的<br>、<p>、<head>、<body>这些标记,都是HTML语言。只不过近年来编写网页的语言逐渐支持php、asp、jsp等,所以源文件的头部可能是<?php>或者<asp>标记,但这些文件中仍然需要使用HTML标记。

用HTML语言编写的网页文件,其扩展名是.html或者.htm,称为“静态网页”(Static webpage)。

既然有了语言,就可以用来编写网页了。HTML语言只是一种标记语言,与C、Perl等计算机高级语言不同。最简单的编辑器就是windows自带的记事本。可以说在1990年代,大多数网虫都有过使用记事本编写网页的经历。1998年,我当时还在大学4年级时,就用记事本编写HTML文件,建造了我的第一个网站《杏林新秀白建鹏》。高级一点的编辑器当时有UltraEdit,EditPlus。另外,著名的FTP客户端软件CuteFTP自带一个HTML Editor编辑器,方便用户随时更改网页。

用这些编辑器以及HTML语言编写网页,最大的弊端就是不能可视化,也就是无法“所见即所得”。每次编写一段之后,就要在浏览器里面预览一下自己的网页是否满意。EditPlus内置一个“预览”按钮,点击后自动调用IE内核进行预览,那个时候感觉已经很不错了。

用HTML语言直接编写网页,第二个弊端就是容易出错。那么多标记,很容易搞错一个,或者忘记配对。一旦编写了一个20K左右的网页,预览时发生错误,再返回源文件查找错误代码是很费力的。另一个出错的地方就是“链接”,全名就是“超级链接”(HyperLink)。因为一个网站不可能只有一个网页,所以多个网页之间的互相链接,以及上下级链接,都容易出错。

于是乎,可视化网页制作软件及时诞生了。当时比较出名的比如HomeSite,HotDog,HotMetal,当然微软的FrontPage 98也是红极一时。2000年左右,借助于FrontPage 98几乎小学生也能做网站了。当时国内很多网站也提供“免费个人主页空间”,所以“个人网站”当时是一个流行词。大名鼎鼎的DreamWeaver当时也崭露头角。从此以后一发不可收,至今还是网页制作软件中的佼佼者。

CMS 内容管理系统

可视化网页制作软件红了几年之后,逐渐不能满足网站制作的要求。近年来,java、Flash等技术在网页制作中应用越来越多,“动态网页”(Dynamic webapage)成为主流。网页的内容也不单限于文字和静态图片,动画、视频、音频以及互动表单、论坛等越来越多。虽然利用DreamWeaver也能制作动态网页,但是已经力不从心了。

顺理成章的,CMS(Content Management System,内容管理系统)诞生了。国内喜欢称作“建站系统”,或者“全站系统”。其实质就是将一个动态网站的框架预先做好,用户根据需要填充自己的内容即可。利用CMS建设一个简单的网站,5分钟就够了。高级一点的CMS已经内建新闻发布系统、文章发布系统、留言系统、博客、论坛、联系方式、下载系统等,更高级的甚至包含了网上商店。

假如我们把建设网站比作建造一个家,那么利用HTML语言编写网站好比自己一块砖头、一刀水泥垒起来;使用EditPlus这样的编辑器好比交给一个民工队去做,自己在旁边督工;DreamWeaver好比仿照“家庭装修指南”画报,让工匠按照图纸及效果图来建造;使用CMS就好比买回一个活动房一样的半成品,然后自己挑选是否要客厅,餐厅,厨房,几个卧室,小酒吧甚至室内游泳池等。按照客户的需求,CMS就能把上述内容很快组合起来,变成一个漂亮的新家——5分钟入住!

目前国内外各种基于asp或者php的CMS总数大概在好几百,有免费的,也有商业软件。如果你想知道都有哪些,在Google里面搜索一下CMS大全就都有了。其中有一个不得不提,就是Mambo,中文名称“曼波”。

mambo logo

mambo也是免费CMS,由非盈利性Mambo Foundation基金赞助开发,已有5年历史。我们之所以要提到曼波,是因为它是Joomla的前身。

2005年8月,由于mambo的所有人Miro公司与核心开发小组之间意见不合,mambo开发小组领导人Eddie Andrew带领几乎八成的原小组成员,成立新的开源项目Joomla!。Joomla这个名称来自非洲斯瓦希里语的方言“Jumla”,意思是“一起”。这就是Joomla!的来历。


Joomla

Joomla!从诞生到现在不过1年多一点时间,但是已经赢得广大用户的喜爱。2006年11月14日,Joomla!获得2006年最佳开源CMS项目一等奖。其官方网站论坛的注册用户今天已经达到84,056人。

Joomla获得2006年最佳开源CMS奖第一名

从官方网站www.joomla.org 我们可以下载到最新版本的Joomla!安装包,目前最新稳定版是1.0.12版本,最新beta版是1.5。

下载得到的安装包实际上是一个压缩文件,可能是zip格式,也可能是gzip格式。解压后得到若干文件夹及文件,文件总数达到2800多个。

Joomla是web程序,因此必须上传到服务器才能运行。如果要在自己的个人电脑(PC)上尝试Joomla,你必须在你的电脑上建立一个本地测试服务器。又由于Joomla!使用php语言,因此你的服务器必须是php空间。Joomla!的运行还离不开SQL数据库,因此你的服务器上必须拥有mysql或者mssql数据库。最常见的就是apache+php+MySQL平台,一般建立在Linux操作系统上的服务器都是这个组合。

Joomla!跟其他CMS一样,也有一个功能就是支持内容与风格分离——即网站的外观可以随便更换。原因是Joomla!采用模板(template)来控制网站外观,通过调整模板的结构,以及编辑模板对应的CSS样式表文件,我们可以更改网站的外表。甚至,我们可以使用Timed Template组件来定时更换网站的“衣服”,从而表现出千变万化的美丽身影,同时又不需要更改网站的内容。在全世界成千上万个Joomla!建造的网站中,你所看到的外观风格迥异,但是其核心都是一样的。另外,Joomla!每升级一次内核,都会发布针对旧版的升级补丁,所以核心文件的升级也非常方便。

Joomla!已经内建了文章系统、新闻系统、FAQ系统、友情链接及联系人功能。如果建设个人网站的话,把文章系统用blog风格展示出来,就可以做一个博客栏目——尽管这样的博客功能很弱。其他功能Joomla!并不自带。

不过,Joomla!优越就在于它支持第三方扩展(Extensions)。有了这些扩展,Joomla!如虎添翼,可以进一步搭建论坛、留言本、wiki、博客(真正的博客,比前面所说的方法正规得多)、下载系统、视频插播、网上商店、相册图库、招聘信息、房屋租赁、黄页目录等等。在Joomla!官方扩展库(extensions.joomla.org)里面,目前已经有超过1250种各式扩展。

Joomla的扩展分三类:组件(component)、模块(module)和触发器(mambot)。在1.5版本以后,触发器被称为“插件”(plugin)。Joomla!将一个页面分为若干区域,其中正中主要部分被称为“mainbody”。组件可以单独展示为页面,被分配在网页的mainbody区域;模块则无法独立成页,它必须被安排在页面上四周模块位置,当然,你可以在后台自定义某个模块显示于哪些页面,比如我们可以让登录窗口只在首页显示,打开网站其他页面则不显示;触发器相当于一个机器人,它被用于在页面内部实现某种特异功能,比如使用视频插播触发器就可以在网页任何位置显示一个视频播放窗口,你只需在编辑该网页时插入该触发器的命令。触发器的命令一般都是用大括号({})来包围,有的只有一个,有的需要一对,后面那个闭合标记当然要加入一个斜杠,变成{/}。

我们需要什么样的功能,就选择什么样的扩展。安装后在后台建立对应的页面或者菜单,就能在前台得到这个功能。如果你需要某种功能,而目前还没有相应的扩展,说不定不久以后就有人开发出来了。当然了,你也可以自己动手开发Joomla!扩展——只要懂php编程就可以了,没有想象中那么费劲。

还有一些基于php的开源web程序,作的也不错,我们如果要把它们加入到Joomla!网站来,就必须借助于桥接器(bridge)。比如SMF论坛很不错,但它不是Joomla!的扩展,我们可以使用JSMF桥接器来把它整合(integrate)到Joomla中来。其他需要桥接器才能整合的还有phpbb论坛、gallery2图库、Lifetype多用户博客、Zen-Cart网上商店、vTigerCRM客户关系管理系统等等。

总之,Joomla!是一个相当灵活的CMS,借助于丰富的第三方扩展和桥接器,它几乎可以建设所有类型的网站,从个人博客到联合国网站,都可以用Joomla!来建造。至于Joomla!的安装步骤及新手上路应用,我将陆续在本站撰写文章介绍。