本文转自Joomla之门,由52Joomla!编辑,文中所介绍内容均以Joomla1.5.17英文原版为例。

Joomla的结构



上图是 Joomla 1.5.17 安装成功后的根目录内容。与Joomla的安装包相比,/installation 目录已经删除了。/configuration.php 这个文件是安装过程中生成的。

再来看看Joomla 1.5.17英文原版的安装包,其根目录内容如下图所示:

可以看出,安装前后几乎差不多。所以就有人想走捷径:论坛的某个帖子中说他将 /configuration.php-dist 文件修改为 /configuration.php 来安装Joomla,结果总是不能成功。很显然它对Joomla理解错了,希望存在这种想法的人看看《安装Joomla1.5》

看完了安装示范,你就发现一个问题:Joomla需要MySQL数据库的支持。没错,Joomla除了上图中你能看到的“文件”(Files)以外,还有你在web目录中看不到的“数据库”(Database)。也就是说,在安装过程中,有很多数据被写入了数据库,Joomla 依靠 web+db 的方式来运行。这与传统的静态网站把所有内容都保存在web空间是不同的。

怎样才能看到这些数据库内容呢?就像浏览文件需要“资源管理器”,查看数据库内容也需要相应的浏览器,那就是phpMyAdmin。当然,这不是唯一的,但是最常用的。一般来说,你购买php空间的虚拟主机时,商家会告诉你访问phpMyAdmin的URL及帐号,登录后就能看到这些数据库的内容。

在此劝告好奇心太强的新手:对于数据库尽量不要随便操作。一般来说,我们访问phpMyAdmin只做一件事:备份数据库。因此,你知道有这么回事就行了,不要经常打开数据库来查验它是否还在。

既然Joomla的网站由web+db组成,这就意味着,如果你要迁移某个Joomla建造的网站,你必须同时迁移这两部分。web内容可以通过FTP下载到你的电脑;而db内容就需要用数据库备份工具来备份到你的个人电脑,这个工具通常都是phpMyAdmin。然后通过FTP将web内容上传到新空间的web目录(通常是一个名为www或者public_html的文件夹),而数据库内容又再次通过新空间的phpMyAdmin导入。当然,迁移网站后还需要修改/configuration.php文件中的某些环境参数。关于网站迁移我们以后专门撰文介绍。

下面我们来看Joomla的根目录。

/administrator 就是管理后台的路径。如果你的网站域名是 http://www.52joomla.com ,那么加上这个目录就是管理后台的路径,即 http://www.52joomla.com/administrator 。这也就引出一个安全隐患:每个人都很清楚Joomla的管理后台路径,而且Joomla登录时不需要输入验证码(CAPTCHA),居心不良的人使用穷举法就能暴力破解网站后台帐号——更何况Joomla默认的管理员用户名是 admin,人家只需要猜密码就行了。为了安全,我推荐你学习一下AutoIt发明的改变后台管理登录路径的方法

/cache 是缓存目录。这里存储网站运行过程中的缓存文件,对于提高网站打开速度有帮助。

/components 是组件(component)目录。如果进入该目录,会看到所有子目录都是以 com_ 开头。这是Joomla的命令原则,com_ 就是组件的字头。所谓组件,我的理解就是完成一项重大任务、实现某个复杂功能的程序集。比如我们需要一个留言本,那么com_easybook 就是留言本组件。组件展示的位置是在模板的mainbody区域。组件可以在前台菜单上建立菜单项,点击该菜单项就打开了该组件的内容。例如,点击本站顶部菜单上的“留言”就能打开留言本。

可以这么理解组件:每个组件都有明确的功能定义,或者发布新闻;或者展示相册;或者列出会员上传的视频并允许点击播放;或者是一个论坛供众人激辩;……它往往实现很复杂的功能,前台展示结果允许分页显示,并且需要显示在mainbody这个区域作为页面的主要内容。

/help 目录——Joomla的帮助文件,不过这个帮助简直是鸡肋,反正我从来没有用过。

/images 目录,一看就明白。这里存放网站文章中所有插图。如果你要建立电子相册、图库软件,其使用的存储目录或许不在这里。

/includes 是一个重要的目录,里面都是Joomla运行所需的各种脚本、函数等等。可谓“机房重地,闲人莫进”。

