崔海龙,季 萌,汤鹏杰,贾金原
基于Joomla!的井冈山虚拟旅游管理平台设计
崔海龙1,季 萌1,*汤鹏杰2,3,贾金原1
(同济大学软件学院,上海 201804;2.井冈山大学数理学院,江西,吉安 343009;3.同济大学电信学院,上海 201804)
针对传统旅游平台开发周期长,模块耦合性高,可扩展性差等问题,以井冈山旅游平台为例,基于Joomla!构建了一个完整高效的旅游管理web平台。首先分析了井冈山旅游平台的功能需求,使用Joomla!3.x的框架,设计了井冈山旅游管理平台的架构,并详细阐述了电子商务组件以及文章组件的设计开发,最后通过Joomla!中的SEO(Search Engine Optimization)优化技术,对该管理平台进行了SEO优化,显著提升了搜索排名。该课题对运用Joomla技术构建旅游网站及其推广具有一定的指导和借鉴意义。
Joomla!;内容管理系统;模板;组件;SEO(Search Engine Optimization)
近年来,我国的旅游业发展呈现朝气蓬勃之势。从百度大数据分享和探索平台对近年来人们旅游关键字的检索数据情况来看,人们对“旅游”这一关键词的检索指数增长了一倍多,反映出人们通过互联网关注旅游的热情不断高涨。为了迎合游客的旅游需求,国内涌现出成千上万的旅游网站,但其中绝大部分网站仅仅是介绍一些旅游景点的相关信息,或者再加上一些游玩线路、旅游须知、动态新闻等简单功能。很多网站还停留在静态页面的时代,不能算是真正意义上的旅游平台,这些网站上的网页信息更新较慢,很多信息不能满足市场需求。除了内容与功能上存在不足以外,绝大多数旅游平台大都有着难以扩展的缺陷,一旦平台建成后,在该系统中很难再去定制新的功能。因此,本课题所研制的井冈山虚拟旅游平台采用CMS作为平台研发基础,内容上功能多样化,集成预定系统、论坛、游记发布、电子商务等。并且平台具有良好扩展性,可以随时更换前台展示,拓展新的功能。该旅游平台具有前瞻性,本课题提出的开发方案效率较高,可以在短期内建成,同时也大大降低开发难度,对其它网上旅游平台开发具有示范效应[1]。
本课题所构建的井冈山虚拟旅游平台,涉及到的功能比较多,包含预订系统、论坛、游记发布系统等。功能的多样性必然会导致系统开发周期比较长,因此如何提高开发效率需要反复论证。传统的网站开发,无论是使用何种技术,PHP、Asp.net或是J2EE,都有很多可供选择的框架,使用起来可以提高开发效率。但即便如此,依然存在两个缺点:一是效率提升力度不够,项目的进展很大程度上还是依赖于开发人员的编程能力;二是系统建成后,其他开发人员很难对项目进行新功能的二次开发进行扩展。而旅游平台却又恰恰需要针对市场经常不断更新信息,因此,本课题决定采用国外开源的内容管理系统来开发井冈山旅游平台。内容管理系统(CMS)是一种位于WEB前端和后端办公系统或流程之间的软件系统。该系统可以让用户不需要学习太多复杂的建站技术就可以构建出一个风格结构统一的功能强大的网站构建系统。针对旅游平台的网页信息更新周期快这一特性,采用CMS开发可以加快网站的开发速度减少开发成本,同时CMS的用户接口可编辑性强,可针对不同类型的用户发布不同的内容。此外,CMS系统还面向搜索引擎友好,有着专门的优化。因此采用CMS系统进行本课题井冈山旅游管理平台的开发,可提升旅游平台的功能性、便捷性、可扩展性。
1.1 CMS系统的比较分析
全世界开源的CMS系统超过一百种,排名最靠前的有三大优秀开源CMS系统:Druple,WordPress和Joomla!。Druple的长处和Joomla!非常相似,在制作网站方面有着优秀的表现。在架构方面,Druple比Joomla!更灵活更开放。但Druple 由于历史比Joomla!要短,中文支撑资料也比较薄弱,此外,作为主要用来设计网站的CMS 模版方面也比Joomla!要少。Joomla!的优点有很多,如简单工作流系统,支持从编辑、预览、发布形成流畅的流程化。此外还有良好的文件管理功能,优秀的搜索引擎友好化,便捷的用户分级权限管理,支持全文检索等。除了具有内容管理系统的通用特点外,其领先于WordPress的优势还在于其可为每个页面单独设置模板,比如本课题的旅游平台,电子商务和论坛,可以分别为其设置不同风格的模板。其次是高度的可定制化,每个页面都有许多position可以放置或不放置插件,如此一来,不同的子分类,甚至不同文章,都可以有完全不同的风格。此外,Joomla!可以对每篇文章设置关键字和简单介绍,对搜索引擎非常友好。这些特点完全统一化了模板插件位置,这是全靠tag做搜索引擎的WordPress所不具备的。
1.2 Joomla组件的系统架构[2]
Joomla!内容管理系统,使用PHP程序设计语言,支持MySql数据库。目前版本已经更新到Joomla!3.2.2,Joomla!3.x引入了BootStrap前端框架,正式加入了JQuery库。Joomla!CMS系统支持多平台上架设站点,包括Linux、windows、MacOSX等平台,由Open Source Matters开放源码组织提供开发与支持,使得基于Joomla!的二次开发更加规范化,符合W3C的标准。鉴于Joomla的这种跨平台性与开源社区的支持,井冈山虚拟漫游平台开发过程中,可以使用开源社区提供的组件支持系统开发,大大提高了开发效率。
Joomla!的框架结构有三层,如图1所示。最顶层为扩展层,也就是Joomla!框架的扩展,包括模板、模块、组件。模板建设在扩展层中,可以随时调整,这利于旅游网站的界面更新,可以给用户提供新鲜感。同时模块组件由于社区的支持,也大大减少了开发难度,同时也满足了易扩展的特性。系统的中间层为应用层,是框架JApplication类的延伸,由四部分组成:JInstallation负责Joomla在服务器上的安装,当安装完成后会被删除;JAdministrator负责后台管理;JSite 负责网站的前台;XML-RPC 支持Joomla!网站的远程管理。底层为框架层,由三部分组成:Joomla!框架本身,满足框架需求的库和第三方开发者安装使用插件,底层为系统的建设提供了支撑。
图1 Joomla!的框架结构
1.3 Joomla组件的开发模式[3]
本课题的开发是遵循MVC模式的,即模型-视图-控制器。模型(Model)表示应用程序核心,是应用程序中用于处理应用程序数据逻辑的部分;视图(View)显示数据,是应用程序中处理数据显示的部分;控制器(Controller)是应用程序中处理用户交互的部分,负责从视图汇总去读取所需要的数据,控制用户的信息输入,同事将所得数据传给模型。这种分层有助于管理负责的应用程序,简化了分组开发,非常便捷。整个系统由core, component, module, plugin组成,而component是唯一拥有数据结构特征的部分,component的开发模式为MVC结构,如图2所示。Joomla!中 MVC的基类有四个:JView, JModel, JController, JTable[4]。一个完整的Joomla! MVC,必须从这四个类或者其派生类继承。
1) JView: 视图,包括模板与数据输出逻辑。它的工序是从Model中得到数据,并输出到模板中。
2) JController: 控制器,一个组件可以有多个控制器,每个控制器会有多个task,它是程序的入口。
3) JTable: 数据表,它直接与数据库打交道,把数据库表抽象为一个JTable对象。它给Model提供可操作数据,并可以对表操作进行预处理。
4) JModel:模型,为系统提供更抽象的数据管理,它的存在,可以使开发人员不必关心数据库操作。
图2 Joomla的MVC结构图
2.1 井冈山旅游平台的功能
井冈山红色旅游平台为一个多元化的旅游平台,涉及到的功能包括景区概况、景点、在线预订系统、以及论坛等。系统的前台创建了三级页面结构:一级页面为主页,设计了图片滚动展示、天气、360全景展示、红古金绿蓝链接扇窗、总地图、美景美图等功能;二级页面展示的为景区页面,功能包括360度全景、景区地图、景区天气、景区概览、相关景点图文标题、酒店预订系统、景区美食展示;三级页面为景点页面,包括景点地图、360度全景、滚动景点图片、游记系统、用户点评等功能。
在Joomla!中要实现上述功能,所使用的组件及模块结构如图3。
图3 井冈山旅游平台组件模块图
2.2 井冈山旅游平台的主页界面设计
设计和开发的井冈山旅游平台的主页界面如图4所示。
图4 井冈山旅游平台主页样式图
3.1 旅游平台的模板开发
模板[5]是系统的“皮肤”,通过对CMS系统的标签调用语言,实现CMS系统的前端展示风格。Joomla!模板就是在系统的基础上制作的内容管理系统的样式,如页面模板等。本课题使用的Joomla!系统中系统内核和模板分离,也就是说一个系统中可以存在多套模板。与普通静态网页模板不同,Joomla!模板是通过Joomla!系统的标签语言调用出来的,是可动态生成前台展示效果的。一个模板页面可以生成许多的静态网页,模板所生成的静态网页都是主体部分界面样式一致,只有动态调用部分的内容不同。
井冈山虚拟旅游管理系统是功能多样的旅游平台,正因为功能的多样性,模板技术可以针对不同功能系统设计不同的模板,满足不同功能系统的样式要求[6]。同时,由于旅游景点时常要随着市场做出调整,开放新的景点或者开放更多的项目,其对应的旅游平台也需要灵活多变才能更好的适应用户的需求,满足用户对新鲜实物的追求。模板与系统分离可以很便捷的在不改变系统内核的情况下,开发出更多不同样式新鲜有趣的模板,使网站看起来焕然一新。下面叙述Joomla!模板的开发过程。
1) 首先安装好原版的Joomla!内容管理系统,安装完成后在文件根目录下的templates/目录中创建我们需要制作的井冈山旅游平台模板文件夹,命名为jgs_travel。
2) 然后需要创建templatesDetails.xml文件来存储模板中的结构信息。创建完成后,Joomla!后台就可以显示出该模板,此时的模板并没有预设具体位置的模块。
3) 然后创建xml文件filename中提到的index.php文件和css/template.css文件,通过这二者来确定模块位置及美化模板。Index.php中的核心代码为
4) 最后通过css对其进行位置大小设定以及美化。
模板开发后,在系统后台中可以对其进行控制,在模块上的各个预留模块位置上发布已开发好的模块,从而使模板具有初步的功能性。而功能系统则需要组件开发来实现。
3.2 井冈山旅游平台中的电子商务组件设计
井冈山旅游平台中,电子商务[7]功能是比较重要的功能。通过电子商务功能,系统本身可以发布酒店信息,并根据热度推荐酒店,支持酒店查询功能,用户可以在系统中预订房间,后台可以响应用户的请求。Joomla!系统有友好的社区支撑,有很多第三方的组件支持,其中VirtueMart就是一款非常出色的电子商城组件。本课题就基于VirtueMart组件开发电子商务平台。VirtueMaret支持128位HTTPS加密、支持不同语言切换、支持不同货币切换等,注册用户可在VirtueMart搭建的交易系统中管理用户账户、管理收货地址、查看交易记录、制订单邮件提醒。下面叙述井冈山旅游平台中使用该组件用于实现预订的过程。
1) 首先,安装完VirtueMart组件后,在后台中创建菜单项,并设置标题,然后再在 Virtue Mart 之下选取VirtueMart Default Layout(VirtueMart 默认布局),完成创建一个店面。
2) 然后,通过创建的菜单链接即可浏览创建的店铺。接下来在后台中模块管理中修改配置:酒店预订系统默认购物车开启,热销关闭,默认打开店铺搜索实现酒店检索功能;生产商关闭,货币选择器关闭。
3) 最后,通过设置Categories对酒店进行分类,包括酒店地区的分类,酒店内部房间的分类,还要在VirtuMart菜单上前往 Shop > Payment Methods配置支付方式。
通过以上设置实现酒店预订的功能层面上的要求,其默认的布局还需要修改以满足井冈山虚拟旅游平台的要求,所以在设置面板汇的shopfront Settiings中,设置店铺选择自定义模板,根据课题需要开发专门的电子商务模板,实现整体风格的统一。整个电子商务系统建成后,可以在后台中对系统进行控制,例如:由default_products (默认商品)控制仅显示商品,default_categories(默认分类)控制仅显示分类,default(默认)则控制商品的介绍和分类,off_line(关店)控制店铺下线并显示一条维护信息,通过上述这几项设置可以控制酒店预订系统中各个项目的开放以及关闭。
3.3井冈山旅游平台中的文章组件设计
井冈山旅游平台中,在主页和景区界面中使用了文章组件,更多的是图文展示功能,即以部分文字配合图片展示。在景点页面中,文章组件实现了管理员(登陆的游客即认为是管理员)发表游记(文章),然后游客可以发表评论点评景点的功能。
下面阐述文章组件的开发过程,图5,图6是游记系统游客和系统用户用例图。
图5 游记系统游客用例图
图6 游记系统管理员用例图
1)先要建立数据表,存储相关字段,照片部分存入照片名称以及带扩展名。
2)然后在extensions里建立组件菜单,按照MVC模式进行开发。文章组件[8]关键处是管理,也就是文章的增删改查。Joomla!系统中,增加和修改是在一起的,普通的数据处理可以用表对象或者直接写方法删除,同时joomla!也有可以支持的方法,比如store()保存数据,delete()删除数据方法。还需要了解地址栏参数,option是模块名称,controller是控制器名称,view是视图,不过一般view在某些时候可以代替task,就是数据处理,view是定义在控制器的,对于数据处理标准写法应该写在model里面。但是为了方便,我们写在了控制器。
3) 同时,需要注意的是处理表单提交的数据,表单写f[name],f[jingqu]这种名称,就可以直接接收数据f,然后来处理。提交数据可以使用传统$_POST或者 JRequest::getVar('f', array(), 'post', 'array');而使用$_POST处理需要验证这是一个数据。对于使用传统的sql来添加或者修改,可以使用数组值来处理,但数组值无法接收到图片本身。而使用$_FILES处理,可以分开接收。数组接收也可以通过循环来上传,插入数据也要循环。
3.4 井冈山旅游平台中的模块开发
模块是页面拓展的轻量级组织方式,相对组件来说更为灵活。井冈山虚拟漫游平台涉及到的模块有天气模块和滚动窗模块。作为一个旅游平台,为游客提供实时天气,以及未来几天内的天气信息是必要的。下面以天气模块为例,叙述包括遵行Joomla!模块开发规范,对该模块进行开发。
使用Joomla!开发天气模块时使用了下列四个标准模块文件,分别是mod.xxx.php,mod.xxx.xml, helper.php, tmpl/default.php。
1)mod.xxx.php是模块的主入口,执行初始化工作,调用helper.php,将必要的数据引入到模板中;
2)mod.xxx.xml包含模块的信息,主要定义安装时必须的文件以及模块的参数;
3)helper.php包含helper类,主要用来从数据库或者其他的源中获取模块要显示的信息;
4)tmpl/default.php是输出模块的模板,此文件采用mod_xxx.php返回的数据生成页面要显示的html。
在开发天气模块的过程中,先在mod_weather.php文件中调用helper.php,定义相关的变量:$layot,$helper,$observeData,$forecaseData。然后利用modWeatherHelper:: postprocess ($observeData,$forecastData,$params),获得数据引入到模板中。最后,在helper.php中,从http://open.weather.com.cn/data/源中获得天气数据,同时,声明postprocess函数用于发送数据,createRequestUrl用于处理接口,并将创建xml文件用于存储模块信息。由于通过Cache函数来暂时存储获取的信息,因而减少了服务器压力。在井冈山旅游平台中显示的天气模块如图7所示。
图7 天气模块效果图
SEO即搜索引擎优化,是英文“Search Engine Optimization”的缩写。网站在投入使用的过程中如何被更多的用户发现,是一个非常重要的课题。SEO的工作就是针对搜索引擎的搜索规则,利用这个规则来提高当前网站在搜索引擎内的排名。本课题采用了以下几种方法进行优化[9]。
1) 启用Joomla sef url
Global Configuration->site->SEO Settings-> Search Engine Friendly URLs(SEF)选中yes开启;Use Apache mod_rewrite 选择Yes,去掉sef url网址中的index.php;Add suffix to URLs 选择yes,则Joomla 自动在网址后面添加.html后缀。
2) 减少Joomla!内容重复
去掉Joomla!文章默认的pdf 版本、打印版本和E-mail 的链接,减少重复内容。在Parameters (Component)选项中为这个页面链接参数做特别设置。优先级由高到低依次为:文章设置->菜单链接设置->全局设置。
3) 精简网站,提升速度
网站速度有助于提升seo排名,还可以增强用户的实际体验。Disable掉暂时用不到的模块,精简代码嵌套结构;适当合并多个css文件为一个等等,开启Joomla!网站缓存cache。
4) Joomla!网站全局设置
主要是设置Meta标签优化,Description、Meta Keywords和Show Title Meta Tag。为每个Section和category填上完整的描述description。
5) 网站结构和链接结构seo优化
布置好网站内部链接,适当设置h1和h2标签。给Joomla!网站加上两三个具有较高权威性和相关性的外部链接。
6) 安装joomla! seo 优化插件
可以尝试安装Joomla!丰富的seo 插件。如sh404SEF、Joomla! SEF、Google sitemap网站地图提交,优化Joomla!网站title 和meta description、keywords的 SEO-Generator插件。
经过优化后,针对平台内部的一些特殊关键字的检索在搜索引擎中被检索到的排名有所提升。网站在百度以及Google上的检索,结果出现的页面比之前都有所靠前。
本课题使用Joomla!构建了井冈山虚拟旅游平台,实现了包括电子商务、论坛在内的多项功能。采用CMS技术使得网站在较短的时间内建设出了易扩展的旅游平台,同时结合针对Joomla的SEO优化技术,提升了网站的排名。现今的内容管理系统功能已经很强大,由于开源的缘故,很多第三方支持都做得很好,具有很多功能,如本课题用的电子商务组件,第三方做的很完善,可以直接拿来修正使用,提高Joomla!CMS的建站效率。随着国内对开源系统重视程度的不断提升,社区形成良性环境,相信会有更友好的CMS系统出现,供更多人使用。
[1] 谭云兰,贾金原,康永平,等.基于 WebVR 的井冈山虚拟旅游系统架构设计[J]. 井冈山大学学报:自然科学版, 2012,33(6): 46-50.
[2] 陈红飞. PHP 内容管理系统:Joomla快速建站指南[M]. 北京:电子工业出版社,2009:147.
[3] 陈燕. 利用Joomla!构建旅游电子商务网站[J].电子测试,2013(6):159-160.
[4] cnblogs.joomla2.5MVC[EB/OL].2012.7,http://www.cnblogs.com/catcat811/archive/2012/07/13/2590738.html.
[5] 黄成立. 基于Joomla!的图书馆构建研究[J].情报探索,2014(6):96-100.
[6] 吴涛涛,潘洪祥,邹伦星.Joomla CMS简介及其建站技术初探[C].第七届全国优秀青年气象科技工作者学术研讨会论文集[C].2010.
[7] 胡前进,蔡永州,吴敏. 基于MVC模式的Joomla!框架在Web系统组件扩展开发中的应用研究[J].现代教育技术,2009(6):97-100.
[8] 优白工作室.joomla原创文章组件及相关模块开发讲解[EB/OL].2012.7,http://www.cnblogs.com/catcat811/archive/ 2012/07/13/2590738.html.
[9] 新浪博客.Joomla优化设置步骤[EB/OL].2013,http:// blog.sina.com.cn/s/blog_7202a42f0101ew1u.html.
Tourism management platform development based on Joomla!
CUI Hai-long1, JI Meng1,*TANG Peng-jie2,3,JIA Jin-yuan1
(1.School of Software Engineering, Tongji University, Shanghai 201804, China;2. School of Mathematical Sciences & Physics, Jinggangshan University, Ji’an, Jiangxi 343009,China; 3. College of Electronic Information and Engineering, Tongji University, Shanghai 201804, China;)
According to the several problems such as long development cycle, low efficiency, poor expandability for traditional tourism platform , we used the tourism platform of Jinggangshang as an example which constructed a complete and efficient travel management web platform based on Joomla! In this paper it has analyzed the demand of Jinggangshan tourism platform. According to Joomla! Framework 3.x, it has designed the Jinggangshan tourism management platform architecture, elaborated the design, development of e-commerce components and articles components. At last the management platform will be performed by the SEO optimization and it will let it improve search ranking significantly through the SEO optimization of Joomla!. This project will have some guidance and reference by using Joomla! technology to make up a tourism website and spread.
Joomla!; content management system; template; component; SEO (Search Engine Optimization)
1674-8085(2015)01-0014-06
TP391
A
10.3969/j.issn.1674-8085.2015.01.003
2014-08-08;修改日期:2014-11-27
国家十二五计划重大科技支撑项目(2012BAC11B01-04)
崔海龙(1989-),男,安徽蚌埠人,硕士生,主要从事WEB相关技术研究(E-mail:ddmm127 @163.com);
季 萌(1973-),男,江苏南通人,硕士,主要从事多媒体,三维美术策划制作及UI设计(E-mail:jim@tongji.edu.cn);
*汤鹏杰(1983-),男,河南周口人,讲师,博士生,主要从事图像视频处理,大数据等方面研究(E-mail: tangyu8188417@126.com);
贾金原(1963-),男,山东乐陵人,教授,博导,主要从事图形学,分布式虚拟现实,Web3D,游戏引擎等研究(E-mail: jyjia@tongji.edu.c n).