1、1利用开源 CMS 建立基于 Web2.0 的图书馆门户网站的实践张平杉 马蕾 (四川大学公共管理学院信息资源管理系 成都 610064)【摘要】内容管理系统(Content Mangangement System)可以达到网站管理的高效率,增强与用户的互动。本文对开源内容管理系统 Drupal 进行介绍,并以此为工具开发了基于 Web2.0 的图书馆门户网站,探讨了实现内容管理的四川师范大学图书馆门户网站的方法和步骤。【关键词】开源 内容管理系统 Drupal 门户网站建设 【分类号】TP393引言内容管理系统(Content Mangangement System) ,简称 CMS,是一种
2、位于 WEB 前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统,能把网站中的内容(比如文字,图片等)从网页中分离出来,进行单独管理,从而达到内容和形式相分离,使得网站能够更容易地管理和维护。CMS与 XML 技术所倡导的文档样式、结构、内容三者分离来实现对数据的高效管理的思想如出一辙。其基本思想是分离内容的管理和设计:页面设计存储在模板里,而内容存储在数据库或独立的文件中。 当一个用户请求页面时,各部分联合生成一个标准的 HTML 页面。随着突出以用户中心,注重与用户交互的Web2.0 浪潮的展开以及开放源码软件的广泛应用,高校图书馆网站有了达成更好服务效率和更佳服务
3、方式的技术条件。高校图书馆是一个以提供信息查询利用服务为主要目的的机构,利用内容管理系统来进行图书馆门户网站的信息发布、更新和维护管理平台,能更好地体现以用户为中心的服务理念,改进服务效率。为此,需要对现有门户网站进行重构,增加并强调用户参与,形成与用户的良性互动,从而提高图书馆网站的可用性。本文以四川师范大学图书馆网站为例,探讨利用开源 CMS 软件Drupal 建立图书馆门户网站的实现方式和步骤。1Drupal 简介Drupal 是一个基于 Web 的、开源的、跨平台的内容管理系统(Content Mangangement System,简称 CMS) ,所有的内容均存储在数据库中,根据用
4、户的需求以动态或者静态的方式呈现。Drupal 所需要的基本运行环境包括一个可执行 PHP 脚本的服务器端、PHP 、以及数据库系统。它的特性包括:(1)模块化:Drupal 是一个模块化(Modules)的系统,通过核心模块(Core Modules)基本模块(Core Optional Modules)和提供各种功能的附加模块(Contributed Modules)完成诸如用户认证、内容管理、以及以聚合、Blog、维基等 web2.0 技术以突出交互功能及社群特性。用户可根据需要选择模块轻松扩展 Drupal 以获得更为丰富的功能。(2)内容和外在显示的分开:Drupal 使用主题系统(
5、Themes)将内容和外在显示(Layout )分开。因此可以通过更换主题或自定义主题的方式获得不同的网站外观,并支持W3C 标准。(3)个性化(Personalization):Drupal可以提供完善的个性化环境。不论内容还是显示方式、系统功能等都可以通过自定义的参数或者附加模块实现。 (4)共同写作(Collaborative Book):Drupal 可以让用户设立一个内容项目以供创作,同时也可授权其他用户共同参与写作。(5)开放源码:Drupal 是一个基于 GPL的开放源码软件,用户可以根据自己需要使用并修改该软件。Drupal 的使用和应用是免费的,而且有一个异常活跃的社区支持其
6、发展。2四川师范大学图书馆门户网站建设的目的大学图书馆门户网站是用户查找信息的入口,应该成为以资源为基础,以服务为出发点的信息门户,应具有以下功能:树立图书馆形象,介绍图书馆的概况以及所提供的资源与服务;为用户提供能跨越时空限制,充分利用图书馆资源和服务的平台;体现用户第一的服务理念,通过双向互动了解掌握用户需求,为用户提供2更好服务。为了达成以上功能,经多方考察论证,结合本校实际情况,对原有网站的体系结构做了全面改版。用通俗易懂的语言,重新规划内容板块:以查找资料、用户服务、帮助信息、本馆概况四个栏目为主,每个栏目下又分若干子栏目;将常用链接统一整合到一个栏目,使用统一的站点导航条、内容导航
7、栏,使得整体风格统一,简洁明了;利用Photoshop CS 以及Dreamwaver制作出了网站的首页、导航条、以及内容页面模板。3四川师范大学图书馆门户网站建设实践3. 1 初始安装以及测试环境采用基于 Windows/Apache/PHP/MySQL的开源套装软件 WAPM1.7.4 版以及 Drupal 5.3版,安装 Wamp1.7.4 后,将 Drupal-5.3.tar.gz解压到 Wamp 中的 www 目录下,在命令行或利用 phpmyadmin(一款基于 Web 的 Mysql 数据库开源管理软件)创建门户网站数据库以及用户。打开浏览器,在地址栏里输入 http:/loca
8、lhost/index.php 安装 Drupal。并启用Apache 的 mod_rewrite 模块(该模块的作用是URL 重写,以达到用静态页面形式的链接隐藏后台的动态页面,Drupal 的 Clean URLs 功能需要使用该模块) 。3.2 安装模块扩展功能安装完成后,为体现网站功能,并加强与用户的交互,还需要使用一些扩展模块。从http:/drupal.org/project/Modules 下载部分模块,并将其解压到 Drupal 目录下的 modules 文件夹中(或解压到 sitesall 下新建的 modules 文件夹中) ,以下是笔者所使用的一些模块及其在网站中的功能:
9、Aggregator:内容聚合发布模块提供 RSS, RDF, and Atom 输出。Book:Book 模块,本站点使用该模块作为文献检索课程栏目,采用共同创作的方式让有兴趣参与其中的用户与文检教师完成文献检索网络教学栏目。Comment:评论模块,让用户对内容进行评论或讨论,通过这个模块可直接了解用户对图书馆服务、购买资源的评价。Locale:本地化模块,汉化 Druapl 所必须。Path:将 url 重新命名为直观可读的 url。通过重新命名的 url,用户可以更为直观的了解将要阅读的内容。如查找资料栏目下的图书,可以将其 url 重命名为 how to find a book or
10、 books ,参考咨询可重新命名为 ask a library 等。Poll 和 Advance Poll:投票模块,可提供多选问卷调查,可将图书馆近期购买的书目作为多选问卷调查表,让用户也参与到图书馆的采购计划。Search:搜索模块,提供对本站内容的搜索功能。Statistics 和 Xstatistics :统计模块,统计站点访问、页面点击等情况。Taxonomy:分类模块,提供自定义的分类目录结构,是一非常重要的模块,本站点的许多功能的实现都需要该模块。如可自定义电子资源语种、电子资源状态、电子资源分类等分类词组,在创建内容过程中可以将自定义的分类词组最终以 Tag 的形式输出,通过
11、对 Tag的点击能很方便的将具有同一分类词组的内容集中到一个界面。Throttle:甩负模块,提升网站的相应速度。Tracker:跟踪模块。可以让用户了解网站新增的内容,包括评论等,也可以指定了解某种类型、某位用户的发文情况。FCKeditor:所见及所得的内容编辑模块。Jrating:基于 AJAX 的的评分模块,可以作为 comment 模块的辅助部分,允许用户对内容评分。Views:实现自定义页面内容显示,如以列表方式显示、摘要方式显示等,结合 panals模块、的辅助模块,可以实现更多的显示方式。Faq:常见问题解答模块。Content Construction Kit 模块:内容发布
12、模块,用来定制内容发布的字段模块,定义哪些字段是必填、那些可以多选,此外利用其它辅助模块如 Node Reference 在 cck 中定义参见字段模块(在当前显示页面中创建与该当前显示页面相关的其它页面的链接,为用户提供一个更为便捷的导航) 、Taxonomy Fields 在 cck中定义分类字段模块(Tag 功能所必须)等。3除此以外还使用了 Content Templates、Link、userplus 、IMCE、Taxonomy Batch Operations 等模块。在启用这些模块之后,需要到Administrator Site configuration 以及Administ
13、ratorUser management 对这些模块配置并设置权限。这样一个能提供 Rss、评论、Tag 等功能的站点基本搭建完成。下载并使用 Devel 模块对初步搭建完毕的站点进行测试。3. 3 定制主题Drupal 使用一个主题( Themes)系统将内容和外观表示分离开。也就是说数据可以脱离外观而存在。Drupal 提供了多种主题引擎(theme engine)如 PHPTemplate、XTemplate 和 Smarty 对内容进行主题化。在本门户网站建立过程中以 PHPTemplate 主题引擎。该主题引擎使用若干个以 tpl.php 为文件名的文件做为主题模板,如 page.t
14、pl.php 为页面外观显示模板,node.tpl.php 为节点内容外观显示模板,comment.tpl.php 为评论页面外观显示模板等。定制主题可以采取两种办法,一种是新建所有的模板,另一种方法是修改现有主题模板文件。本门户网站自定义主题的建立采用的是后一种方法即修改现有主题模块文件的方式。3.3.1 新增区块,用于展示某些特定内容。从 http:/drupal.org/project/Themes 下载并在管理界面启用 zen 主题,根据 Drupal 主题系统所定义,对 zen 目录下的 template.php 做了如下修改:function zen_regions() retur
15、n array(news = t(news), /新建立区块 news,用于展示图书馆的新闻动态left = t(navigation), / 新建区块navagation,作为资源页面的导航hottopic = t(hottopics), /新建区块hottopic,用来展示用户交互活动最多内容,如访问量最高的内容,评论次数最多的内容或者评分最高的内容。header = t(header), /页面头部区块, 作为 Search 区块content = t(content), /页面内容区块 content_right_top =t(relate), /相关参照区块footer = t(fo
16、oter) /页面底部区块,显示版权或其他信息); 3.3.2 修改导航和页面外观根据网站栏目特点以及内容,为让网站体现更好的层次结构,除了利用 breadcrumb 导航让用户了解他们所在信息空间中的位置并能在该层次结构中快速后退之外,还需要在不同的内容外观上也要有区别,应此需要对现有的breadcrumb 导航和内容外观显示页面进行修改。(1)对 breadcrumb 的修改function zen_breadcrumb($breadcrumb) if (!empty($breadcrumb) $breadcrumb = drupal_get_title(); / 在 breadcrumb
17、 导航栏增加当前页面return . implode(, $breadcrumb) .; /将层次结构中的符号替换为(2)自定义页面外观Drupal 的自定义页面外观方法有多种,如可以根据用户角色、权限来定义,可以根据节点类型来定义,也可以 Url 来定义。我们可以根据实际需要,采用以上的一种或几种种方法来自定义页面。首先是以节点类型自定义页面:根据栏目特点建立不同的节点类型。新建 Eresource(电子资源) 、News(新闻动态) 、Help(帮助) 、 Service(用户服务) 、和Basic(基本情况)节点类型,在 zen 目录下多次复制 page.tpl.php 并分别重新命名为
18、 page-ersource.tpl.php、page-news.tpl.php、 page-service.tpl.php、 page-basic.tpl.php,这些模板文件里分别输入已制作好的 html 页面代码。根据需要保留相关内容,并在需要输出新增区块的地方如 page-ersource.tpl.php 中加入以输出新增的导航。最后在 page.tpl.php 模板中最开始的地方增加如下代码:type = ersource) 4include page-ersource.tpl.php; /类型为ersource 的节点使用 page-ersource.tpl.php 模板retur
19、n; if ($node-type = news) include page-news.tpl.php; /类型为 news 的节点使用 page-news.tpl.php 模板return; if ($node-type = servie) include page-service.tpl.php; /类型为 service的节点使用 page-service.tpl.php 模板return; if ($node-type = help) include page-help.tpl.php; /类型为 help 的节点使用 page-help.tpl.php 模板return; if ($
20、node-type = basic) include page-basic.tpl.php;/类型为 basic 的节点使用 page-basic.tpl.php 模板return; if ($node-type = book) include page-book.tpl.php; /类型为 book 的节点(文件检索课程栏目)使用 page-basic.tpl.php模板return; ?其次还可以根据用户或 url 链接来定制不同的页面模板:除了使用节点类型定义页面模板外,还可以根据用户或 url 链接来定制不同的页面模板。如需要根据用户当前登录与否来显示或隐藏内容,可以在 page.tp
21、l.php 中加入如下代码:uid) /如果是当前浏览者为系统登录用户则显示下面的内容print / 这里是要显示的内容 ; else /*如果是当前浏览者为非系统用户则显示下面的内容print / 这里是要显示的内容 ;?3)定制节点内容外观模板若需要定制节点内容外观模板,可采取如上的办法,建立 node-type(类型).tpl.php 。也可使用 Content Construction Kit 模组及附加模组来定义节点字段的显示。利用 Panels、view 模块或 php 代码,可以很轻松的实现一些特定的导航如外文期刊字母导航。如利用 php 代码实现:“; foreach ( $t
22、erms as $term ) /输出数组内容$count = db_result(db_query (“SELECT DISTINCT COUNT(nid) FROM term_node WHERE tid = %d “, $term-tid);/统计含有同一分类词条的内容数量if ($count0) /所查询的文章内容中无该分类词条时,不显示该词条print “.l($term-name . (. $count .), “taxonomy/term/$term-tid“) .“; print “;?页面外观及内容外观定制完成后,利用Firefox 浏览器以及其附加软件 Firebug、Ie
23、 tab查找并修改相关的 css 代码,细化页面的显示。首页最终效果如下图:54用户参与的实现如何在本门户网站更好的体现用户参与,实现用户的交互,采用设置用户权限以及一些附加模块来实现。如在以往的网站内容发布过程中,所有的内容都是由网站管理员创建并发布,利用 Drupal 的基于角色的权限系统(Role based permission system):设置若干具有不同权限的角色,将用户加入到相应的角色组中。让图书馆行政人员建立并发布图书馆的通知、公告,让参考咨询部人员具有对 FAQ 栏目以及用户评论内容进行管理,让采编部工作人员具有建立并发布多选调查表的权限,让用户具有对内容发表评论、进行评
24、分的权限,给匿名用户对内容评分的权限,此外还可以给特定用户共同写作的权限。通过适当角色设置,可以使以往仅能对网站内容浏览的用户都参与到网站内容的创建。以上就是笔者利用 Drupal 建立图书馆门户网站的尝试,目前该网站已经开始在本馆内部开始测试。5结束语Drupal 是一个功能强大的 CMS 系统,但是它不仅仅是一个 CMS 系统,通过各种模块,可以很轻松的搭建 Blog、Wiki;使用 Drupal的 Session Control 机制可以将其作为单点登录的入口与图书馆的一些系统结合起来;利用Drupal 的 API,通过自主开发模块,可与图书馆管理集成系统(ILS)紧密的结合起来,如美国
25、的 Ann Arbor District Library 的 John Blyberg以 Drupal 为中间件与 OPAC 结合起来,使传统的 OPAC 成为能与用户交互的OPAC( SOPAC) 。这也是笔者下一步的主要目标。参考文献:1 http:/drupal.org/handbook (2007-12-1)2 http:/www.drupalchina.org (2007-12-1)3 http:/www.drupaltaiwan.org (2007-12-1)4http:/ http:/ (2007-12-1)6 http:/www.aadl.org (2007-12-1)7 范爱红,邵敏,赵阳.大学图书馆网站设计理念的探析与实践清华大学图书馆网站改版案例研究J .大学图书馆学报, 2006(6):38-428 范并思,胡小菁.图书馆 2.0:构建新的图书馆服务J .大学图书馆学报 ,2006(1):2-7.9 刘炜,葛秋妍.Web2.0 技术图书馆应用分析OL. http: /www. libnet. sh/sztsg/fulltext/reports2006/libraryTech20. pdf (2007-12-1)