/language 即网站语言目录。这里存放全站前台界面的语言包。例如我们要将英文版Joomla汉化,就必须把中文语言包保存到这个目录。相应的,后台界面的语言包就存放在 /administrator/language 目录里。

/plugins 即插件目录。插件的文件名一般以 plg_ 或者 plugin_ 开头。一般来说只针对网页(content)启效。

有很多插件需要手动启动,即只有文章作者需要在该文中应用该插件的效果时才使用,这时只要插入相应的“触发命令”即可。所谓“触发命令”实际上是该插件的专用代码语法(syntax)。通常插入插件需要用打括号{}将一句或者一段代码包含。当Joomla的网页在浏览器中打开时,就会自动将大括号识别为插件启动命令,然后去寻找是否存在对应的代码,如果存在就将该大括号内的代码替换为插件的执行结果,如果不存在就直接以大括号来输出。

/media 目录顾名思义就是存放各种媒体文件的地方。当你的网站媒体文件不多,但又确实“有几个”的时候,可以将他们保存在这个目录,然后在文章中展示出来或者提供下载链接。实际上,这个目录管理的媒体有限,一些专门的媒体组件,如zOOm 允许使用指定的其他目录来管理媒体。

/modules 目录是存储模块(module)程序的地方,打开该目录,可以看到几乎所有文件名都以 mod_ 开头。Joomla的模块概念与其他web程序所说的模块稍有不同。这里的模块指可以将特定内容展示在前台mainbody之外的某个指定位置(position)的程序。由于mainbody是前台页面的中心,也是占面积最大的区域,因此模块在前台就是以一个小方块来显示。例如,我们可以在页面的左侧或者右侧,或者底部,通过 What is My IP 这个模块来显示访客的IP地址;我们也可以用OnBoom Flash MP3 Player这个模块在前台显示一个mp3歌曲播放器。

Joomla默认模板已经定义了十多个模块位置,如header、footer、left、right、debug、user1、advert2等等。在制作Joomla模板时,你可以自由分配这些模块位置的展示位置。比如,你可以将left显示在右侧,虽然有违常规,但是不算错。某个模块展示在前台的哪个位置,取决于你在后台设定它发布(publish)在哪个模块位置。例如,你将OnBoom Flash MP3 Player这个模块发布在left,那么网站左侧就多了一个播放器;如果你过几天想调整一下,登录到后台将它又改发布到right,那么前台的播放器就跑到右侧去了。在此过程中,你不需要理解或者编写任何代码,只需要点几下鼠标就行。

在一个模块位置上,可以发布多个模块。例如,左侧通常可以发布主菜单(mod_mainmenu)、登录窗口(mod_login)、新闻供稿(mod_rssfeed),右侧可以发布在线会员(mod_whosonline)、在线调查(mod_poll),而旗帜广告(mod_banners)则一般发布在顶部位置,可能是banner位置,也可能是header位置。对于发布在同一个位置的多个模块,管理员可以在后台调整展示顺序。

另外,还可以在后台设定模块发布到哪些页面。一个网站通常有很多页面,好几个栏目(组件),我们或许不希望在某些页面上展示某些模块。例如,安装了FireBoard论坛组件后,很多人希望点击菜单上的“论坛”打开的页面只有论坛界面,没有左侧或者右侧那些模块,这样论坛的内容就会占用整个屏幕窗口,显得比较大气。而在其他页面上却仍然需要显示左侧的登录窗口及右侧的Google Adsense广告等。那么,只需要在后台的模块列表中,将发布在left 和right的各个模块都一一打开,设定每个模块的发布页面中不要包含“论坛”这一页即可。这个设定不仅对论坛的首页有效,而且对于任何属于论坛的页面都有效,也就是说,即使你进入某个版块阅读帖子,或者点击“回复”按钮回帖,left和right位置都不会显示任何模块。

由此可以看出,模块一般展示的内容都比较简单,也不需要占用很大的面积,更不需要建立菜单上的链接。这样的程序都会被按照模块来编程。如果你的需求超过了这些,那么还是编写一个组件吧。

当然,某些组件还有配套模块。这是因为有时候需要将组件的某一部分内容显示在其他页面或者网站首页的周围区域,例如我们可能需要将RSgallery2图库的新增图片显示在网站首页,好让访客看到每天都增加了哪些图片;我们还可能需要将整合的SMF论坛的新帖展示在首页,以便访客迅速了解论坛的最新动向。这些模块的功能离不开相应的组件,但是它们也只是展示组件的一部分内容,并且需要发布在组件之外的位置。这样的功能就必须通过模块来完成。

