以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』 (http://bbs.xml.org.cn/list.asp?boardid=22) ---- 新书《Drupal高手建站技术手册》连载(感谢 电子工业出版社 特许提供) (http://bbs.xml.org.cn/dispbbs.asp?boardid=22&rootid=&id=87660) |
-- 作者:admin -- 发布时间:11/11/2010 11:47:00 PM -- 新书《Drupal高手建站技术手册》连载(感谢 电子工业出版社 特许提供) Drupal高手建站技术手册 方擎 等编著 本书作者 [此贴子已经被作者于2011-2-15 11:17:36编辑过]
|
-- 作者:admin -- 发布时间:11/11/2010 11:52:00 PM -- 第1章 Drupal入门 Drupal是一个由PHP语言开发的,使用MySQL或PostgreSQL作为数据库的开源的网站内容管理系统。它有着非常繁荣的开发社区,全世界广大的开发者为它创造了成千上万的功能模块,使Drupal能被广泛地应用于各种类型网站的建设。同时,Drupal本身也是一个具有优良架构设计的网站系统。学会使用Drupal,不仅能掌握一个强大灵活的建站工具,同时也会使开发者通过学习其架构、代码和功能设计,增强自身对网站的领悟和理解,并对未来网站项目的开发产生深远的影响。 本章将向读者介绍内容管理系统的定义,并对当前流行的PHP内容管理系统进行横向对比,以使读者对当前的PHP CMS领域有大致的了解,同时初步了解Drupal的主要特性和功能。在选择使用Drupal作为网站基础框架之前,了解这些知识对技术决策也是非常有帮助的。 内容管理系统(英文全称为:Content Management System,缩写为CMS),是一个能够提供创建、修改、管理和发布各种内容的系统。从使用目的角度讲,CMS的功能主要分成两类:一类用于展示内容,也就是通常所说的“前台”;另一部分用于对内容进行管理,也就是通常所说的“后台”。“前台”主要面向最终用户,将系统中的内容以可读的形式展示出来;“后台”主要面向管理者,用于对系统的内容和用户等进行管理。CMS的主要功能如下。 * 内容管理的基本操作:内容管理系统最初的设计目的是为了方便非技术人员对网站内容管理的需求。CMS为管理员提供易于使用的界面,使其在不需要技术人员协助的情况下,可对网站内容(如文本、图像、视频音频等)进行管理。 * 内容分类机制:对于大量的内容,如果没有分类的话,既不便于管理,也不利于访问。CMS提供一种分类机制,允许管理员可以创建类别树,并将根据内容的不同属性(如标题、文本或关键字等)将其归到某特定的类中。 * 对内容进行版本控制:CMS提供一种对内容进行版本控制的机制,来保存内容的历史版本。这样做的好处是可以使重要内容的修改被记录下来,以便于随时恢复到以前的状态。 * 基于角色的用户管理:内容的发布和访问都是需要权限控制的,CMS可以安排指定类别的操作者负责不同类别内容的管理,并设置特定的用户群可以访问特定的内容。“角色(Role)”可以理解为是“用户组”,这个组内的用户具有相同的权限。 * 主题与模板机制:CMS的前台负责展示内容。内容的展现形式有很多,样式也要根据系统所面向的用户群而进行定制。如果一个CMS会作为多个网站的基础框架的话,它必须有灵活的内容模板机制,使开发人员可针对不同的项目和需求修改内容展示样式。这样的机制在CMS中被称为“主题模板引擎”。 图1-1展示了一个典型的CMS系统的构架图。位于中心的是保存各种内容的存储服务器,由指定的内容录入和管理人员向内容数据库中输入内容。同时,用户还可以通过某种方式(如浏览器或客户端等)浏览和查询内容,并进行反馈(如评论)等。 图1-1 CMS体系结构 目前,网络已成为内容聚集的交流的主要平台,内容管理系统也越来越多地被应用于网络。人们将基于Web的内容管理系统划分出单独的一类,名为“网络内容管理系统”,英文缩写为WCMS(Web Content Management System)。在这个领域中,PHP开发的开源WCMS占据着绝对的统治地位。1.2节将对一些流行的开源PHP WCMS进行介绍和对比。 WCMS在近些年来发展迅速,目前业界已经有很多成熟的WCMS系统。从简单的博客引擎系统到具有工作流、表格处理等功能的企业级内容管理系统,均有多种产品。在这些产品中,以PHP为开发语言的WCMS应用较为广泛。PHP的快速开发及部署成本低的特性,是大多数人选择它的原因。而且,PHP的WCMS多半是免费和开源的。近年涌现出了很多优秀的PHP的WCMS产品,如Joomla、 Wordpress,以及Drupal等。本节将对这几个系统进行简单的比较。 Drupal是由比利时人Dries Buytaert开发的,最初只是一个用于实验室内部的新闻发布网站和网上交流区。Dries经过一段时间的发展和改进,于2001年发布了Drupal的第一个版本Drupal 1.0。随着Dries的推广,Drupal被越来越多的人所使用,其功能也逐步地向内容管理系统完善。当Drupal发展到Drupal 5.x时,进入了繁荣时期。欧美地区的很多公司、组织和个人开始使用Drupal构建各种类型的网站,如Sun公司、AOL、IBA等,都使用其开发子站点。美国政府也使用其作为政府财政开销的公众监督网站,流行天王迈克· 杰克逊的巡演网站也是用Drupal构建的,其流行的程度可见一斑。 几乎任何一个内容管理系统的发展都经过类似Drupal诞生的过程:起初为某一简单的需求而开发的一个程序,接着由于应用到更多的项目中,逐步进行功能增强和内核完善,最终将核心功能抽象出来,发布成为一个独立的系统。Drupal从诞生至今已经过十余年,算是比较成熟的系统了。 Drupal是一个免费的、开源的、具有模块化框架、使用PHP开发的网站内容管理系统。它可以使个人或用户社区轻松地发布、管理和组织Web站点上的各种内容。Drupal官方网站的地址是:http://www.drupal.org,网站本身就是用Drupa平台搭建的,主要功能包括新闻和公告、讨论组以及项目管理等。此网站对于所有的Drupal使用者都非常重要, Drupal的模块、主题、翻译包、帮助文档等几乎都由这个网站提供。读者可以在网站上注册一个账户,亲身体验一下各种功能。 国内的Drupal用户可以访问drupalchina.org,它是Drupal的简体中文官方网站。图1-2和图1-3分别为drupal.org和drupalchina.org的首页面。 图1-2 Drupal官方网站首页 Drupal包括内容管理系统、博客系统、论坛、协作型编写环境、图片库、文件上传和下载等功能,并采用GPL许可协议发布的开放源代码软件。GPL协议意味着任何人都可以复制、分发及修改源代码。同时,Drupal具有丰富的文档支持和强大的专业化社区。Drupal中国社区也有很多Drupal爱好者和开发者,他们为Drupal文档的中文化作出了巨大的贡献。 图1-3 Drupal China官方网站首页 由于Drupal是用PHP编写的,因此,可运行在Windows、Mac OS X、Linux、FreeBSD、OpenBSD、Solaris和其他任何支持PHP解释的服务器中。它目前支持MySQL和PostgreSQL数据库。笔者推荐使用Linux作为网站服务器环境,因为相比Windows + IIS的组合,LAMP(Linux + Apache + MySQL + PHP)更稳健,且性能更佳。 Drupal的最大特点是具有可扩展性。在Drupal的官方网站上,有数以千计的模块供使用者下载。这些模块涵盖了应用中的各个方面,如内容处理、电子商务、主题展现等,而且还有优化性能的模块。同时,正由于其优秀的可扩展性,它也通常被作为一种“网络应用程序框架(Web Application Framework)”。使开发者无须重复开发基础功能模块,而可将重点放在高级的自定义特性的开发上。这一点在本书的高级篇中将详细进行讲解。 无论使用者是否精通PHP或相关的编程技术,都能很好地使用Drupal。当然,更高的编程技巧意味着能更好地使用Drpual,它提供了简洁但强大的模块机制以及丰富的API,如果开发者的编程技能很好,那么Drupal必将成为其强大的建站工具。 Joomla是Drupal主要的竞争对手,也是目前使用非常广泛的开源内容管理系统之一。它具有完善的内容管理功能,每个文章内容包括多种属性(如分类、所属区、发布状态、路径别名等),同时还有“回收站”功能——一个文章被删除后,先移至回收站,只有从回收站删除后才彻底删除。这样的机制对保护内容很有帮助。Joomla支持多主题模板,同时通过组件(Component)和插件(Plug-in)来扩展系统功能。Joomla的宣传口号是:让不会用PHP的管理员可以轻松的构建网站。 Joomla有统一的管理后台,可以执行站点管理的各种操作。如图1-4所示为Joomla的后台管理界面,首页面包括“发布新文章”、“首页管理”、“语言管理”等管理链接。 文章发布页面如图1-5所示,每个文章具有路径别名(Alias)和分类等属性。同时Joomla集成了Tiny MCE网页文本编辑器,便于管理员对文章内容进行样式修改。 图1-4 Joomla后台管理页面 图1-5 发布文章页面 Joomla官方的演示网站如图1-6所示,当前主题为Joomla的蜜蜂(Bee)主题。 Joomla的用户只能通过后台管理系统创建,但并不支持在线注册的功能。而Drupal原生提供了用户注册机制,只要设置为开放注册,则互联网用户便可以进行在线注册。它的核心模块也提供了博客、评论以及论坛等功能,并对内容创建也属于“协作式”平台,每节点也可以支持多版本,所以Drupal在Web 2.0方面更为擅长。 Joomla提供了内置的用户组,包括“作者(Author)”、“编辑(Editor)”、“发布者(Publisher)”和管理员等,但用户组是固定的,不能添加或删除用户组。而在Drupal中,尽管只提供了两个默认的系统角色:匿名用户(Anonymous)和注册用户(Authenticated),但管理员可以添加新的用户角色。同时,Drupal内置了权限机制,每个权限表示进行一项操作所需的权限,只有具有这个权限的用户才可以执行此操作。并且权限可以和用户角色相关联,这样凡是属于此角色的用户就拥有了相应的权限。 图1-6 Joomla的Bee主题 从系统的二次开发角度看,Joomla的开发风格和Java相近,模块需要继承JComponent类,而插件需要继承JPlugin类。Drupal则使用注册文件声明模块,并通过一系列的钩子函数实现对Drupal内核的修改和功能扩展。所以Drupal的开发属于“半面向对象、半面向过程”,在对核心对象(如用户、节点、类等)进行了类的封装外,对类的操作和常用的处理均通过函数直接完成,这在很大程度上保持了PHP的优势,使开发者更容易上手。 和Drupal相比,Joomla是一个比较专业的“内容管理系统”,它比较适合单纯以内容为主的网站。而Drupal则更具有Web 2.0的网站功能和风格,是一种多人协作式的内容管理与展示平台,且更符合“框架”的特性;其用户权限模型的灵活性很大,定制起来非常容易。 Typo3是一种在GPL下发布的企业级内容管理系统,全世界有很多网站都使用它作为WCM。它历史比较悠久,所以支持的语言也比较多。许多大学、公司、政府机构和非营利组织也在使用它。图1-7为Typo3的首页截图。 Typo3是一个比较大型的系统。尽管它有一个很大的社区,也有大量用户采用它,但Typo3对使用者的编程水平要求较高,故它的学习过程很长。Typo3的网站上也提到:如果用户想在短时间内上手并搭建一个内容管理系统,那么Typo3不是最佳的选择。 Typo3的大部分核心模块和第三方模块使用的是比较早的技术,结构也不是很好,例如大量地使用了表格作为页面布局的实现方法,没有很好地使用CSS;因此,它的模板系统与Drupal和Joomla相比是较为复杂和陈旧的。 图1-7 Typo3的首页截图 WordPress是当前最流行的PHP博客系统,它免费、开源、简洁并且主题丰富,是大多数个人博客的首选建站程序。它使用PHP开发,MySQL作为数据库系统。它具有标签、分类、文章评论等常用的功能,还可以安装第三方插件以扩展其功能,其官方博客页面如图1-8所示。 图1-8 WordPress官方博客页面 WordPress有统一的管理后台,如图1-9所示,提供了系统各方面的配置,如文章管理、分类设置、站点相关信息设置等。文章发布页面如图1-10所示。 图1-9 WordPress的后台管理 图1-10 WordPress的文章发布 WordPress最受欢迎的特性之一,是它丰富的主题模板。它拥有近百种免费的主题,且样式美观。如图1-11所示为WordPress的主题管理部分,在这个页面中可以查看大量主题,只需要单击“Install”按钮,即可完成主题的下载与安装,非常方便。 如果只是做博客系统,WordPress比Drupla更为简洁和轻便,比如它只使用了11个数表用于存储内容。但是,如果博客只是系统中的一个次要功能,从可扩展性角度讲,Drupal则更为适合。Drupal也具有Blog模块,在开启后可以提供简单的博客功能,但要到达WordPress的效果,则还需要使用第三方模块并进行相关的定制。 图1-11 WordPress的主题浏览 前面列举了几种开源的使用PHP开发的WCM,下面从以下几方面对最常用的Drupal、Wordpress和Joomla做一下比较。 * 安装难易度:包括程序的安装和数据库的安装。即从下载到正式使用期间的过程的开销。 * 学习难易度:包括系统的易用性、管理界面的可操作性以及其接口或扩展机制的学习难易度等。 * 会话管理:会话管理是指服务器对当前用户的各种状态的控制与存储。除了PHP原有的会话管理机制外,WCMS一般会扩展会话管理机制,以实现更强大的会话管理机制。例如Drupal实现了基于数据库的会话管理机制。 * 用户管理:是否支持多用户注册以及对用户的权限管理等。 * 可扩展性:如果系统允许并很好地支持开发者开发自己所需的功能,那么这个系统的可扩展性就比较强。开发者自定义的模块或组件可以轻松地发布并为他人所用,这也是可扩展性的另一个重要体现。 * 可伸缩性(Scalability):系统的可伸缩性包括纵向和横向两方面。纵向可伸缩性是指在同一个逻辑单元内增加资源来提高处理能力。例如通过硬件设备的增加(如升级为更强的CPU或扩大内存或存储空间容量)来增强其性能,支持更多的用户或获得更快的运行速度等。横向可伸缩性是指系统能够通过运行更多的程序实例或者采用分布式处理来增强处理能力。数据库集群、分布式文件系统、负载平衡都是提高系统横向的可伸缩性。 * 主题模板支持:主题模板的易开发程度,以及现有的主题模板的数量。 * XHTML/CSS:对标准的支持程度影响着主题模板的可编程性。 * 免费:无须支付任何费用即可下载、安装、再开发以及部署。 * 更新较快:有很多著名的CMS,由于其更新速度慢,很长时间没有出新版本,致使大量的用户流失。而Drupal的更新速度非常快,推出的升级和补丁也比较及时,并且每年都有Drupal会议举办,让使用者对Drupal的未来很有信心。 * 专业:强大的CMS功能,使用了当今最流行的各种网站技术。Drupal比其他的WCM更适合于PHP的专家,因为它是一个框架级的WCM,有着丰富的API及完善的代码标准和风格规范。 * 丰富的第三方模块:在Drupal的官方网站上可以下载各种第三方模块以扩展其功能,如电子商务、内容处理、主题样式等各方面。 * 扩展性强:模块式架构和主题模板引擎,使功能和表现样式均可以无限扩展。 本节将对Drupal的主要功能和特性进行简要介绍。 内容管理功能是Drupal的基础功能。Drupal使用节点作为内容单元,每个节点包含标题、详细内容、发布时间以及是否推荐到首页、是否置顶等多个属性。管理员也可以对节点进行结构上的更改,以创建新的“内容类型”。Drupal默认是通过“内容类型(Content type)”来区分不同的内容,也可以通过第三方扩展模块来为节点增加额外的属性。此外,还具有完善的分类机制,可以对内容进行复杂的分类控制。下面是一些Drupal内容管理方面的功能。 * 创建、编辑和删除节点:具有创建节点权限的用户可以为站点贡献内容。节点的创建和编辑是两个不同的权限,可以分配给不同的角色。Drupal支持节点版本(Revision),可以记录下每个节点每次更改的内容。这样管理员可以选择使用哪个版本作为当前版本。这一功能结合了维基百科的特性,非常适合协作式内容创作。 * 便捷的内容编辑:Drupal后台提供一个统一的节点管理页面,在这个页面上可以查找节点、批量更新节点状态以及删除节点。同时,如果以管理员身份查看某个节点,那么此节点页面的标题下方会直接显示当前节点的管理链接。 * 分类(Taxonomy):在Drupal中可以创建多个“词汇表”,每个词汇表可以指定哪些内容类型可以使用。每个词汇表定义了属于本领域的多个分类项,分类项之间既可以有继承关系,也可以有“同义词”关系。如果再进行深入的研究,则可以用类别体系来表达本体(Ontology)。 * 评论:可以设置哪些内容类型开启评论。评论的权限也是由后台控制的,匿名用户和注册用户均可以进行评论。还可以设置评论是否需要审核以后再发布。 * 协同写作:Drupal提供一种名为“Book(文集)”的内容类型,每个文集分为多个章节,构成一个结构化的内容群组。每个内容单元即为节点。如果实时开启节点的版本控制功能,那么就实现了一个维基百科式的内容协作平台。 Drupal是多用户系统,它支持多用户注册并具有完善的用户管理功能。由于采用了基于角色的权限管理,Drupal将不同的用户划分为不同的角色,限制其对内容访问和修改等操作。Drupal不仅能管理本地的用户,还可以使用外部的认证源(诸如Jabber、Blogger或其他的Drupal站点)进行分布式认证。在Drupal 6中,提供Open ID的统一登录机制,用户只要在Open ID网站上注册均可在开启Open ID模块的Drupal网站上登录。这是一种类似于微软的Passport一样的机制。如图1-12所示为Open ID网站的首页(网址:http://openid.net/)。 图1-12 Open ID网站首页(使用OpenID提供的验证服务可进行统一的身份验证) Open ID允许用户使用同一账户登录多个网站,而不需要在网站上重新进行注册。使用Open ID的前提是所访问的网站支持Open ID服务。Open ID要求用户首先在Open ID网站上进行注册,填入邮箱、密码、姓名等账户信息。其他支持Open ID服务的网站,在用户进行登录时,将会根据用户提交的信息通过Open ID提供的验证服务对用户进行身份验证,如果通过则进行登录。除了Open ID的官方网站外,任何运行Open ID服务的网站均可以作为身份验证中心,甚至在局域网内搭建一个Open ID服务器也是可以的。Open ID至今已获得50000多个网站支持,其中包括Google、Yahoo!、微软、美国在线、MySpace等。 主题模板系统将内容和显示方式分离出来,这样可以方便地调整网站的外观风格,而不影响业务逻辑。在Drupal的官方网站上,可以找到大量的设计美观、风格多样的Drupal主题,下载后可直接安装并使用。目前也有很多公司或工作室提供Drupal主题的开发服务,对网站主题模板要求高的用户可以考虑向专业的开发团队寻求支持。 模板引擎是主题模板机制的核心,Drupal支持多种模板引擎,如内建的PHPTemplate和Smarty等。PHPTemplate是专为Drupal开发的,它具有高效、易学的特性。它使用的模板是HTML与PHP混合式,不需要学习其他的模板语言。 如图1-13所示为美国奥巴马总统的“经济危机恢复网站”首页。这个网站是由Drupal构建的,用于展示政府针对经济危机所采取的各项计划以及进展情况。其风格简约、色调偏冷,但内容突出、便于网民访问,是比较优秀的Drupal网站主题。 图1-13 美国的经济危机恢复计划展示网站 如图1-14所示为美国著名歌手 “流行之王”迈克·杰克逊的官方网站,也是由Drupal构建的,网页中还结合了Flash和视频等媒体技术展现页面的华丽风格。 博客是当前互联网的主要应用,Drupal提供了多种与博客相关的功能。Blog模块提供了最基本的博客文章内容类型,用户可以发布博客文章,其他用户可以浏览某用户的博客列表。使用Drupal做个人博客也是个不错的选择,Drupal的创始人就采用Drupal作为其个人博客平台,如图1-15所示,网址为:http://buytaert.net/。 图1-14 迈克·杰克逊的官方网站 图1-15 Drupal创始人的博客 除了基本的博客功能外,Drupal还提供了Blog API和RSS订阅功能。下面分别进行介绍。 * Blog API:Blog API允许用户使用桌面就用程序来更新自己的博客。Windows Live Writer、Zoundry等均是流行的博客写作客户端工具。用户可以在本地编写博客文章,在连接上互联网后发布至站点中。可以使用这样的工具集中管理多个博客站点。 * RSS:Drupal提供将网站的上节点Drupal以RDF格式输出的机制,这样使用户可以对站点实现RSS订阅。drupal.org网站上的RSS订阅功能如图1-16所示。 图1-16 RSS订阅支持 Drupal包含了一个论坛模块,可用来创建论坛或讨论组之类的社区站点。Drupal的论坛支持多级子论坛,每个论坛均可以拥有多个子论坛。每个论坛也可以拥有不同的“板块”,这在Drupal中被称为“容器”。版块用于对论坛进行归类,但在其中不可以发表主题。具有权限的管理员可以对论坛主题进行管理,但管理粒度较粗,不能设定其只能管理部分论坛。这种权限控制需要第三方模块的支持。 Drupal的官方网站论坛是使用Drupal搭建的如图1-17所示。 图1-17 Drupal的官方网站论坛 Drupal是面向全球使用者的,它提供了完整的多语言支持机制,使不同地区的开发者可以创建多语言的网站、博客、内容管理系统和社区应用。Drupal的多语言支持分为两种:一种是界面多语言支持,另一种是节点内容的不同语言版本。 对于界面语言,Drupal的官方网站上已经有大量的语言包,可直接导入Drupal进行界面的本地化。网站的注册用户可以自定义界面语言。目前Drupal主程序已有中文语言包,但并不是所有第三方模块均有中文语言包,可能需要读者自己进行汉化工作。对于没有翻译的界面文字,Drupal提供了翻译功能,可以查找要翻译的字符串并增加翻译。 图1-18为使用Drupal搭建的Drupal法国网站。 图1-18 Drupal的法国网站 对于节点内容的不同语言版本,这个功能对于国际化的网站是非常有用的。比如网站可以向国外用户展示英文内容,而向国内用户展示中文内容。开启Drupal的本地化模块(Locale)后,可以为每个节点创建不同语言的版本。Drupal会根据登录用户的语言设置来显示相应的内容。 一个站点能够良好地运行,是需要管理员不断加以管理和维护的。Drupal提供了很多站点配置以及与管理分析相关的功能,使管理员能够轻松地管理站点并监视其运行状态,及时地发现问题并进行危机处理。Drupal站点管理方面的一些特性如下。 * 站点状态报告:Drupal提供一个状态报告页面,列出了网站所需的软件环境的检查项(Checklist),如图1-19所示。如果某项不符合要求会红色显示,并在管理页面上报警。 * 分析、跟踪和统计:Drupal可以生成很多站点分析数据,例如访问日志、错误信息、流量等信息。 * 日志和报告:所有重要的操作和系统事件都会被捕获并记录在一个事件日志中,管理员可以随时进行查看。 * 基于浏览器管理:Drupal完全通过浏览器进行管理,这意味着管理员可以在任何能够连接互联网的地方管理站点,而无须任何客户端。 图1-19 Drupal的站点状态报告 模块(Modules)式架构是Drupal最优秀的地方。通过各种下载第三方模块以及开发自定义模块,用户可以轻松扩展Drupal以获得更为丰富的功能。开发者可以在drupal.org上找到成百上千个不同种类的Drupal模块。对Drupal的开发也主要是通过模块进行的,掌握Drupal模块开发技巧是开发Drupal的技术基础。 Drupal除具有一般的内容管理系统功能外,还具有一些其他的特性。 * 简洁友好的网址(Clean URL):Drupal可以让操作者为每个页面自定义一个友好的URL,这在Drupal中称为URL别名。如Drupal的“关于页面”可以通过“http:// drupal.org/about”访问,而不需要输入http://drupal.org/node/12345。这对搜索引擎优化有非常重要的作用。 * 全文搜索:Drupal提供搜索模块,可以让用户对网站节点、用户或评论等内容进行简单搜索和高级搜索。搜索框以区块的形式提供,可以被放置在页面的某个区域中。 本章对Drupal的一些基础背景知识进行了介绍,包括内容管理系统的定义以及Drupal的主要特性等。大名鼎鼎的Bruce Eckel(“Thinking In C++”和“Thinking In Java”的作者)曾建议他的朋友使用Drupal。他说:“我的一个朋友Nancy Nicolaisen表示她希望搭建一个旅游网站,我建议她看一下Drupal。她听取了我的建议并最终选择了它,只进行了轻微的改动就使她的网站上线了,用她的话来说,这个用户社区吸引她的地方是它的强大和易用。”听了大师的推荐,想必读者已经摩拳擦掌,准备尝试一下Drupal了。第2章将讲解如何下载和安装Drupal。 |
-- 作者:admin -- 发布时间:2/15/2011 11:10:00 AM -- 第2章 安装Drupal 6 本章将讲解如何安装Drupal 6,以及如何创建一个简单的个人博客。安装之前需要配置好PHP的运行环境,并开启MySQL数据库服务。如何安装PHP和MySQL不属于本书介绍范围,请读者自己参考相关文档和书籍。目前PHP和MySQL在Windows下有独立安装包,安装起来相对比较简便。在Linux下,也有编译好的对应不同Linux发行版本的安装包。对于使用Windows作为开发环境的读者,建议使用AMP(Apache+MySQL+ PHP/Perl)集成环境——XAMPP。它集成了网站服务程序Apache、PHP扩展以及MySQL数据库,只需要一次安装即可完成Drupal运行环境的搭建,可以避免很多在配置Apache、PHP和MySQL过程中出现的问题,是PHP开发者的首选。 2.1 版本的选择 Drupal在经历了4系列的初出茅庐和5系列的辉煌后,现已发布了其第6个版本。Drupal最新的版本为6.10,与上一个版本相比,D6中增加了对AJAX支持,重写了主题模板引擎,支持更强大的模板自定义机制。同时,一些核心模块也做了少量的修改,不过大体上还是基本一致的。第三方模块中的CCK和Views等模块,也做了重大的升级,因此是很吸引人的。 从功能角度看,即从内容的发布和管理、用户管理、站点配置等方面,除了操作界面有些微小的变化外,Drupal 6没有显著的改变。从程序角度看,Drupal 6重写了主题模板引擎,使之更为高效和健壮,同时开发方式也做了微小的变化,比如现在每个主题都需要有注册文件,而且Drupal还会对主题相关的函数或模板进行缓存,这些在开发时都需要稍加注意。 Drupal以其丰富的第三方模块闻名,因此选择Drupal版本的一个重要参考因素,就是看所要使用的模块是否有稳定版。Drupal的模块分为开发中版本、Alpha测试版、Beta测试版、预发布版(RC)和最终版。只有RC和最终版是可以用于生产环境的。如要对原有Drupal网站进行升级,则要充分考虑原网站自定义开发模块的迁移问题。 就目前开始学习Drupal,或使用Drupal建站的读者来说,应首选使用Drupal 6系列的最新版。 2.2 获得Drupal Drupal程序的官方发布渠道只有drupal.org网站。访问www.drupal.org进入Drupal官网,在右侧将会显示当前Drupal主流版本的最新版,如图2-1所示。同时网站的第一条新闻也显示当前Drupal的下载链接,单击直接开始下载。 图2-1 Drupal首页的下载链接 Drupal安装包是.tar.gz的压缩文件,下载之后可使用WinRAR、WinZIP或7Zip等压缩软件进行解压缩。在Linux下使用如下命令将Drupal解压缩至当前目录。 tar –xvzf drupal-6.10.tar.gz Drupal具有检查最新版本的功能。在其后台管理的系统状态报告页面中将会显示当前Drupal发布的最新版本,如果运行的网站版本不是最新版则提示管理员进行升级。 2.3 创建数据库 Drupal目前只支持MySQL和PostgreSQL数据库。PostgreSQL也是非常著名的开源数据库。在安装Drupal之前,需要手动创建一个供Drupal使用的数据库,并且设置好连接数据库所使用的用户名和密码。Drupal在安装时将自动生成它所使用的数据表。本节使用phpMyAdmin创建供Drupal使用的MySQL数据库。phpMyAdmin为当前最流行的基于Web的MySQL数据库管理工具。通过它可以控制无端的MySQL数据库,执行对数据库、数据表、用户等管理工作,也可以进行SQL查询。 如果使用XAMPP,那么phpMyAdmin是自动安装的,通过访问http://localhost/ phpmyadmin即可进入phpMyAdmin管理页面。如果没有使用,可以去官方首页(http://www.phpMyAdmin.net)下载最新版本。使用phpMyAdmin创建数据库和用户的具体步骤如下。 打开浏览器,进入phpMyAdmin管理界面,如http://locahost/phpmyadmin。页面如图2-2所示。 在右侧中央有“Create new database(创建新数据库)”部分,填入数据库名字,并选择编码集(Collation)。编码集是数据表中的字段值存在数据库里时所使用的字符编码,如gb2312和utf-8等。如果要存放中文内容,请选择“utf-8_general_ci”。 图2-2 在phpMyAdmin中创建数据库 比如将数据库命名为“drupal”,单击右侧的“Create”按钮,即完成创建。图2-3即为创建成功的页面。 图2-3 成功创建新数据库drupal 在命名数据库时请注意:大小写是有区别的,建议全部使用小写字母。 接着创建数据库用户。数据库的root用户可访问所有的MySQL数据库。不过,一般PHP应用程序都是明文存储数据库连接密码,因此非常不安全,如果一旦泄露,非法用户将获得数据库的最高权限。所以最好为每个数据库创建专用的用户以读取数据库,通过phpMyAdmin创建数据库用户的方法如下。 在phpMyAdmin首页面单击“权限”进入权限按理页面,如图2-4所示。 单击进入后,可以看到目前数据库中的所有用户列表。单击列表下方的“添加新用户”链接进入数据库用户添加页面,如图2-5和图2-6所示。 图2-4 “权限”链接所在位置 图2-5 创建新用户的链接 图2-6 添加新用户页面 在这个页面中,必填的内容是“用户名”。虽然不设密码也是可以的,但相当不安全。phpMyAdmin提供一个自动生成密码的功能,只需要单击 “重新输入”下方“Generate Password(生成密码)”区域的“Generate”按钮,即可生成随机密码。在图2-6中,创建了用户名为drupal_admin的用户,且使用了生成的随机密码——“6HTXtn5jhh:StJz.”。 创建成功后,需要给drupal_admin用户分配权限。单击“权限”链接,回到权限浏览页面。单击刚创建的用户“drupal_admin”行的“编辑权限”链接,如图2-7中标记处所示。单击后,进入权限的详细设置页面,如图2-8所示。 图2-7 “编辑权限”按钮 图2-8 权限详细设置页面 先单击第一部分“全局权限”的“全选”链接,将所有的操作全部选中。再在第二部分“按数据库指定权限”中,单击下拉框,选择新创建的“drupal”数据库。然后单击“执行”按钮,完成drupal_admin的权限设置。 2.4 使用安装向导 将Drupal的网站文件放置在Apache的htdocs目录(或其他Document Root目录)下后,即可运行Drupal安装向导。安装向导程序文件为根目录下的install.php。确保Apache和MySQL正常启动后,直接通过网址运行此页面即可,如http://localhost/install.php。 2.4.1 选择向导的界面语言 进入安装向导后,首先要选择安装过程中所使用的界面语言,如图2-9所示。默认情况下只支持英文,如果要使用中文或其他语言,需要先安装相应的语言包。由于Drupal的安装流程非常简单,更换界面语言还不如直接安装更简便。 图2-9 Drupal安装向导 单击图2-9中圆圈标记处的链接“Install Drupal in English(使用英语安装)”即开始安装Drupal。 2.4.2 创建settings.php文件 单击安装链接后,Drupal执行安装前检查。Drupal的配置文件为sites/default目录下的settings.php文件。如果此文件不存在或没有可写权限,将会出现错误提示,如图2-10所示。图中所示的错误信息告知:sites/default目录下没有settings.php文件,但 sites/default目录下有一个default.settings.php文件,是配置文件的示例。复制此文件并更名为settings.php以作为Drupal的配置文件。 设置settings.php文件权限为可写。这个操作在Linux和Windows中是不同的。在Linux中,通过使用“chmod a+w settings.php”来设置文件权限;在Windows中,在settings.php上单击右键,设置文件属性并确保“只读”选项未勾取即可,如图2-11所示。 然后,回到图2-10的错误页面,单击下方的“try again”链接。如果已关掉页面,只需要重新访问Drupal站点即可。 图2-10 修改settings.php文件 图2-11 在Windows下将settings.php设为可写 2.4.3 设置数据库 如果settings.php文件设置正确,并单击“try again”后,会出现如图2-12所示的界面。 图2-12 数据库配置页面 此页面需要填写的共有三个部分:数据库类型(Database type)、数据库名(Database name)、数据库用户名(Database username)和密码(Database password)。下面分别介绍详细的配置方法。 数据库类型:Drupal支持两种数据库类型,一种是mysqli,另一种是pgsql。这两个选项分别代表MySQL数据库和PostgreSQL数据库。这两个数据库都是著名的开源数据库。一般情况下使用MySQL作为Drupal的数据库,所以选择mysqli即可。mysqli是一个PHP针对MySQL开发的接口库,PHP程序通过一系列mysqli函数来访问MySQL数据库。 数据库名称:此处要填的是2.4.2节在“创建Drupal数据库”中创建的Drupal数据库名称。示例中创建的数据库名称为“drupal”,请注意大小写,Drupal和drupal表示不同的数据库。 数据库用户名和密码:此处填入Drupal连接数据库使用的用户名和密码。如果是生产环境,不应使用root用户。2.3节中创建了用户名为drupal_admin的数据库连接账户,这样更加安全。将“drupal_admin”用户名和密码填入对应的文本框。 还有一些高级配置,单击图中的“Advanced options”即可显示高级选项框,如图2-13所示。 图2-13 安装数据库的高级设置 主要的可配置项如下。 数据库服务器IP地址(Database host):如果是本机,只需填写localhost;如果是网络中的其他计算机,需填写其IP地址或服务器名称。 数据库服务器端口(Database port):默认的MySQL服务端口号为3306,可更改为其他端口,依MySQL服务器配置而定。 数据表前缀(Table prefix):为了便于标识(例如同一数据库中会有几个Drupal的数据库),可设置数据表的前缀。如设 drupal_为数据表前缀,则表名为drupal_access, drupal_user等。一般情况下不需要设置。 当全部输入后,单击“保存设置”(Save Configuration)按钮即可。如配置成功,Drupal会在新建的数据库中创建数据表,并将数据库配置等信息写入settings.php文件中。 如未配置成功,Drupal会提示失败原因。引起失败的常见问题主要是: MySQL数据库服务没有启动; MySQL数据库服务端口不是默认端口:查看MySQL的配置文件; 数据库用户名或密码错误:如忘记,可使用phpMyAdmin进行修改; 没有创建供Drupal使用的数据库。 2.4.4 设置站点初始信息 安装向导的最后一步是设置站点的基础信息,如站点名称、站点邮箱等。最重要的是创建“超级管理员”账户。超级员账户拥有对Drupal进行控制的最高权限,后面的小节会有专门的介绍。此外,还可设置Drupal站点的默认时区、是否开启简洁URL以及更新提示等功能。下面将逐一进行介绍。 1.站点信息 如图2-14所示为站点信息填写页面。站名名称将会显示在每个页面的上方,并链接到网站首页。站点邮箱主要用于在发送给注册用户欢迎信时,显示为“邮件发送者”。另外,也用于接受站点的管理信息,如最新升级信息等。 图2-14 填写站点信息 在安装全部完成后,也可以通过后台管理页面中的“站点信息(Site information)”进行管理。 2.创建超级管理员 如图2-15所示即为创建管理员用户的表单框。在此处注册的用户即为Drupal的超级管理员账号,它也是网站的第一个注册账号。 图2-15 创建超级管理员账户 Drupal 6中增加了密码提示的功能。在创建或修改密码时,页面上会即时提示所输密码的长度和是否匹配的检查信息,如图2-16所示。 图2-16 密码检查提示 “超级管理员”是Drupal站点中具有所有控制权限的用户。此账户可以进行设置网站各种属性,开启模块、设置主题等操作,并可以增删用户、创建及分配角色,可见其权力之大。因此,务必牢记第一个注册的用户名和密码,如果忘记将会造成一定的麻烦。如果不小心忘记,除了通过网站内置的“取回密码”功能(即通过电子邮件重新获取)外,还有更直接的解决方法——直接在MySQL数据库中修改用户表中超级管理员的密码。下面是详细步骤。 首先要拥有Drupal所用数据库的用户账户。使用phpMyAdmin登录后,查看Drupal的数据库,找到user表,此有为Drupal储存所有用户的数据表,如图2-17所示。 图2-17 用户信息表 单击浏览按钮可查看所有注册的用户信息。uid为1的用户即为超级管理员的信息,单击铅笔图标即可进入编辑状态。如图2-18和图2-19所示。 图2-18 修改管理员信息 密码是用MD5码的形式存放于数据库中的。因此需要使用MySQL的md5函数将输入的密码进行转换。首先在“pass”字段值的文本框中填入要更改的新密码,然后在“函数”列选择“MD5”函数并单击下方的“执行”按钮,就完成了密码的更改。 图2-19 修改管理员密码 3.站点相关设置 站点相关设置主要包括默认时区、是否使用简洁URL模式以及是否开启“自动检查Drupal版本更新”功能。如图2-20所示的服务器设置页面。网站默认时区主要影响网页上时间的显示。不同的时区显示时间的方式是不同的。对于中国内地,可选择“+0800”,即东八区。 简洁URL(Clean URL)是Drupal为了优化搜索引擎对网站页面的收录而提供的一个功能。Drupal中的所有页面均通过index.php进行分发(dispatch),每个Drupal页面的URL中,都会带有“?q=”字符串。比如“http://example.com/index.php?q=admin”就是指向后台管理页面。但这样既不美观,又对搜索引擎不友好。Drupal利用Apache的rewrite模块,通过在.htaccess文件中设置URL重写规则,来去掉URL中的“?q=”。比如,Drupal网站的一个页面的访问地址是:“http://example.com/?q=node/2”,那么在开启Clean URL后,网址就变成了“http://example.com/node/2”。 自动检查程序版本是Drupal 6中的新功能,可以定期检查drupal.org上发布的最新Drupal版本,并提示网站管理员有新更新。此功能是由计划任务来实现的。除了Drupal核心程序有版本更新外,所安装的模式如有更新的话,也会作出提示。但是,在某些系统中,开启此功能可能会引起后台管理页面载入缓慢的问题。每次进入后台管理页面时,系统会通过HTTP访问drupal.org以获取Drupal的最新版本信息。如果网络不连通或由于防火墙设置等原因,有可能造成无法连接drupal.org,这时系统会等待一段时间。读者应根据实际情况决定是否开启此功能。 图2-20 服务器设置 以上这些设置可以在安装完成后通过后台管理进行重新设定,而不是“只有一次”。此处的“简洁URL模块”,会根据Drupal所安装的服务器的Apache配置情况显示不同的提示信息。如图2-20所示的绿色背景框中提示的是“可以使用此功能”,而在有些服务器上则显示红色背景框并提示“无法开启”。这时需要修改Apache的相关配置。这一点本书将在后面的章节进行介绍。 2.4.5 完成安装 在执行完上面的安装步骤后,Drupal会保存相关设置显示安装完成页面,如图2-21所示。 图2-21 安装完成页面 在图2-21所示的页面中出现了醒目的红色背景提示框。里面的主要内容是告知管理员邮件功能未配置成功。Drupal默认会向刚创建的超级管理员账户所填写的E-mail地址发送一封确认信,如果所在服务器没有配置SMTP邮件发送服务,则会出现此邮件发送错误。Drupal发送邮件功能使用的是PHP的mail相关的函数。这个函数在Windows和UNIX下的实现和配置方法是不同的。具体技术细节请参考PHP手册。下面列出针对Windows服务器的解决办法。 第一步:获得发送邮件服务器的SMTP地址。 第二步:打开php.ini文件,将“;extension=php_smtp.dll”的注释去掉(即去掉第一个分号)。 第三步:找到下面的配置代码: [mail function] ; For Win32 only. SMTP = localhost smtp_port = 25 将SMTP修改为可以使用的SMTP服务器的地址,将smtp_port修改为所对应的端口即可。 这种设置方式比较适合于SMTP服务器针对Drupal服务器进行了配置的情况,即无须密码验证即可以直接发送邮件。对于需要密码或SSL验证的SMTP服务器,建议使用SMTP Authentication Support模块(http://drupal.org/project/smtp)。 单击如图2-21所示页面中的“your new site”链接,即进入Drupal的欢迎页面,如图2-22所示。 图2-22 Drupal欢迎页面 能看到此页面即证明安装已成功。页面左侧为用户登录框,右侧为默认的内容文本,里面包含了一些欢迎文字和快速链接。当在Drupal中发布内容后,首页将默认显示内容列表,而不再显示此欢迎文字。 2.5 Hello Drupal! Drupal安装完成后,想必读者已想“牛刀小试”。本节将从搭建一个简单的个人博客入手,让读者初步体验Drupal网站。 2.5.1 创建个人博客 Drupal的一个最常用的用途就是创建个人门户。目前很多站点是用Drupal搭建的,比如Drupal创始人——Dries Buytaert的网站。本节将讲解如何使用Drupal来构建一个具有简单功能的个人博客网站。网站的主要功能是发布博客文章,并可以为文章增加标签。同时使用一个新的主题替换Drupal的默认主题。 2.5.2 开启功能模块 博客(Blog)模块属于Drupal的核心可选模块,在Drupal安装包中自带。它提供了博客的基本功能。由于Drupal是多用户系统,因此每个注册用户均可以有自己的博客(也可以通过权限设定只有某角色的用户可以创建博客文章)。此外,“评论(Comment)”模块允许博客文章的访问者对当前文章发表评论,每个评论的回复也会以某种样式显示出来。“分类(Taxonomy)”模块用于对网站内容进行分类。Drupal引用词汇表的概念,每个词汇表中有相应的分类项。由于博客是一种内容类型,而标签可理解为是针对此内容类型的一种分类。Drupal的分类功能非常灵活,即可以让用户选择预先设定好的分类,也可以通过文本框自由输入。标签(Tags)功能可由分类模块完成。 上面提到了三个模块:Blog、Comment和Taxonomy。这三个模块在刚安装完成后的Drupal中是默认关闭的,需要手动开启。下面讲解如何进入后台管理页面开启这三个模块。 Drupal网站页面的左侧是个人导航,包含了当前用户可访问的页面链接,如图2-23所示。在图2-23中圆圈标记的“Administer”即为进入后台管理界面的链接。 进入管理界面后,单击“站点创建(Site building)”部分的“Modules(模块)”,进入模块管理列表页面,如图2-24所示。图2-25表示了要开启的模块。将前面的单元框勾选,并单击保存按钮,即完成模块的开启。 Drupal以模块组的形式显示模块。如图2-25所示的模块属于“Core(Optional)”模块组,即属于核心可选模块。Drupal模块按开发者的不同一般分为两种:Drupal自带的模块和第三方模块。Drupal自带模块即Drupal安装包中包含的模块,由Drupal核心开发团队开发。这种模块也包括两种子分类:核心模块和核心可选模块。核心模块是默认且必须开启的,它提供了Drupal核心的内容管理等功能,如节点模块、系统模块等;可选模块即像博客模块、评论模块等功能模块,不是默认开启的,可根据网站需求有选择地开启。 图2-23 进入管理界面链接 图2-24 模块管理链接 图2-25 开启模块 2.5.3 发布第一篇博客 Drupal使用统一的内容创建页面,使发布内容更为快捷高效。每个内容的发布页面也大致相同。在页面左侧的个人导航区块中有“Create content”链接,单击即进入创建内容页面,如图2-26所示。此页面列出了系统当前内容类型的名称和描述,单击内容类型名称即进入此内容类型的发布页面。在本例中,单击“Blog entry”进入博客文章发布页面。 Drupal的每个内容单元为节点,此页面即为创建节点页面。每个节点包含一些基础属性,如标题和内容等。如图2-27所示是超级管理员身份访问时的页面,如果是普通具有发布节点权限的用户不一定看到全部的属性。比如“Menu settings”是针对菜单进行的设置;“Revision information”是为节点创建新版本。页面提供了保存按钮(Save)和预览(Preview)按钮,在正式保存前可以进行预览以查看是否达到预期效果。 图2-26 创建内容页面 图2-27 创建博客文章 在本例中,先创建一篇简单的博客文章。在 “Title(标题)”和“Body(内容)”文本框中填入适当内容并保存,成功后即显示节点查看页面,如图2-28所示。这时回到网站首页即可看到新发布的文章的预览。 图2-28 成功发布第一篇博客 用同样的方法,再发布一至两篇博客文章,可以更明显的看到博客列表效果,如图2-29所示。 图2-29 首页的新发布内容列表 至此,一个个人博客已见雏形。不过,目前使用的还是Drupal的默认主题,因此不能给人一种专业博客的感觉。Dupal内置了除Garland外的另外几种主题,而且drupal.org网站上也提供了很多主题供下载,可以选择一个比较“像”博客的主题安装在网站中。 2.5.4 选择合适的主题 Drupal的主题模板机制允许管理员切换不同的网站主题及安装新主题。每个主题包含了注册文件、样式表文件、模板文件以及相关的图片,有时还包含JavaScript脚本。在drupal.org的网站上可以浏览大量的主题。图2-30中标记的链接即为主题浏览和下载链接。 本节先简单介绍一下如何更换现有的Drupal主题,如何下载和安装第三方Drupal主题将在后面详细介绍。Drupal的默认主题即为Drupal.org网站的主题,名字为Garland,这个单词的意思是“胜利的花环”,Drupal志在夺取开源PHP CMS冠军宝座的野心可见一斑。此外,Drupal的安装包还提供了几个可选主题。 通过页面左侧导航链接的Adminsiter进入后台管理界面,在站点创建(Site Building)部分单击“Themes(主题)”链接,进入Drupal主题管理界面,如图2-31所示。 图2-30 Drupal.org上的主题下载链接 主题管理页面上列出了可开启的所有Drupal主题,如图2-32所示。 图2-31 主题管理链接 图2-32 主题列表 列表左侧可查看主题的预览图。从预览图中可以看出,Chameleon主题比较简洁,没有太多余的页面样式和元素,比较适合强调加载速度的博客使用。右侧的“Enabled”列中,打勾的为已开启的,“Default”列中选中的是当前网站的默认主题。在Drupal中,每个注册用户可以选择自己的主题。 在“Enabled”列中,将Chameleon主题勾选,再将其后的“Default”列选中。最后单击“保存”按钮,这样Drupal网站的主题就将更换为Chameleon主题。首页样式如图2-33所示。 图2-33 使用新主题的网站首页 当然,这样的界面还远不能满足博客的要求。对于懂得HTML和CSS的读者,可以在学习自定义主题模板后,在这个主题的基础上进行修改和完善,使其具有更为鲜明的特色和美感。 2.6 小结 本章详细介绍了如何选择Drupal版本,以及下载和安装Drupal的详细步骤。Drupal提供了一个友好的安装向导使管理员能够轻松地在服务器上安装Drupal。预先修改好Drupal的配置文件settings.php可以省略在安装向导中数据库配置部分的操作。有时通过页面配置数据库时会出现无法连接的错误,直接修改settings.php则会避免这样的问题。此外,还介绍了一些如“更改超级管理员”密码这样的小技巧,也是实际开发中非常实用的技能。 本章通过一个简单的“个人博客”网站示例,向读者展示了如何使用Drupal构建一个具有发布博客文章及评论功能的个人博客网站。这个示例只展现了“冰山一角”,更丰富的功能和使用方法将在后面的章节陆续展开。
|
-- 作者:admin -- 发布时间:2/15/2011 11:11:00 AM -- 第3章 Drupal的基本概念 Drupal的基本概念主要包括节点、内容类型、模块、主题和分类等。只有对这些概念有了足够的了解,方能灵活的构建网站。本章将对这些基本概念作详细的介绍,具体的应用将在后面章节进行讲解。 3.1 节点(Node) 节点是一段内容(a piece of content),它是网站内容的基本组成单元。网站上的主要内容是由一个个节点组成的。通过观察网站上发布的各种内容(如新闻、博客、论坛帖子等),可发现它们都有如下的共同特性: 需要一个唯一的ID用于标识这个节点; 都有标题和内容; 需要记录发布时间、修改时间和发布者。 采用面向对象的分析问题的方法,可以将这些内容进行抽象出一个“节点类”,节点类具有最基本的属性,而其他类(如博客文章、论坛主题等)均继承自此类,增加一些专属的属性。因此,可以认为Drupal网站中的每个节点是节点类的一个实例。 如图3-1所示为一个网站中的节点类的实例。可以看到,每个节点类除了标题、内容、发布者等共同的属性外还有专属属性。使用这样的图对网站内容进行分析是一种很好的方法。 图3-1 节点类结构图 由于节点的共性,Drupal为节点的创建和编辑准备了相同的页面,这样使管理员可以在一个页面中完成全部节点的创建。 对于不同的节点类的子类,Drupal采用“内容类型”来实现这样的功能。内容类型将在下面的章节介绍。 3.2 内容类型(Content Type) 内容类型(Content type)就是在抽象层次上对节点的一个归类,如上面提到的新闻和博客文章,是两种不同的内容类型。不同内容类型的文章用于不同的使用场景。每一个节点都必须属于某个内容类型,一个内容类型下可以有多个节点。 Drupal默认提供两种内容类型:页面(Page)和故事(Story)。这两者没有实质的区别,只是在显示时,故事节点会显示节点的发布信息,如时间和发布者等;但页面不会显示。页面经常用于存储如“公司介绍”等介绍性文字信息;而故事通常用于存储如“站点新闻”、“公告”等内容,且在浏览时可显示发布者和发布时间等信息。 Drupal的后台管理有“内容类型”管理功能,管理员可以创建新的内容类型并设置每个内容类型具有哪些属性。除标题、内容属性外,还提供了诸如是否支持评论、是否开启版本控制等功能选项。同时,在内容类型的设置中可以对节点的三个基本属性——是否发布在首页、是否置顶和是否发布——有选择地开启。 但是,像3.1节如图3-1所示描述的“新闻节点类”,除了基本属性外,还需要“文中插图”这个额外的属性。这时需要使用第三方模块Content Construction Kit(简称为CCK)提供的为节点增加字段的功能。此模块将在后面的章节详细介绍。 3.3 模块(Module) 如果说节点是Drupal的内容单元,那么模块(Module)就是Drupal的功能单元。每个模块为Drupal提供一个或多个完整的功能。上文提到的“节点”管理,还有评论管理、用户管理等功能,都是由模块提供的。 一个模块是由一组脚本文件组成的,它用于扩展Drupal的功能。核心模块和核心可选模块是包含在Drupal安装包里的,不需要单独下载。在后台管理的“模块管理(Module)”列表中可以看到当前系统可开启的全部模块及状态。第三方模块是由除Drupal开发团队外的开发者开发的,基本上都发布在http://drupal.org/project/modules中,提供了从内容发布、显示、用户管理、分类等各种各样的模块,而且都是免费和开源的。 除了直接使用核心模块和第三方模块,也可以使用Drupal API开发自定义模块。Drupal模块的核心机制是钩子函数,通过调用它可以实现对Drupal工作流程的修改。比如创建一个新的系统路径来展示自定义页面,就需要菜单的钩子函数(hook_menu)来完成。 Drupal使用了“反向控制(inversion control即IoC)”的设计模式,使系统可以在“需要时”加载相关的模块。IoC也被称为是“依赖注入(Dependency Injection)。它的原理简单地讲就是:每个模块只实现自己的功能,何时被调用是由系统决定的。比如一个订单系统,当订单被支付时需要执行一系列操作。每一个操作是由一个独立的模块来实现的。如果按照传统的系统架构,应该预先定义一段代码使用相关的类或函数完成订单支付后处理的工作流。但在模块化的架构中,可以安装很多用于对订单支付后进行处理的模块。这些模块通过配置文件让系统得知其存在,并且通过某种接口方式让系统知道应调用哪些方法。那么,系统在获知订单被支付后,就可以触发这些方法的执行。在Drupal中,模块的注册是由.info文件来实现的,而何时调用哪种方法是通过钩子函数来“通知”系统的。 图3-2展示了系统中的模块层次结构。最底层的是Drupal框架,它提供了模块机制;上层是Drupal的五个核心模块:节点模块(Node)、用户模块(User)、系统配置模块(System)、内容过滤器模块(Filter)和区块模块(Block)。再上层是第三方模块,是由开发者使用Drupal框架和五大核心模块提供的API开发的。 图3-2 Drupal的模块架构图 3.4 主题(Theme) 网站的外观称为主题(theme),主要包括网站的页面布局、颜色、图片、字体、按钮等元素。国外通常用“look and feel”这个词组来说明什么是主题,它准确地表达了主题的含义,即“所看及所感”。网站不仅要美观,还要让用户使用起来“有感觉”,即使用起来非常方便,能够简洁流畅地完成网站业务流程。 Drupal主题是由一组模板文件,样式表(CSS)以及图像所组成的,也有时会包含一些JavaScript代码。Drupal默认提供了几种主题,它们的文件在程序根目录下的themes文件夹中。Drupal提供的主题包括:Garland(默认主题)、Chameleon、Marvin等,如图3-3所示。 这些主题可以在后台管理的主题管理页面中开启或关闭。此外,还可以从www.drupal.org上下载第三方提供的Drupal主题。图3-4展示了一些第三方的Drupal主题。 主题的定制是Drupal建站中最重要的一个环节。尽管Drupal的主题有很多种,但要选择一款适合自己网站的主题也绝非一件易事。大部分的解决方案是先选择一个和网站风格比较相近的主题模板,然后在此基础上进行修改。Drupal提供了“主题引擎(Theme Engine)”,制定了一整套主题开发的规范和函数,供开发者灵活创建自定义主题。如何开发自己的Drupal主题将在“开发篇”中详细介绍。 图3-3 Drupal的默认主题 图3-4 丰富多彩的Drupal主题 很多开发者对主题和模板的概念较为模糊。从范围上看,模板是主题的一部分,通常是指一类文件,这类文件规定了页面的大体框架,网站在显示某个内容时,会将内容放置在模板中适当的地方。主题是指网站整体的风格和样式,除了一系列模板文件外,还有各种图像和样式表文件等。下面这个公式很好地诠释了主题的组成:主题 = 模板文件 + 样式表 + 图像 + JavaScript脚本文件。从Drupal网站上下载的Drupal的主题,就是这些文件的集合压缩包。 3.5 区块(Block) 区块是用于在页面上展示一部分数据的方法。它是一个小块区域,里面可以放置文字、图片、文章列表或其他内容。这些区块通常被放置在页面的“非主要部分”。非主要部分主要是指顶部、左侧、右侧和底部。另外,区块还可以被设置只在某个页面或某类页面显示。 区块在页面中可以放置的地方称为“区域”。区域是由“主题”规定的,Durpal的主题引擎默认将页面分为五个区域,如图3-5所示。每个主题可以自定义页面模板,增加或减少区域。页面模板文件page.tpl.php中包含有区域变量(如$left、$right等),通过修改HTML代码或CSS样式可以实现对定位的修改。一个区域中可以拥有0个或多个区块,但每个区块只能被放置在一个区域中,不能同时出现在两个以上的区域。 图3-5 Drupal的默认区域 管理员可以在后台的区块管理中设置区块的所属区域,以及每个区块的属性(如标题、可访问的角色以及在哪些页面中显示等)。网站用户也可以选择其是否开启和关闭,只要系统赋予了这样的权限。 区块有两种创建方式:一种是在后台管理像创建节点那样创建区块,填入静态的HTML代码;另一种方式是通过自定义模块,使用区块的钩子函数来创建区块,这些将在后面的“开发篇”中介绍。 3.6 菜单(Menu) 菜单是网站中常见的页面元素,它由一系列超链接组成,并以某种方式进行排列(如权重),起网站导航的作用。菜单的内容和摆放位置是否合理,也是决定网站受欢迎程度的重要因素之一。Drupal提供了完整的菜单管理功能,可创建很多菜单组,每个菜单组中包含多个菜单项,而菜单项还可以有子项,是一个树型结构。 Drupal有三个预置的菜单组:主要链接(Primary Links)、二级链接(Secondary Links)和个人导航(Navigation),分别显示在页面上方和左侧区域中。 Drupal中还有一个“菜单系统(Menu System)”,它和本节所说的“菜单”不是同一个概念。菜单系统是框架级别的功能,用于对请求的URL进行解析,并调用相应的函数进行处理,返回页面上要显示的内容。在开发Drupal模块时,如果需要生成自定义的页面,要使用菜单系统提供的用于菜单注册的钩子函数——hook_menu来告知Drupal注册哪个路径以及相应的处理函数。 3.7 用户(User) 用户是网站的受众,也是网站内容的贡献者。现在大多数的网站都支持用户注册。Drupal适合构建从个人网站到社区驱动的网站(community-driven),是一个多用户系统,支持用户注册和身份验证,并具有维护个人信息的功能。 管理员可以通过后台管理的“用户管理”功能查看当前网站的全部用户,并可批量更新用户状态、按排用户角色或删除用户。Drupal采用 “基于角色的访问控制”的权限管理机制。角色可以理解为一个用户组,组内的成员具有相同的对网站的访问和操作权限。每个用户可以同时具有一个或多个角色。在后台可以管理 “用户角色(User Roles)”和“权限(Permission)”。管理员在后台管理的角色管理中可根据网站需求增加角色,如如普通管理员、新闻发布者、站点维护者等。但Drupal中有两个预先定义的角色不能被更改: 匿名用户(Anonymous User):未注册用户或已注册但未同过审核的用户; 认证用户(Authenticated User):已注册并同过审核的用户。 每个权限项,如创建节点(Create Story Node)等权限,是由模块提供的,使用钩子函数hook_perm在模块中定义。权限不能在后台管理中手动创建。 3.8 评论(Comment) 评论也是一种内容,但不作为Drupal中的一种内容类型而存在。每个评论包含标题和内容,但标题是选填的。在Drupal中,每个评论必须对应于一个节点,不能单独存在。如果开启了评论模块,并且在内容类型中设置此内容类型支持评论,那么用户即可发表对节点的评论。 另外,评论模块是论坛模块的依赖模块。论坛的每个主题帖都是一个节点,而“回帖”其实就是对主题帖的一种“评论”。因此Drupal利用“评论”功能来实现论坛的功能。这样做的好处是无须重复开发功能,充分利用现有资源。 3.9 分类(Taxonomy) 分类是将网站中的节点,按其内容属性进行的分类。比如上文提到的例子中,管理员可以发布各种新闻。而依据所报道内容的不同,又可以将新闻分为国际新闻和国内新闻等。这两个就属于“分类”。 在Drupal中,对内容的分类是由分类模块(Taxonomy Module)实现的。 词汇表(Vacabulory)和项(Term)是Drupal分类的核心概念。网站中会有很多内容类型,比如新闻和博客文章。那么,对于新闻和博客文章的分类就可能是不同的。比如新闻分为国内新闻和国际新闻,而博客文章可能分为文学、艺术或个人心得等。这时需要分别为新闻和博客文章各创建一个分类组,每个组里包含只针对某种内容类型的分类。这个分类组就称为词汇表。每个词汇表中包含多个分类项。如图3-6和图3-7所示为新闻的词汇表和博客文章的词汇表。 图3-6 新闻词汇表 图3-7 博客文章词汇表 分类模块也是论坛模块的依赖模块。Drupal创建了一个新的词汇表,名称为“Forum”,然后使用词汇项来表示各个论坛。由于分类项间可以有继承关系,因此使用分类就能准确地表达论坛的层次结构。图3-8是一个社区论坛结构。 图3-8 社区论坛结构 3.10 小结 本章对Drupal中的一些基本概念和重要术语作了介绍。这些对Drupal的使用、管理和开发都有非常重要的意义。Drupal是内容管理系统,基本概念都和内容管理领域紧紧相关,但若使用Drupal作为应用程序框架,则需要将其他业务领域的数据映射到Drupal中来。如何高效地使用Drupal的功能实现需求,是Drupal开发者最需要掌握的技能。相信随着各个功能的使用,读者会对些概念有更具体的了解,也就可以更灵活地运用Drupal了。 |
-- 作者:admin -- 发布时间:2/15/2011 11:11:00 AM -- 第4章 管理Drupal 网站从功能结构上讲分为前台和后台。前台主要负责各种内容的展示以及用户数据的采集,后台主要负责对网站信息、内容和用户以及各项配置进行管理。Drupal几乎将全部的管理功能链接统一在一个页面中“/admin”,并可按功能分类显示或按模块显示以便于查找。本章将按照功能的分类进行详细的讲解。 4.1 介绍 Drupal的后台管理总界面如图4-1所示,通过左侧个人导航中的“Administer”链接或通过其URL——“/admin”即可进入。此页面包含了所有当前系统中可以使用的管理功能,按照管理任务的类别进行了分区,主要分为五个部分:内容管理、用户管理、站点创建、站点配置以及统计报告。类似于Windows中的控制面板。 图4-1 Drupal后台管理页面布局 默认情况下,每个管理链接的下方都有描述,因此当管理内容很多时会占用大量的篇幅。通过单击页面上方的“Hide descriptions”链接,可以将这些描述隐藏,以使管理页面看起来更为简洁。如图4-2所示即为省略描述的页面。 由图4-2可见,除按管理任务分区显示管理链接外,还可以按每个功能的提供模块进行分类。单击“Administer”标题旁的“By module”即可。每当安装新模块时,如果不知道其是否增加了管理链接,则可以通过“按模块”显示管理链接的方法,找到其提供的功能。 图4-2 按模块查看管理链接 下面是一些快速访问几个管理分区的链接,在URL中通过下列链接可直接进入只属于某分类的管理任务列表。 admin/content:内容管理任务列表页面,可以管理节点、评论和分类等。 admin/build:站点创建管理任务列表页面,可以管理区块、菜单、主题和模块等。 admin/user:用户管理任务列表页面,可以管理网站账户、访问规则、角色和权限等。 admin/settings:站点配置管理任务列表页面,可以管理网站性能设置、文件系统设置和站点状态等。 admin/reports:站点报告管理任务列表页面,可以查看访问记录和站点日志等。 4.2 内容管理 Drupal的内容单元是节点,因此节点相关的管理任务是Drupal网站内容管理的中心。内容管理区的链接如图4-3所示。本节主要针对Drupal默认开启的内容管理功能进行讲解。主要包含节点管理、评论管理、节点内容输入设置、内容分类以及RSS发布等。 图4-3 后台管理的内容管理部分 4.2.1 创建节点 Drupal有统一的创建节点的页面,不同内容类的节点发布页面是一致的。创建节点的链接并没有出现在后台管理页面中,因为Drupal是社区型的内容管理系统,内容的创建除了管理员,还可以是普通用户。 在页面左侧区域的个人导航区块中,单击“Create content”可进入发布节点页面,如图4-4所示。也可以通过node/add的URL直接访问(如http://localhost/node/add)。此页面列出了iv 网站中现有的内容类型,如图4-5所示,单击某个类型即进入节点创建页面。Drupal默认提供两个内容类型:页面(Page)和故事(Story)。单击“Story”链接进入创建Story节点页面,如图4-6所示。 图4-4 选择要创建的节点类型 图4-5 可使用的内容类型 如图4-6所示的页面展示了发布节点时需要设置的内容。但并不是所有用户均可以看到这些属性。图4-6所示的页面是超级管理员可看到的样子。如果创建节点的用户是其他角色,可能看到部分设置。下面对节点的每个属性进行说明。 1.标题(Title) 标题内容是必填字段,最大长度为255个字符。如果发布的是英文文章,那么使用Pathauto模块可以根据标题自动生成针对搜索引擎优化的URL别名。 2.内容(Body) 内容是可选字段,长度没有限制,在数据表中以longtext数据类型存储。右侧有“在光标处分隔摘要”按钮(Split summar at cursor),用于手动设置节点摘要。如果不手动指定,则Drupal会生成固定长度的内容摘要,此长度可以在后台管理的“发布设置(Post settings)”中设置。如图4-7所示为设置摘要后的Body编辑框。 当进入手动设置摘要状态时,原按钮变为“合并摘要(Join Summary”),单击此将取消分隔的摘要,与原内容进行合并。同时增加了一个选项——Show summary in full view,如果取消选择将在显示节点全部内容时不显示摘要。 图4-6 创建Story页面 图4-7 手动设置摘要文字 3.菜单设置(Menu settings) 单击“Menu settings”前的小三角号可以展开具体信息,如图4-8所示。在Drupal中,每个节点都可以直接存为某个菜单组里的菜单项。在设置中,Menu link title为链接名称;Parent item是指定显示在哪个菜单集合中。Drupal中默认的有Primary links(主要链接)以及Secondary links(次要链接)等,根据主题模板的不同显示在不同的位置。如果将Menu link title置为空,则不增加菜单项。 图4-8下方的Weight代表权重,表示菜单项所在位置。权重值大的菜单项将排在后面。权重是Drupal中最常用的属性,用于对一组项目自定义排序。 4.输入格式(Input format) 为了安全方面的考虑,对于用户的输入要进行一些处理,比如过滤HTML标签,或对一些URL链接进行屏蔽等。Drupal中提供三种默认的输入格式,这三种输入格式表示了对用户输入内容的处理方案,分别为:过滤HTML、完全HTML和PHP代码。默认情况下,普通用户只有使用过滤HTML输入格式的权限。 如图4-9所示为节点的输入格式配置,每个类型的下方给出了此输入格式下可以使用的HTML标签的说明。可以通过后台管理的输入格式设置增加或减少允许的HTML标签。 图4-8 节点菜单信息 如果要显示复杂的HTML内容,如列表、超链接等,需要使用完全HTML(Full HTML),此时Drupal将保留输入的全部HTML标签。哪些用户角色可以使用何种输入格式也是可以通过后台进行设置的。 图4-9 输入格式的选择 5.版本信息(Revision information) Drupal可以为每次节点内容的修改保存一个副本,如图4-10所示。管理员可以选择以哪个版本为最终发布版。当为某个节点创建了一个新的revision后,节点显示页面将会出现一个新的链接——Revisions,如图4-11所示。进入后可看到此节点的所有历史版本,并标有修改时间和操作日志。其中,显示为“current version”的版本为当前用户看到的版本。每个版本后面的“revert”链接用于将此版本设置为当前版本。“delete”可以删除之。 6.评论设置(Comment Settings) Drupal有两个地方可以设置节点是否开启评论:一个是在当前的节点发布页面;另一个是在内容类型设置页面。在此页面设置只针对本节点,而内容类型的设置是针对此内容类型下所有节点的默认设置。 图4-10 版本管理 Drupal为每个节点提供三种评论选项: Disabled:关闭评论; Read only:用户只能查看评论列表,不能发表评论; Read/Write:用户可以查看,也可以发表评论。 只有具有“管理评论(Administer comments)”权限的用户才可以设置内容。如图4-12所示为节点评论设置。 图4-11 节点版本历史 图4-12 设置节点评论 7.编著者设置(Authoring information) 当保存一个节点时,会将编辑节点的用户存为此节点的编著者,但也可以手动更改。如图4-13所示为节点的编著者设置部分,在此部分中可以更改节点的编著者和默认的发布时间。当改为其他发布者后,更改后的用户具有了修改此节点内容的权限。 8.发布选项(Publishing options) 如图4-14所示为节点发布选项。在Drupal中,每个节点都有三个状态: Published:是否已发布状态。可以将点设置为“未发布”状态,则Drupal的默认节点列表中不显示此节点; Promoted to front page:在首页显示。Drupal在首页没有指定的情况下,默认显示所有最新发布的节点列表。如果不选择此项,那么在首页将不显示此节点; Sticky at top of lists:在列表中置顶。同样是针对默认首页列表的情况有效。 图4-13 编著者设置 图4-14 节点发布选项 这三种状态在对节点进行程序级操作时,可以灵活地用其作为不同状态的标记。比如:一个论坛的中的帖子,如将其设置为“Sitkcy at top lists”,就等于将其“置顶”。 4.2.2 管理节点 单击“Content”链接,进入管理节点页面,如图4-15所示。如图4-16所示为节点管理页面。这个页面可以执行节点按条件搜索和批量更新操作。每个节点项目后有“编辑(edit)”链接,单击进入节点编辑页面。 图4-15 节点管理链接 图4-16 节点管理页面 1.按条件搜索 Drupal提供对节点进行过滤方式有如下两种: 状态(Status ):此处状态即为在发布节点时,最下方的“发布选项”中的三个设置,包括是否发布、在首页显示和置顶; 节点类型(Type):可以只搜索某个节点类型,比如页面或故事等。 在使用时,一次只能设置一个条件,比如首先设置要选择的节点类型是页面,单击“Filter”按钮,之后可以接着增加限制条件,如“状态”等。选择后单击“Refine”进行二次查询,单击“Undo”可以撤消上一步操作,单击“Reset”开始新查询。如图4-17所示为已设置一个条件的状态。 需要注意的是:设置的查询条件是存放在数据库中的,因此即使退出也不会消失。要想重置查询,必须使用“Reset”。 2.批量更新节点状态 使用批量更新功能可以对节点的状态进行批量更新,节点状态就是在发布节点时可以设置的三种状态。首先选中要处理的节点,然后选择操作并单击“Update”按钮即可,如图4-18所示。 图4-17 设置多个条件 图4-18 批量更新节点状态 3.批量删除 在更新选项中,有一个“Delete”选项,可对节点进行删除。Drupal中的删除节点是物理删除,即从数据表中直接删除,无“回收站”等机制。因此在删除前要进行确认。 此节点管理页面的不足是不能按照关键字对节点的标题或内容进行搜索,但可以通过Drupal自带的搜索模块间接实现此功能。搜索模块同时提供搜索框和搜索页面(/search),输入关键字后Drupal将进行全字段的模糊搜索。如果有查找到所需的节点,则进入节点页面后,可以通过“Edit”链接进入节点编辑状态或直接删除。 4.2.3 管理评论 单击“Comment”(如图4-19所示)进入评论管理页面,如图4-20所示。此页面和节点管理页面相似。不过没有搜索评论的功能,只有批量状态更新和删除。此外,上方还有一个“待审核评论”管理链接,可以进入管理未审核通过评论的页面。 评论状态只有两种:发布和待审核。在这个页面中,可以将已发布的评论重新置入待审核队列(unpublish the selected comments)。操作方法与节点管理的批量更新相同:先在下方选择要更新的条目,在下拉框中选择操作并单击“Update”按钮。 图4-20 评论管理页面 默认情况下,注册用户可以发布评论,并且不需要审核即可直接显示在页面中。如果要设置注册用户需要审核才能发布评论,则需要进入权限管理,将注册用户角色的“无须审核即可发布评论(post comments without approval)”权限去除,如图4-21所示。 图4-21 权限管理中的“无须审核即可发布评论”的权限 待审核队列(Approval Queue)管理页面与已发布评论(Published comments)管理功能相似,不再进行介绍。 4.2.4 管理节点类型 单击“Content type”(如图4-22所示)进入节点类型管理页面,如图4-23所示。 图4-22 节点类型管理链接 图4-23 节点类型列表 1.列表管理 节点类型列表列出所有网站中可创建的节点类型。Name列为“人类可读的名称”,表示内容类型的名称;Type列为内容类型在系统中的唯一标识,也称为“机器可读名称”。每项后面有编辑和删除链接。 在删除某个节点类型后,属于此节点类型的节点会丢失类型信息,只能浏览标题和内容,无法进行编辑。在编辑时会出现如图4-24所示的错误。因此不要轻易删除已有很多节点的内容类型。 2.添加节点类型 单击“Add content type”(如图4-25所示)进入添加节点类型页面,如图4-26所示。节点类型的名称(Name)和标识(Type)是必填项,其中Name是“人类可读的”名称,可使用空格、大小字母等;而type是“机器可读”的名称,只能使用英文和下画线,它是用于唯一标识这个类型的。type的一个用途是:可通过URL快速创建某一个节点类型的节点,如node/add/story,即进入创建Story节点的页面。 图4-24 删除节点类型后,无法编辑此类型的节点 图4-25 添加节点类型链接 当未使用CCK模块时,不同的节点类型之间并无根本区别,只是下面要介绍的几个属性会有所不同,主要包括:提交表单设置(Submission form settings)、工作流设置(Workflow settings)和评论设置(Comment settings)。 如图4-27所示为提交表单设置。提交表单是指节点的创建和编辑的页面表单。标题(Title)和内容(Body)的名称是可以更改的。默认的情况下全是“Title”和“Body”,管理员可以根据需求修改为“新闻标题”、“新闻内容”等。如果是针对产品的管理,则“Title”可以更改为“产品名称”,而“Body”可以更改为“产品描述”。 图4-26 添加节点类型 同时还可以设置“内容最小字数(Minimum number of words)”。不过需要注意的是:最小数字的限定只对英文和法文等拉丁语系的内容有效,对于中文是无效的。因为这个最小“字数”是指英文单词的数目。Drupal计算词数的原理很简单:它认为每个单词之间是由“空格”分开的。由于中文的字之间没有空格,所以它就无法计算了。如图4-28所示为Durpal无法正确识别中文字符长度时的提示信息。 图4-27 提交表单设置 工作流设置部分(如图4-29所示)主要是针对发布节点时的默认属性进行设置,如“是否发布”、“推荐到首页”和“置顶”等。此外还有一个“创建新版本(Create new revision)”选项。这些是默认设置,具有“Administer nodes”权限的用户可以单独对某个节点进行更改。 图4-28 Drupal无法识别中文的字数 图4-29 工作流设置 节点评论设置内容较多,下面分别进行介绍。如图4-30所示为默认是否开启节点评论的选项。依次为“关闭”、“只能浏览评论”和“可以发表和浏览评论”。 如图4-31所示为评论列表的显示方式设置。显示方式根据显示回复评论的不同样式分为两种: 平列表(Flat list):无缩进显示所有评论。针对某一评论的评论并不进行缩进显示; 线性列表(Threaded list):对某一评论的评论,根据回复的评论进行层级缩进显示。 图4-30 评论开关选项 图4-31 评论列表的显示方式设置 图4-32和图4-33分别为平列表显示和线性列表显示的评论样式。可以看出,对于平列表显示,所有的评论均按照发布时间顺序进行排列依次显示;而以线性列表显示的评论中,针对某评论进行的回复会紧接在所对应的评论后面,这样可以更为清晰地知道评论的回复内容。 如图4-34所示为默认的评论排列顺序设置,分别是“最新发布的排在最前面(newest first)”和“最早发布的排在最前面(oldest first)”。如图4-35所示为默认每页显示的评论数量设置,当评论超过此数量时将会自动分页。 如图4-36所示为是否开启“评论显示方式控制器(Comment control)”及显示位置的设置。评论显示方式控制器可以让浏览者自定义评论列表方式、日期排序、每页显示多少条评论,如图4-37所示。单击保存当前设置按钮后,这个自定义的浏览方式便保存起来,凡是相同节点类型的节点评论,均会以此方式显示。显示位置可以在评论列表的上方(above)、下方(below)或同时显示。设置为“Do not display”时,不显示此控制器。 图4-32 平列表显示评论 图4-33 线性列表显示评论 图4-34 评论排序设置 图4-35 默认每页显示评论数 图4-36 评论显示方式控件 图4-37 自定义评论显示方式 如图4-38所示为关于匿名评论的设置。此处可以设置是否需要匿名评论者留下联系方式。此选项只有当匿名用户具有发布评论权限时有效。如图4-39所示为评论相关权限配置,如果要使匿名用户可以查看和发布评论,需要将“access comments”和“post comments”两个权限赋予“Anonymous”角色。 图4-38 匿名评论相关设置 图4-39 为匿名用户赋予可发布评论权限 如图4-40所示为匿名用户在发表评论时可以留下的“联系信息”,主要包括:名称、E-mail和主页地址。下面是对如图4-38所示的几个选项的说明。 may not enter their contact information:不显示联系信息框。 may leave their contact information:显示联系信息框,但用户可选填,非强制。 must leave their contact information:显示联系信息框,且用户必须填写名称和电子邮件地址。 图4-40 匿名用户发布评论时的联系信息 如图4-41所示为评论标题的设置。如果设为开启“Enabled”,则每个评论都会有“标题(Subject)”项。此项可以直接填写,也可由Drupal自动生成——当不填入标题时,Drupal会截取评论内容的一部分作为标题。如果关闭(Disabled),则不需要输入标题,也不会显示。 如图4-42所示为评论预览设置。此设置是Drupal中一个较为多余的功能,如果设为“Required”,则每次发表评论时,必须先预览、再发布,有些麻烦,建议直接设为可选的(Optional)。 图4-41 评论标题设置 图4-42 评论预览 图4-43 评论表单位置 如图4-43所示为评论表单位置的设置。Drupal提供两种方式:将评论表单放在单独一页显示(Display on separate page)和直接显示在评论列表下方(Display below post or comments)。设为单独一页显示时,在每个节点内容下方,显示一个添加评论的链接,单击后进入新的一页,页面上没有历史评论列表,只有发布评论表单。当发布后返回节点页面。两种方式的效果分别如图4-44和图4-45所示。 图4-44 评论表单在单独页面显示 图4-45 评论表单直接在评论下方显示 4.2.5 发布设置 单击“Post settings”(如图4-46所示)进入发布设置页面,如图4-47所示。 图4-46 输入格式设置链接 图4-47 发布设置页面 本页面的“Rebuild permissions”是节点访问权限重置按钮。有些模块比如组模块(OG)会加入节点访问权限控制,这时Drupal需要控制用户、角色对单个节点的访问权限。有时会由于某种原因权限表没有建立正确(比如刚安装好OG模块时),就需要来此重建节点访问权限。 下方为三个关于节点发布的相关设置。 首页显示的内容条目数(Number of posts on main page):设置首页所显示的最大条目数量,超过这个数目则会显示页面导航条。 文章内容摘要的截取长度(Length of trimmed posts):当发布内容的时候,如果内容过长,Drupal是不会将其直接显示在文章列表上的。同时,当开启聚合(Aggregator)模块后,会有一个将网站内容发布成XML Feed的功能,在订阅列表中显示的文章内容就是被截取后的内容。在Drupal中用摘要(Teaser)来表示被截取后的内容,如果不手动设置摘要,则Drupal根据此设置的字数自动从Body中截取。 预览设置(Preview post):Drupal中,在创建节时会有两个可选操作,一个是直接保存(Save),另一个是预览(Preview)。默认情况下预览是可选操作(Optional)。如果要使用户在发布前必须预览,那么将此设置为必选操作(Required)。设为强制预览后,下方只有预览按钮而没有发布按钮,只有进行预览后,才会出现发布按钮。 关于摘要字数,建议越少越好,因为Drupal会将摘要与内容同时存入数据库。600个字符指的是拉丁字符,也就是一个单词算一个字符,不同的单词之间有空格。对于中文,由于没有空格间断,所以很长的一段文字会被认为是一个“字”,将占用大量的数据表空间。 4.2.6 RSS发布设置 单击“RSS publishing”链接(如图4-48所示)进入RSS发布设置页面,如图4-49所示。 图4-48 RSS发布链接 图4-49 RSS发布设置页面 Drupal中对RSS提供了原生支持。默认的首页节点列表的下方即有RSS订阅图标,如图4-50所示。 图4-50 RSS图标 类别节点列表页面也提供RSS订阅,比如用户可以只订阅节点类别为“国内新闻”的内容。本页可设置的内容如下。 每Feed显示的条目数:可设置从1到30的条目数量。 Feed内容:可设置为只标题(Title only)、标题+摘要(Titiles plus teaser)或完整内容(Full content)。如图4-51和图4-52所示为IE 8中查看只标题的RSS和标题+摘要的RSS。 图4-51 IE8中只标题的RSS 图4-52 IE8中标题+摘要的RSS 4.2.7 类别管理 单击“Taxonomy”(如图4-53所示)链接进入类别管理页面,如图4-54所示。此页列出了当前系统中的所有词汇表。单击“edit vocabulary”修改词汇表基本信息,比如设置哪种节点类型使用等。“list terms”用于显示此词汇表中的所有项;“add terms”可以批量添加词汇表中的条目(term)。 图4-53 内容管理 图4-54 词汇表列表管理 1.词汇表管理 单击图4-54上方的“Add vocabulary”链接进入添加词汇表页面,如图4-55所示。需要填写的是Vocabulary name属性,包括词汇表名称、描述和帮助文字。这三个属性均可以使用中文。还有一些其他设置,如图4-56所示。 “节点类型(Content type)”处设置使用此词汇表的一个或多个节点类型。在节点编辑页面,可以看到以下拉列表、多选框或自动完成功能的文本框形式出现的类别设置。 下面举例说明。首先创建两个词汇表:新闻类别和专题类别。之后设置Story节点类型可以使用这两个词汇表。那么在创建新的Story时,可以看到如图4-57所示的两个词汇表的类别选择框。 图4-55 新建词汇表 图4-56 词汇表相关设置 下面是如图4-56所示的词汇表的其他设置(Settings部分)的说明。 Tags(可自定义标记):当选择此项时,系统可以接受用户的自定义词汇分类,而不是只能从预定义的词汇列表中进行选择。在用户创建内容时,将不提供词汇项的列表,而只有一个文本框。当用户输入字符时,系统会自动搜索是否有相匹配的字段,并在下拉列表中显示出来。如图4-58所示。 当输入“北”时,下面会列出“北京”这个本书预先填入的字段。图中红圈中的圆会在输入字符时,变成动态的,以显示正在进行数据库查询。 图4-57 创建Story时可选的词汇表类别 图4-58 填写分类 Multiple select(多重选择):选择此选项后,可以为每个节点指定一个或多个分类项,就像博客中的Tags一样。如果开启了“Tags”功能,那么此项是默认选定的。 Required(必填):如果选择此选项,则在编辑节点时,与这个词汇表相关联的每个节点类型(Content type)都必须指定一个分类项(Item)。 2.类别项管理(Term) 单击词汇表条目后面的“add terms”,即可进入新建类别项页面,如图4-59所示。图4-60显示了除指定类别项名称外的其他高级设置: Parent(父项):在这个词汇表中的父词汇。如果这个项处于顶级,那么请选择 <root>; Related temrs:与此类别项相关的类别项。在查看某个类别项时,可以看到与其相关的类别项,这样可以获得如“相似新闻”之类的条目; Synonyms(同义词):此处可以填入拼写,其他同义的名词或缩写等; Weight(权值):权值越低越排在列表的前面。 图4-59 填写词汇项 图4-60 词汇项目高级设置 4.3 用户管理 Drupal是多用户网站系统,提供用户注册功能。同时它是一个基于角色的权限控制系统,管理员可以创建多个角色并分配不同的权限。用户管理区如图4-61所示,包括访问规则、权限、角色、用户设置和用户管理等链接。 4.3.1 用户管理 单击“Users”链接(如图4-62所示)进入用户管理页面,如图4-63所示。此页面按照用户的注册时间顺序列出系统中的全部用户。新注册的用户将出现在列表的最前面。除了用户名、状态和角色外,还可以看到某用户在网站注册了多久,以及最后一次访问发生的时间。此页面和节点管理页面有相似之处。提供了查找用户和批量更新用户状态的功能。 图4-61 用户管理区 图4-62 用户管理链接 图4-63 用户管理页面 1.查找用户 此页面允许管理员按照权限(permission)和状态(status)进行查找。可选的权限是来自系统中已定义的权限项。图4-64为权限的下拉框列表,一次只能选择一个权限。 图4-64 选择过滤权限 2.更新用户状态及删除 一个Drupal用户有两种状态:正常(Active)和被阻塞(Blocked),被阻塞的用户将无法登录。通通过Update Options可以以选中用户进行状态更新。也可以对用户进行删除。如果将一个用户删除,那么他(她)发布的节点和评论还会继续存在,只不过成为匿名用户所发。图4-65为批量更新用户状态的操作页面。 图4-65 批量更新用户状态和删除 3.Advanced User模块 Drupal只提供根据状态查找用户,对于网站用户数量较多的情况显得力不从心,管理页需要复杂的查询条件才能准确定位要操作的用户。第三方模块——Advanced User(http://drupal.org/project/advuser),使管理员可以根据用户ID、用户名、创建时间、电子邮件等查找用户。安装成功后会在用户管理页面的上方增加一个“Advanced”链接,如图4-66所示。在权限(Permissions)过滤条件旁边的下拉框内列出了一些“表达式”,如“EQ”表示的是“等于”,“NE”表示的是“不等于”。这两个比较常用。 如果知道用户的电邮、用户ID或用户名,都可以迅速查找用户。 图4-66 Advanced User支持更多查询条件 4.3.2 访问规则 访问规则是指通过对注册的用户名、E-mail或IP地址的限制,拒绝某些用户的注册或登录的机制。例如:不能使用包含“bad”单词的用户名进行注册;IP地址为192.168.0.*的用户禁止访问网站等。单击“Access rules”链接(如图4-67所示)进入访问规则列表页面。此页列出了当前系统中的规则,同时上方有“Add rule”添加规则和“Check rules”检查规则两个功能链接,如图4-68所示。 图4-67 访问规则链接 图4-68 访问列表页面 1.添加规则(Add rule) 在如图4-68所示的访问列表页面,单击标题下方的“Add rule”打开添加规则选项卡,如图4-69所示。 图4-69 添加访问规则 此页面主要设置三个部分:访问类型(Access type)、规则类型(Rule type)和掩码(Mask)。访问类型决定此规则是“允许(Allow)”或“拒绝(Deny)”。例如要创建一个规则,凡是符合此规则的用户,均可以访问站点,那么这个规则就是“允许”型的。 规则类型是按照规则所针对的内容而划分的。Drupal中支持对三种类别进行访问控制:用户名(Username)、E-mail和主机(Host)。 掩码(Mask)即为规则实体,像正则表达式一样,是一个描述一组字符串的模板。将目标字符串与此字符串进行匹配,如果相同,则返回值为真。在Drupal中,使用“%”来表明零个或多个字符,使用“_”表明一个字符,这两个字符称为“替代符”。下面举一个具体的例子。例如要拒绝所有用drupal.com为结尾的E-mail注册的用户。可以创建这样一个规则,如表4-1所示。 表4-1 一个访问规则 访问类型 规则类型 规则掩码 Deny E-mail %@drupal.com 当应用了这个规则后,所有以“@drupal.com”为邮箱进行注册的用户均会被禁止。 2.检查规则(Check rules) 检查规则用于测试创建的规则是否能正确地被执行。通过标题上方的“Check rules”链接进入检查规则页面,如图4-70所示。 此页面可以填入测试用的用户名、E-mail或主机名对现有规则进行检查。以上一小节(1.添加规则)的例子为例,测试一下所建的邮件拒绝规则是否有效。在第一个框中,输入“badman@drupal.com”,单击“Check e-mail”按钮查看检查结果,提示此邮件是不被允许的(如图4-71所示),证明了刚才创建的邮件拒绝规则生效。 图4-70 检查规则页面 图4-71 检查访问规则 4.3.3 角色 Drupal采用基于角色的权限控制,不同的角色拥有不同的权限项,而属于同一角色的用户拥有相同的权限。角色是Drupal中权限分配的单位。在后台管理的用户管理区单击“Roles”链接进入角色管理页面,如图4-72所示。 图4-72 角色管理页面 Drupal默认了两个角色:匿名用户(anonymous user)和认证用户(authenticated user),即注册用户。这两个角色是被锁定的(locked),不可以删除。当一个浏览者未登录访问Drupal页面时,它的身份为“匿名用户”。如果是在登录状态下访问,则为“认证用户”。 在列表的最后一行添入要增加的角色名称,并单击“添加角色(Add role)”按钮,即可增加新角色。新加入的角色是没有任何权限的,因此必须赋予其一定的权限方可使用。 每个角色行的“edit_permission”链接即可进入角色权限的详细配置页面,如图4-73所示。此页面只显示当前角色的权限,与权限管理总页面不同,权限管理页面会列出全部的角色。 图4-73 注册用户角色的权限 4.3.4 用户相关设置 用户相关设置主要包括用户注册设置、欢迎邮件设置和开启签名和头像支持的功能。单击“User settings”即可进入用户设置页面。下面分别介绍三个部分的设置。 1.用户注册设置 如图4-74所示为用户注册相关设置区。Public registrations设置网站如何创建用户,共有三种方式,依次为: 只能由管理员创建; 任何人均可以注册,无须审核即成为认证用户; 任何人均可以注册,但需要管理员审核才能成为正式用户。 图4-74 用户注册设置 下方的单选框用于设置当用户注册时是否需要通过邮件进行确认。如果选择,那么当用户在网站上注册完成后,会获得系统发送的一封验证邮件。邮件中包含有一个链接,用户在单击后即“激活”网站账户。 用户注册指南(User registration guidelines)可以写一些欢迎语或指导用户注册的一些信息。它将显示在注册表单的最上方。 2.系统发送E-mail模板 在进行一些操作时(如注册),Drupal会向用户发送邮件以告知用户系统正在进行处理的状态。此部分可以设置下列四种邮件的主题和内容,如图4-75所示。 下面是对发送模板的介绍: Welcome, new user created by administrator:管理员创建新用户时,向用户邮箱发送的邮件模板; Wecome, no approval required:用户自己注册成功后,系统发送的邮件模板; 图4-75 系统邮件模板 Welcome, awaiting administrator approval:系统需要审核新注册用户,当用户注册完成后,系统发送的邮件模板,通知用户等待审核; Password recovery email:“忘记密码”时,系统向用户邮箱发送的邮件模板; Account activation email:账户激活时系统发送的邮件模板; Account blocked email:当管理员将某个用户设置为“被封”时,系统发送的通知邮件模板; Account deleted email:当管理员删除某个用户时,系统发送的通知邮件模板。 下面以用户成功注册后,系统发送的欢迎邮件模板为例,如图4-76所示。邮件的主题(subject)和内容(body)均可以手动进行更改,内容部分显示的是默认的邮件模板。在标题和内容中可以使用一些变量来替代系统提供的一些信息,比如注册的用户名和密码等。Drupal提供了一些预选定义的变量,可以写在邮件板中,Drupal会在发送邮件时将其转换为相应的值,这些变量被称为“placehoder”。 图4-76 欢迎邮件的模板 比如,邮件的标题——“Account details for !username at !site”中使用了!username来表示要发送至的用户名,!site表示站点名称。这样,在网站www.example.com上注册的用户名为Jack的用户,将接收到的标题为“Account details for Jack at www.example.com”的邮件。 表4-2给出了可用的全部变量的说明。 表4-2 邮件模板中可用变量的说明 变 量 含 义 !username 用户名 !site 站点名 !password 密码 !uri 站点网址(带http://或https://) !url_brief 站点网址简版(不带http://或https://) !mailto 用户邮箱 !date 有年、月、日的当前日期 !login_uri 登录网址(如http://www.example.com/user) !edit_uri 修改用户账户网址 (如http://www.example.com/user/1/edit) !login_url 重置密码时系统提供的网址 如果是中文网站,那么需要手动将这些邮件模板更改为中文。 3.开启个人签名 签名档多用于论坛中,是每个用户的一个“落款”。在Drupal中,显示签名档的位置是评论内容的下方,如图4-77所示。图4-78为个人签名设置部分。当开启此功能后,会在个人的账户信息修改页面(如user/1/edit)出现“签名档”填写框,如图4-79所示。 图4-77 评论中的发布者签名档 图4-78 个人签名支持 图4-79 账户信息修改中增加的个人签名 4.用户上传头像设置 如图4-80所示为当开启用户上传头像功能后展开的配置信息。可以指定头像文件的保存路径、默认头像图标、上传图片的最大长宽以及最大KB数等。在设置默认头像时,需要填入图像的相对路径。比如使有Garland的Drupal Logo作为默认头像,可填入“/themes/garland/logo.png”,那么在用户信息页面(user/1)可看到没有上传个人头像的用户将使用默认头像,如图4-81所示。 在上传“指导”(guidelines)文本框内填入一些帮助性的文字指导用户如何上传个人头像。这些文字将会显示在注册页面的上传个人头像部分。 图4-80 用户上传头像设置 图4-81 默认用户头像 4.4 站点创建 区块、菜单、模块、主题,这些是站点的基本组成部分,因此站点创建部分的管理主要针对这些基本组成元素。如果使用了Views模块,则视图的管理链接也会出现在这个区域中。如图4-82所示为站点创建管理区。 图4-82 站点创建管理链接 4.4.1 区块管理 Drupal中的区块是一个内容单元,可以放置在页面中的不同区域(Region)。网站中的页面通常有统一的布局方式,称为网页布局(Layout),不同的主题有不同的布局。Drupal的默认主题——Garland有头部(Header)、底部(Footer)、左侧(Left)、内容区(Content)、右侧(Right)几个区域,如图4-83所示。其他的主题可能会有不同的区域划分。在区块管理页面可以将区块放置在这些区域中。一个区块只能放置在某一个区域中,不能同时出现在多个区域。 图4-83 Garland页面布局 1.区块列表管理 单击“Blocks”链接(如图4-84所示)进入区块列表管理页面,如图4-85所示。 图4-84 区块管理链接 图4-85 区块列表 列表按当前主题区域进行了分块,如Left sidebar、Right sidebar等。此外,还有一个“Disabled”部分,放置没有按排区块。第二列的Region下拉框中列出了当前可调整至的区域,选中后此项会直接移动到目标区域中。需要注意的是:当更改一个区块的区域后,尽管区块会显示在列表的最上方,但只有通过手动调整它的位置才会确定,否则在保存时会排到最下方。 操作(Operations)列有配置(configure)链接,可进入每个区块的单独配置页面;如果是通过区块管理中的“添加区块(Add block)”添加的区块,则会在区块列表的操作列增加一个“删除(Delete)”链接,如图4-86所示。有一部分区块是由模块生成的,这样的模块不能通过此处进行删除,只有关闭模块时区块才会随之消失。 图4-86 可删除的区块 在Drupal 6中,每个区域的区块显示顺序可以通过拖动来配置。每个区域中区块的显示顺序和当前区块列表中的顺序一致。如要改变此顺序,可以拖动每个区块前的“锚”状图标。更改后,需要单击“保存(Save)”才能存储新的顺序。 2.区块配置 单击每个区块后面的配置(configure)链接,进入区块设置页面,如图4-87所示。每个区块主要有四部分设置: 图4-87 区块设置 区块特定设置(Block specific settings):一般情况下,每个区块都可以自定义标题。此外,有一些区块会增加一些其他设置。比如显示最新注册用户的区块(Who's new)还会增加显示用户数量(Number of users to display)的设置; 用户可见性设置(User specific visibility settings):可以设定用户能否自己决定区块是否显示。开启后,用户可以进入“My account”页面,选择要显示或关闭系统提供的区块; 角色可见性设置(Role specific visibility settings):可以设定哪些角色可以看到此模块; 页面可见性设置(Page specific visibility settings):可以设定区块在哪些页面上显示。使用方法将在下面介绍。 管理员可以对区块的标题进行更改。如将区块标题的值设为“<none>”时,将不显示标题,如图4-88所示。也可将区块标题设为一个新的值,如将“最近评论(Recent Comments)”块的标题设为“My Comments(我的评论)”,那么区块就会如图4-89所示进行显示。如果将区块标题值清空,将显示默认标题。默认标题是生成此区块的模块指定的,比如图4-90所示的最近评论区块,它的默认标题是“Recent comments”。 图4-88 标题填写为<none> 图4-89 标题自定义为 图4-90 区块标题设置为 My Comments 空时的显示 3.区块可见性设置 区块的可见性设置分为三种:用户可见性、角色可见性以及页面可见性。用户可见性(Custom visibility)的设置,主要有三个选项,依次为: 用户不能自己决定是否可以显示此区块; 默认显示此区块,但用户可以隐藏它; 默认不显示此区块,但用户可以显示它。 Drupal默认为第一项。如选择第二项或第三项,则可以让用户通过“我的账户(My Account)”设置各区块的显示状态。这两项不同之处在于区块是否默认显示。比如将最近评论(Recent comment)设为“默认显示,但用户可隐藏”,则在 “我的账户”中会看到可以自定义此区块的可见性,如图4-91所示。 角色可见性(Role specific)部分列出当前系统中所具有的角色,管理员可以设定哪些角色可以查看此区块。如果没有选择任何角色,则区块对所有角色均可见。 页面可见性(Page specific visibility)是较为常用的配置,可以设定哪些页面显示当前区块,也可以设定哪些页面不显示,如图4-92所示。 图4-91 用可自定义区块可见性 图4-92 页面可见性的设置 此处主要分为三个选项,下面依次列出并进行说明。 第一个选项为:除了下面在文本框中输入的页面外均显示(Show on every page except the listed pages)。下方的文本输入框可输入一些页面的标识。这里的输入的内容有两种格式:“node/[节点ID]”或内容页面URL别名(URL Alias)。URL别名是Drupal的“URL Path”模块提供的功能,它可以使用自定义的名称来代替“node/[node id]”这样的默认URL。后面的章节会介绍如何使用这个模块。此处假定要使这个新创建的内容只在节点ID为4、5的页面上显示这个区块,那么可以在文本框内输入“node/4”和“node/5”,每个为单独行,如图4-93所示。成功保存后只有在访问node/4和node/5两个页面的时候,才能看到“最新注册(Who’s new)”的区块,而其他的页面是不能看到的。 图4-93 设置显示此区块的页面列表 Drupal提供了一个通配符(Wildchar)―“*”可以表示一组节点。例如输入node/*,就代表所有的节点;如果输入blog/*,就代表用户发布的个人博客文章的所有页面。还有一个特殊的节点——<front>,代表首页。 第二个选项为:只在下面输入的页面中显示(Show on only the listed page)。使用方法和第一选项一样,需要在下面的文本框中设定在哪些页面上显示。 第三种显示条件为:当文本框内的PHP的表达式返回值为真时显示区块。此处允许写入一段返回布尔值的PHP脚本,Drupal在显示此区块前会执行这段PHP代码。如果返回真则显示,如果返回否则隐藏。下面举例说明。 变量i为通过PHP函数time()生成的一个时间戳整数,每当浏览者访问此页时,如果i为单数时则显示“最新注册的用户”;而当i为偶数的时候则不显示。所需输入的代码如下。 <?php $i = time(); //获得当前时间与UNIX元年相差的秒数——一个整数 if ($i % 2 == 0) //判断i的奇偶性 { return true; } else { return false; } ?> 有一点需要注意,即使输入的PHP脚本有误,Drupal也不会提示,所以以在输入前要自己先测试好。同时也不要使用复杂的PHP脚本。刷新页面可以看到“最新用户”区块有时显示、有时不显示,这取决于time()的值是否为奇偶。 4.添加区块 区块的添加有两种方法:一种是通过Drupal提供的区块创建功能;另一种是通过自定义模块生成区块。此处是第一种方式,区块的内容以静态的HTML为主,不能使用表单等元素。同时也不建议在区块中使用JavaScript。通过这种方式创建的区块可以删除。如果要在区块中显示表单(如登录框)或其他复杂的内容,需要使用Drupal模块来实现。 在区块列表中单击“Add block”链接进入区块添加页面,如图4-94所示。区块的描述(Block description)用于标识区块,将在区块列表中显示。下方的可见性配置可以对区块的显示加以限制。 图4-94 添加区块 很多模块提供的区块,在开启后会出现在列表的“Disabled”区。比如开启论坛(Forum)模块后,会有“论坛最新帖(New forum topics)”等区块出现在“Disabled”列表中。因此建议每次开启新模块后,进入区块区表中检查是否有新的区块可用。 4.4.2 菜单导航管理 菜单(Menu)是Drupal中用于导航的链接,它分布在每个页面上,便于用户快速地链接到需要的页面中。同一类别的菜单可以组成“菜单组”,比如Drupal内置的主要链接(Primary links)和个人导航(Navigation)就是菜单组。每个菜单组中包含有多个菜单项,菜单项之间可以有父子关系,构成层次。图4-95展示了Drupal菜单的组织方式。 每当创建一个新菜单组就会自动生成一个新区块,管理员可以在区块配置页面将其放置在不同的区域中。 图4-95 Drupal的菜单层次 1.菜单组管理 单击“Menus”链接(如图4-96所示)进入菜单组列表,如图4-97所示。此页面列出了当前系统中的菜单组。 图4-96 菜单管理链接 图4-97 菜单组列表 单击“Add menu”进入增加菜单组页面,如图4-98所示。需要填写的是菜单组的英文名和显示名称。英文名称用于构建URL,因此只能是小写字母、数字和“-”。而且是全局唯一的。保存成功后可在菜单组中增加新项目。 图4-98 新增菜单组 2.菜单项列表 单击菜单组名称进入菜单项列表页面,如图4-99所示。可对每个菜单项进行“开启(Enabled)”、“默认展开(Expanded)”和“编辑(edit)”、“删除(delete)”等操作。未开启的菜单项不会在前端显示,且标记有“disabled”。开启默认展开后,如果菜单项下面有子菜单项,则会直接显示出来,不需要再展开。 另外,并不是每个菜单项都可以删除,只有在此页面创建的菜单项才可以删除。不能删除的菜单项是由模块提供的。 3.添加菜单项 在如图4-99,Navigation菜单项列表的上方,单击“Add item”链接,进入添加菜单项页面,如图4-100所示。本页主要分为以下几个部分:标题、描述、路径(Path)、父菜单项(Parent Item)和权重。需要说明的是路径。路径必须填入有效的内部URL或外部网址。内部URL是指Drupal网站的路径,如节点URL——node/1。若开启了URL Alias模块,可以填入URL别名。保存时,Drupal会检查地址有效性,无效的地址不能被保存。除内部URL外,也可以加http://链接至外部互联网地址。 图4-99 Navigation菜单项列表 图4-100 新建菜单项 由于可以通过拖动来对菜单项进行排序,所以权重基本不在此处设置了。 4.菜单组总设置 单击如图4-98所示的新增菜单组列表管理页面上方的“Settings”链接,进入菜单组总设置页面,如图4-101所示。此处可以设置下列三个内容。 图4-101 菜单组相关设置 节点URL默认菜单组(Default menu for content):在创建新节点时,可以直接将其添加至某菜单组(Menu settings部分的设置详见创建节点一节),新建的菜单项在哪个菜单组中创建,就是在此设置的。 主要导航的源(Source for the primary links):主要导航(Primary Links)和二级导航(Secondary Links)是Drupal中两个内置的菜单组名称。但实际上,这两个导航名称是一个“代号”,它可以指向不同的菜单组。系统默认会有一个“Primary links”和“Secondary Links”用于存储各自的菜单项。但如果不想使用这两个组,也可以另创建组,比如创建一个名为“网站导航”的菜单组,那么将“Primary Links”指向它,网站导航中的菜单项就会显示在页面上方了。 二级导航的源(Source for the secondary links):此处设置与主要导航的源一致。 4.4.3 模块管理 单击“Modules”链接(如图4-102所示)进入模块管理页面,如图4-103所示。此页面分组列出了当前系统中的全部模块。前面的选择框被选中的为当前系统中已开启的。如果系统中有很多模块时,在打开这个页面时会比较缓慢,因为Drupal需要在modules目录和sites/all/modules目录下搜索模块,并在系统中进行注册,这个过程需要一些时间。 图4-103 模块管理页面 在模块描述列,除介绍模块功能外,还会显示此模块与哪些模块有关系。下面以Views模块组为例,如图4-104所示。Views模块是Drupal重要的第三方模块之一,可以让管理员方便地创建各种视图列表。在其描述列,出现了“Required by”和“Depends on”标识。Required by表示此模块被哪些模块调用;Depneds on表示此模块依赖于哪些模块。每个模块名后面用“enabled”和“disabled”标识出了相关模块是否开启和关闭。当开启某个模块时,如果此模块有Depends on模块,那么必须保证Depends on的模块已安装在Drupal中(可以不开启)。如果没有,那么模块名称后会标识为红色字体的“missing”。 图4-104 Views模块组 1.模块安装 下载的Drupal模块放置在sites/all/modules中。推荐将下载的第三方模块放置在sites/all/contributes子目录中,而将自定义模块放置在sites/all/modules/custom中,以便于区分。当将下载的模块解压缩将放置在sites/all/modules目录后,刷新模块列表页,即会看到新的模块出现。前面提到加载模块列表需要时间是因为Drupal在搜索模块目录。模块目录的层次越深,所需时间就越长,因此建议控制模块目录的层级数。 2.开启和关闭模块 开启模块方法非常简单,在要开启的模块前选中(“Enabled”),然后单击列表下方的“Save configuration”按钮即可。如果此模块的开启会同时开启相关模块(Depends on),则Drupal会进行提示,一起开启。 关闭模块的方法是将模块取消选择并保存。关闭模块只是将功能关掉,模块创建的数据表结构和表数据是不会被删除的。有些查获块会自带卸载程序,用于清理数据库,可通过“Uninstall”链接进行卸载。一般的模块在关闭后可直接删模块文件。 3.卸载模块 在Drupal中,要卸载某个模块,首先要将此模块关闭,然后单击模块列表页面上方的“Uninstall”链接,进入卸载页面,如图4-105所示。请注意,不是所有模块都提供卸载功能,如果不提供则不会在此页面中显示。 此处提供的卸载操作主要是针对数据表的修改。执行完成后,进入sites/all/modules目录,手动删除模块目录即可。 4.4.4 主题管理 单击“Themes”链接(如图4-106所示)进入主题管理页面,如图4-107所示。这时Drupal会搜索根目录下的themes目录(系统主题)以及sites/all/themes目录,寻找可用的主题,并以列表的形式按首字母顺序展现出来。与模块一样,主题的目录层次也控制得越简单越好。 图4-105 模块卸载页面 图4-106 主题管理链接 图4-107中的主题列表列出了主题模板的预览图、主题名称、版本号、是否开启和是否设置为默认主题等信息。如果主题有自己的配置页面,则会在操作列(operations)会出现“配置(configure)”链接。 下面对主题相关的管理操作进行详细介绍。 主题下载主要的途径是drupal.org,在下载前确定主题版本与使用的Drupal版本是否相符。下载的主题需放置在sites/all/themes目录中,建议不要放在系统目录中。将主题包解压缩后,刷新主题列表目录,即可看到新的主题。 Drupal网站可以同时开启多个主题,每个用户可以在自己的账户信息页面选择使用的主题。开启主题时,将主题的“Enabled”列选中。如果要将其设置为默认主题,则将Default列选中,最后保存配置即可。 图4-107 主题管理页面 卸载主题时,必须先将主题关闭,再将目录删除。如果直接删除会出现页面错误。 Drupal与主题相关的配置分为两种:一种是全局配置,作用于全部主题;另一种是主题特定的配置,只适用于某特定的主题。如图4-108所示为主题的配置页面,通过在主题列表的标题右侧单击“Configure”进入。标题下方有两个子标签,一个是“Global settings”即为全局主题设置链接;另一个是“Garland”,是进入Garland主题配置的链接。如果系统中还有开启的其他主题,则依次在后面显示。 图4-108 统一主题设置 全局主题设置主要句括四个方面:页面元素的显示、节点修改日期的显示方式、站点Logo以及浏览器地址栏图标。 在每个Drupal页面上都有很多“页面元素”,如站点的Logo、站点宣传语、主要导航和次要导航等。在Drupal的全局主题设置中,可以有选择地开启这些元素。如图4-109所示即为元素列表。页面元素主要指如站点Logo、站点名称、主要导航等。表4-3详细列出了全部的页面元素和说明。 图4-109 页面元素显示设置 表4-3 页面元素 元素名称 解 释 Logo 站点Logo,默认为Drupal水滴图标 Site name 站点名称,可在后台管理的站点信息中设置 Site slogan 站点宣传语(口号) Mission statement 站点任务 User pictures in posts 在节点中显示发布者的头像 User pictures in comments 在评论中显示发布者的头像 Search box 开启搜索区块。如果没有开启搜索模块,则此项无法选择。但是,当开启搜索模块后,模块本身会提供一个单独的搜索框(区块),而且可以随意安排区域;而主题的搜索框位置是固定的。因此不建议使用主题的搜索框 Shortcut icon 站点小图标(浏览器地址栏前方的小图标) Primary links 主要导航 Secondary links 二级导航 节点发布信息是由发布时间(更新时间)和用户名组成的,通常显示在标题的下方,如图4-110所示。在Drupal的主题设置中,可以设置哪些节点类型显示此信息,如图4-111所示。 图4-110 节点发布信息 图4-111 节点发布信息显示设置 在Drupal中,可以设置统一的站点Logo,也可以为某个主题设置单独的Logo。如果已将新的Logo上传至网站目录中,则可在Path to custom logo中填入相对路径,如sites/themes/mytheme/logo.png,或添加以“http://”开头的图像URI。也可以直接上传新的Logo图像(Upload logo image),如图4-112所示。 图4-112 站点Logo图像设置 浏览器地址栏站点图标也会显示浏览器地址栏前方,以及具有标签浏览功能的浏览器的标签栏中。如图4-113所示为IE8中的小图标显示位置。在主题设置的Shortcut图标设置部分(如图4-114所示),可以指定自定义的图标地址或上传图标文件。 图4-113 IE8中小图标显示位置 图4-114 浏览器地址栏站点图标设置 但要注意的是,不同的浏览器对小图标的文件格式支持不同。比如Firefox支持.jpg格式的小图标,但IE8无法正常显示。IE8可以显示32×32的图标格式图像(.ico文件)。 如果未指定地址栏小图标,则Drupal使用misc目录下的favicon.ico文件作为地址栏图标。 4.5 站点配置 除了节点、用户、主题和模块相关的设置外,其他与站点有关的配置均可在站点配置(Site Configuration)部分找到。包括站点名称设置、文件系统设置、输入格式设置、性能设置等各种站点基础设置。此外,第三方模块的配置功能大部分也会出现在此处。如图4-115所示为站点配置管理区。 站点配置的相关管理功能也是由模块提供的。本章主要对Drupal默认开启的模块所提供的站点配置功能进行介绍。 4.5.1 动作(Actions) 动作(Action)是Drupal 6引入的一个新功能。一个动作表示Drupal中针对节点、评论或用户的一个系统操作,比如更改节点三大状态(发布、置顶、置于首页)、屏蔽一个用户等。这些动作可以被一些模块使用,在某个系统上下文环境中激活。比如Trigger模块,可以设置一些触发状态,以执行某个动作。 动作分为两种:简单动作和高级动作。简单动作如“将节点设置为未发布状态”、“屏蔽一个用户”等,是一个单纯的动作,不需要其他运行条件;高级动作是指执行时需要管理员设置一些参数的操作,比如“发送邮件至用户”的动作,需要首先设置邮件内容。 动作管理页面如图4-116所示。上方列出了当前系统中可用的动作,下方提供了创建高级动作的方式。有配置(configure)和删除(delete)链接的是管理员创建的动作,不能配置和删除的是系统内置的简单动作。 图4-115 站点配置管理区 图4-116 动作管理页面 创建高级动作时,首先在下拉框中选择,比如“向用户显示一条信息(Display a message to the user)”,单击创建按钮,进入如图4-117所示的页面。 图4-117 创建高级动作 由于同一种高级动作可以创建多个,所以要修改一下描述,以区分相同种类的不同动作。由于这个描述不会作为动作标识,即使与系统中已有的动作重复也是允许的。填入消息内容并保存,即完成了高级动作的创建,如图4-118所示。 Drupal提供的高级动作参见表4-4。 表4-4 Drupal提供的高级动作 动作名称 说 明 使用方法 Unpublish comment containing keywords 当用户发布的评论中含有指定的关键字时,阻止其发布 图4-119所示为设置此高级动作的页面。在关键字(Keywords)文本框中添加关键词,使用“,”分隔 Change the author of a post 将节点的创建者更改为某指定的创建者 Drupal使用下拉框显示当前系统中的全部用户。可以将节点更改为这些用户中的一个。不过如果当系统用户量很大时,这种下拉列表显然无法操作 Display a message to the user 向用户显示一条消息 在消息内容中,可以使用一些“替代符”,比如%site_name(站点名称)、%username(用户名)、%node_url(节点URL)、%node_type(节点类型)、%title(节咪标题)、%teaser(节点摘要)以及%body(节点内容)等。但这些替代符只有在特定的上下文环境中才能有效。比如设置此动作在节点保存后触发,那么它就可以获取到节点的相关信息,为%node_type、%title等替代符赋值 Send email 发送电子邮件 可指定邮件的接收者、邮件标题和邮件内容。邮件接收到地址栏中可以使用%author替代节点作者的E-mail地址。同显示消息一样,邮件内容可以使用相关的替代符 Redirect to URL 转向某URL地址 在URL中填入节点URL如node/1234,或直接写入http://地址 图4-118 创建高级动作完成 4.5.2 管理专用主题(Administration theme) 随着网站开发技术的飞速发展,网站的界面和效果也越来越炫。但在网速条件不是很好且需要大量数据传输时,过多的效果会造成网站访问速度的下降,并且后台管理通常要求界面简洁、使用方便、加载迅速。但由于Drupal的前后台均为一套程序,因此如果使用同一个主题,有可能会造成后台访问不流畅等问题。Drupal专门提供了管理专用主题的功能,可以为Drupal后台管理相关页面设置与前台展示页面不同的主题,以解决后台与前台共用一主题而导致访问慢等问题。 如图4-119所示为Drupal的管理专用主题设置页面。在这个页面中有一个当前全部主题的下拉列表,可以设置后台管理主题使用与前台不一样的主题。下拉列表中的第一个选项是“系统默认(System default)”,表示当前前台所使用的主题。 图4-119 选择管理界面风格 建议使用Garland作为后台管理主题,根据作者经验,在使用Garland主题时,网站页面加载速度最快。 4.5.3 简洁URL(Clean URLs) Drupal使用index.php来解析请求的URL,比如当访问节点node/1234时,完整的URL地址为:http://www.example.com/index.php?q=node/1234。但每个路径的前面都要加入“index.php?q=”,这样既不美观也不方便。还有更重要的原因是这样的路径对于搜索引擎是不友好的,因为其中无有意义的词组。Drupal提供了“简洁URL”的功能,专门用于美化URL,同时使网站的链接更容易被搜索引擎收录。 开启简洁URL功能后,可除掉URL中的“?q=”参数。例如:没开启此项功能前,进行用户登录的网址是:http://localhst/drupal-5.2/?q=node/1,而开启“简洁URL”后变为http://localhost/drupal-5.2/node/1。 Drupal通过Apache的Rewrite模块来实现这个功能。地址转向规则写在Drupal目录的.htaccess文件中,转向规则相关代码和解释如下。 # Various rewrite rules. <IfModule mod_rewrite.c> RewriteEngine on #开启转向规则 # 如果网站是在虚拟目录中运行,需要将下列语句解除注释: # RewriteBase / # Rewrite URLs of the form 'x' to the form 'index.php?q=x'. |
-- 作者:can2007aa -- 发布时间:3/4/2011 2:27:00 AM -- 好东西,,,希望能更快一点!!!! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
296.875ms |