Joomla/深入认识Joomla CMS:扩展、菜单及模板

来自站长百科
跳转至: 导航、​ 搜索

Joomla | Joomla使用手册

Joomla的结构[ ]

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

Joomla knew.png

/administrator 就是管理后台的路径。如果你的网站域名是 http://www.spinechina.org ,那么加上这个目录就是管理后台的路径,即 http://www.spinechina.org/administrator 。这也就引出一个安全隐患:每个人都很清楚Joomla的管理后台路径,而且Joomla登录时不需要输入验证码(CAPTCHA)。

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

/components 是组件(component)目录。如果进入该目录,会看到所有子目录都是以 com_ 开头。这是Joomla的命令原则,com_ 就是组件的字头。组件展示的位置是在模板的mainbody区域。组件可以在前台菜单上建立菜单项,点击该菜单项就打开了该组件的内容。例如,点击本站顶部菜单上的“留言”就能打开留言本。

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

/help 目录——帮助。

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

/includes 是一个重要的目录,里面都是Joomla运行所需的各种脚本、函数等等。

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

/mambots 即触发器目录。触发器(mambot)这个词还留有Joomla的前身mambo的影子,不过在Joomla 1.5 版本之后就改名叫插件(plugin)了。触发器是一种简单的程序,文件名一般以 bot_ 或者 mos_ 开头,少数使用 plugin_ 开头。一般来说只针对网页(content)启效。编辑器(editor)也被定义为触发器,不过这个触发器对于所有需要wysiwyg输入的页面,即使不属于content,例如添加友情链接时的站点说明,也能生效并显示输入窗口。

触发器操作[ ]

只有当网页在浏览器中被打开时,触发器的功能才被“触发”。而且,多个触发器也遵守“依次触发”的顺序。举例来说,我们可以用 mosImage 这个触发器在文章中插入图片,然后需要 bot_multithumb 来将图片尺寸调整,生成缩略图。那么,就必须确保 bot_multithumb 的触发顺序在 mosImage 之后。设定方法是在网站后台的网站触发器列表中点击向上或向下箭头,调整触发器的顺序。

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

具体实例[ ]

例如,plugin_jw_allvideos 这个触发器的功能是在文章中引用来自Youtube等视频网站的一个视频,而文章作者只需要插入一句代码而已,并不需要将视频文件保存在自己的网站空间;flickr4j_photo 这个触发器可以将Flickr.com免费电子相册网站的图片插入到你的文章中,你所需要做的也只是在文章中需要该图片的位置插入一句代码,而图片依然由Flickr.com替你免费保存。前台访客看到的是一个视频播放窗口,或者一幅美丽的图片,却看不到你插入的代码。

还有些触发器是组件自带的。这种触发器的功能就是将组件的某一部分内容插入到文章内容中。例如,我们可以通过quickdown这个触发器在文章中插入指向由Remository建造的下载栏目的某个下载文件;也可以通过mos_g2image这个触发器从整合的Gallery2图库中取出一张图片插入到网站文章中。如果没有这些触发器,完成这些工作就比较麻烦。当然,这些触发器也无法独立工作,必须同时安装有相应组件。

目录结构[ ]

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

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

Joomla模块介绍[ ]

Joomla已经定义了十多个模块位置,如header、footer、left、right、debug、user1、advert2等等。在制作网站模板时,你可以自由分配这些模块位置的展示位置。比如,你可以将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位置都不会显示任何模块。

还有一些模块,它们只显示在后台,不在前台显示。例如,Preview Position 这个模块就是在后台工具栏增加一个“预览模板结构”的快捷方式,方便管理员快速查看网站模板中都有哪些模块位置,分别都布置在哪里。这些模块存放的位置相应的也转到了 /administrator/modules 目录里。相对于前台模块来说,后台模块的可发布位置比较少。一般快捷方式类的后台模块都是发布在 header 这个位置。

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

配套模块[ ]

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

根目录下的/globals.php文件也比较重要。Joomla的安全指南要求修改该文件中的一句代码。打开该文件,在大约第24行,可以看到:

define( 'RG_EMULATION', 1 );

将此处的1改为0即可。

Joomla扩展的安装[ ]

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

由于Joomla可以自己在服务器端进行解压,因此我们安装扩展时直接指向zip格式的压缩包即可。安装都是在后台进行的。必须以(超级)管理员身份登录后台,点击顶部菜单上的“Installer”,弹出的菜单上有templates、components、modules、mambot等,分别对应安装模板、组件、模块和触发器。请注意不要点错了。点击之后就打开安装界面,第一个安装方法就是通过“浏览”按钮找到压缩包,然后点击“Upload File & Install”按钮自动安装。

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

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

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

Joomla knew 1.png

如上图所示,这时DocMan 下载组件的安装包内容。可以看出,在压缩包第一层,只有一个 1.3.x 文件夹,进入该文件夹才能看到 docman.xml 这个安装命令。假如某人解压后自己打包时又多了一层目录,如 /docman/1.3.x ,那么这样的压缩包在安装时就会出错。解决方法也很简单:将该压缩包解压,重新打包,确保 .xml 文件在压缩包的根目录或者第一层目录下。

Joomla的菜单[ ]

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

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

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

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

Joomla的模板[ ]

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

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

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

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

参考来源[ ]

http://www.joomlagate.com/article/joomla-basic/deep-into-joomla-cms-extensions-menus-and-templates/all-pages/

Joomla使用手册导航

Joomla安装

Joomla!的安装

Joomla使用手册

用XAMPP快速搭建Joomla本地测试服务器 | 用Gmail的SMTP发送Joomla激活及通知邮件 | 深入认识Joomla CMS:扩展、菜单及模板 | Joomla 1.0教程 | Joomla 1.5教程 | Joomla高级教程 | Joomla! SEO教程