/logs目录是Joomla的日志目录,

/tmp目录是Joomla的临时目录

Joomla扩展的安装

以上提到的组件、模块和插件,统称为Joomla的扩展(extension),因为他们扩展了Joomla的功能,单单一个原版Joomla能实现的功能很有限。不论是Joomla内核(安装包),还是其他扩展,或者Joomla的模板(template),下载后都是一个压缩格式。最常见是Zip格式,少数是tar.gz格式。请注意不要随意解压这些文件,除非有特殊指示需要解压。例如Joomla安装包需要解压到服务器才能开始安装,某些组件作者将组件及其配套模块、触发器一起打包,那么就需要解压后逐一安装,这种压缩包的文件名往往有 _unzip_1st 的字样,意为请先(1st同first)解压(unzip)。

由于Joomla可以自己在服务器端进行解压,因此我们安装扩展时直接指向zip格式的压缩包即可。安装都是在后台进行的。必须以(超级)管理员身份登录后台,点击顶部菜单上的“Extensions” – “Install/Uninstall”。点击之后就打开安装界面,第一个安装方法就是通过“浏览”按钮找到压缩包,然后点击“Upload File & Install”按钮自动安装。

对于较大的组件,比如VirtueMart网上商店组件达到了1MB多,这样上传恐怕很耗时间,那么就可以通过FTP上传到服务器端,然后借助JoomlaXplorer或者unzip.php工具解压到服务器端某个临时目录,再通过安装页面的第二个方法,即输入解压后的文件所在目录路径,然后点击“Install”进行安装。

有时候会发生安装了一半就出错,再次刷新页面进行安装时却发现提示“xxxx文件夹已存在”。这是因为前面那个半途而废的安装过程已经创建了同名目录。这时,必须通过JoomlaXplorer或者FTP手动将该文件夹删除。注意:如果是组件,一般会在两个地方创建目录,一个是 /components ,一个是 /administrtator/components,前者功能是管理前台界面,后者是该组件的后台设置页面。

有时候会发生安装某个压缩包时提示没有找到 .xml 文件。这个 .xml 文件就是安装命令文件。里面详细记录了某个程序文件应该安装到哪里。发生这种情况时,我估计该扩展或者模板作者忘记包含.xml文件的可能性很小。一般都是因为打包时多压缩了一层文件夹,而Joomla只在压缩包的根目录及第一层目录下寻找 .xml 文件。

如上图所示,这时 Rsform Pro组件 的安装包内容。

Joomla的菜单

几乎每一个网站都有菜单(menu)。菜单的存在主要是为了内容导航(navigation),以免访客找不到网站结构,转晕了。当然,菜单同时也有利于网站的人性化服务,据专家计算,如果访客在网站找到他想要的目标内容需要点击鼠标超过3次,那么该网站就不够合理。当然,现在某些下载网站要求访客一次又一次点击广告才能看到下载链接的做法已经超出了“合理”的范畴,那应该是RPWT。

在传统静态网站,建立菜单比较费劲,但是其本质比较简单——一个指向目标页面的链接(Link)而已。在Joomla世界,菜单仍然是一个链接,但是Joomla的术语称之为“菜单项(目)”(menu item)。用户得到的实惠是,在Joomla中建立菜单更容易。我们几乎不需要记忆目标页面的URL,也不需要手动编辑 <a> 链接标记。

登录到网站后台,就可以看到在顶部菜单上有一个menu,这就是“菜单管理器”。里面默认列出了mainmenu、topmenu、usermenu和othermenu四个菜单。每一个菜单实际上对应一个模块,你在后台的模块列表中应该能看到相应的模块名称。这是因为菜单的功能用模块就能做到。

点击菜单管理器中的某个菜单名称,就打开了其内容。每一个菜单上,都列有若干菜单项。如果要隐藏某个菜单项,只需要在该菜单项名称前面的方框中点击选中,然后点击顶部工具栏右侧的“unpublish”(取消发布),该菜单项就从前台消失了,但仍然存在于后台。假如你以后不会再有需要该菜单项显示,那么可以在选中之后直接点击“Delete”(删除)按钮将其删除。当然,你还可以调整各个菜单项的显示顺序。

最令新人痛苦的就是“创建”菜单项。点击工具栏上的“New”按钮之后,出现的“菜单类型”页面有很多选项,一时不知道应该怎样选择。在这里向大家解释一下几个主要的Joomla自带选项:

  1. Internal Link - Articles,它包含了很多个子选项,都是对网站文章内容进行操作。其中:Archived Article List是创建一个列出归档文章列表的菜单;Article Layout是创建一个显示单篇文章的菜单,或者可以理解为创建一个链接到一个单页面的菜单;Article Submission Layout能创建一个允许用户提交文章的菜单,如果要使用它,请你务必注意设置好权限;Category Blog Layout创建一个基于分类的博客列表,这是Joomla中非常重要的一个菜单项,它可以为你创建一个类似于博客文章列表(列表中允许包含文章标题以及部分或全部文章内容)的菜单;Category List Layout是创建一个基于分类的文章列表,它可以为你创建一个简单的文章列表,列表中不包含文章内容;Front Page Blog Layout是创建一个博客类型的首页,通过查看Joomla默认的mainmenu中的home菜单你应该就可以理解了;Section Blog Layout同Category Blog Layout功能一样,但它是为你创建一个基于单元的博客列表;Section Layout是创建一个列出所有该单元下分类的列表。
  2. Internal Link - Contacts,它能为你创建一个基于Contacts组件的菜单,如果你在Contacts组件中设置好了联系信息,可以创建一个Contacts菜单。
  3. Internal Link - News Feeds,可以为你创建订阅列表。
  4. Internal Link – Polls,与投票组件配合使用,创建一个进入投票的菜单。
  5. Internal Link – Users,一个与用户相关的菜单选项,这也是Joomla中相对重要的一个菜单项。其中:Default Login Layout顾名思义,是为你创建一个登陆页面;Default Registration Layout创建一个会员注册页面;Default Reset Layout,创建一个让用户可以重设密码的页面;Default User Layout,创建一个用于显示用户个人信息的页面;User Form Layout,创建一个允许用户修改个人信息的页面。

Joomla的模板

Joomla从一诞生就决定使用内容与外观分离的模式来建造网站。这也是web 2.0的定义之一。这样有利于随时更换不同风格的外观,就如同人类换衣服,而内容不受影响——不管你西装革履还是长袍短褂,内核不会改变,从而功能也不受影响。

一般来说,如果把网站的前台页面用隐形的线划分为一个“井”字形,那么left在左,right在右,header在上,footer在下,而中间那一块最大的面积,就是mainbody。这就是为什么要实现复杂的功能,比如建造一个阿里巴巴那样的B2B黄页,或者淘宝那样的C2C卖场,就必须编写成组件而不是模块,因为组件的内容展示在mainbody区域。

如果你希望自己的网站看起来鲜艳夺目,或者结构美观,或者光怪陆离,甚至每一页都不同,那么你尽管放心,完全能做到。只不过,这与Joomla的内核无关。这纯属模板设计范围。

对于新手来说,尤其是不懂平面设计、不懂CSS的新手来说,想要建造一个漂亮的网站几乎是不可能的。然而几乎每个新手安装完Joomla的第一件事就是:我希望我的网站是这样、这样、这样的外观。

所谓内行看门道,外行看热闹,普通群众评价一个网站的优劣主要是外观,其次是内容,再其次是服务。可见不仅人的脸蛋很重要,网站的脸面也不能马虎。当然了,不可能每个人都是设计高手。所以才有了RocketThemeJoomlArtYOOthemeTemplatePlazzaGavickJoomlaPraiseIceThemeShape5JoomlaBamboo这样的专业模板设计公司,他们的模板卖的非常不错,当然价格也不菲。如果你自己不懂设计又想用到漂亮的模板,我建议你下载免费的Joomla模板

Joomla的模板安装与扩展安装一样。

还有许多内容,无法在此一一解释。我想,最有效的认识途径就是亲自尝试一下。Joomla新手如果担心损坏网站,可以在本机上安装测试服务器进行测试。

如果你很认真的将本文读完并且亲自动手去尝试了一番,我想,你应该会对Joomla有更深层次的了解。

最后,感谢Joomla之门提供的原稿以及您的阅读。