分类是将网站中的节点,按其内容属性进行的分类。比如上文提到的例子中,管理员可以发布各种新闻。而依据所报道内容的不同,又可以将新闻分为国际新闻和国内新闻等。这两个就属于“分类”。
在Drupal中,对内容的分类是由分类模块(Taxonomy Module)实现的。
词汇表(Vacabulory)和项(Term)是Drupal分类的核心概念。网站中会有很多内容类型,比如新闻和博客文章。那么,对于新闻和博客文章的分类就可能是不同的。比如新闻分为国内新闻和国际新闻,而博客文章可能分为文学、艺术或个人心得等。这时需要分别为新闻和博客文章各创建一个分类组,每个组里包含只针对某种内容类型的分类。这个分类组就称为词汇表。每个词汇表中包含多个分类项。如图3-6和图3-7所示为新闻的词汇表和博客文章的词汇表。
图3-6 新闻词汇表
图3-7 博客文章词汇表
评论也是一种内容,但不作为Drupal中的一种内容类型而存在。每个评论包含标题和内容,但标题是选填的。在Drupal中,每个评论必须对应于一个节点,不能单独存在。如果开启了评论模块,并且在内容类型中设置此内容类型支持评论,那么用户即可发表对节点的评论。
另外,评论模块是论坛模块的依赖模块。论坛的每个主题帖都是一个节点,而“回帖”其实就是对主题帖的一种“评论”。因此Drupal利用“评论”功能来实现论坛的功能。这样做的好处是无须重复开发功能,充分利用现有资源。
用户是网站的受众,也是网站内容的贡献者。现在大多数的网站都支持用户注册。Drupal适合构建从个人网站到社区驱动的网站(community-driven),是一个多用户系统,支持用户注册和身份验证,并具有维护个人信息的功能。
管理员可以通过后台管理的“用户管理”功能查看当前网站的全部用户,并可批量更新用户状态、按排用户角色或删除用户。Drupal采用 “基于角色的访问控制”的权限管理机制。角色可以理解为一个用户组,组内的成员具有相同的对网站的访问和操作权限。每个用户可以同时具有一个或多个角色。在后台可以管理 “用户角色(User Roles)”和“权限(Permission)”。管理员在后台管理的角色管理中可根据网站需求增加角色,如如普通管理员、新闻发布者、站点维护者等。但Drupal中有两个预先定义的角色不能被更改:
- 匿名用户(Anonymous User):未注册用户或已注册但未同过审核的用户;
- 认证用户(Authenticated User):已注册并同过审核的用户。
每个权限项,如创建节点(Create Story Node)等权限,是由模块提供的,使用钩子函数hook_perm在模块中定义。权限不能在后台管理中手动创建。
- 阅读更多 关于 3.7 用户(User)
- 登录或注册以发表评论
菜单是网站中常见的页面元素,它由一系列超链接组成,并以某种方式进行排列(如权重),起网站导航的作用。菜单的内容和摆放位置是否合理,也是决定网站受欢迎程度的重要因素之一。Drupal提供了完整的菜单管理功能,可创建很多菜单组,每个菜单组中包含多个菜单项,而菜单项还可以有子项,是一个树型结构。
Drupal有三个预置的菜单组:主要链接(Primary Links)、二级链接(Secondary Links)和个人导航(Navigation),分别显示在页面上方和左侧区域中。
Drupal中还有一个“菜单系统(Menu System)”,它和本节所说的“菜单”不是同一个概念。菜单系统是框架级别的功能,用于对请求的URL进行解析,并调用相应的函数进行处理,返回页面上要显示的内容。在开发Drupal模块时,如果需要生成自定义的页面,要使用菜单系统提供的用于菜单注册的钩子函数——hook_menu来告知Drupal注册哪个路径以及相应的处理函数。
- 阅读更多 关于 3.6 菜单(Menu)
- 登录或注册以发表评论
区块是用于在页面上展示一部分数据的方法。它是一个小块区域,里面可以放置文字、图片、文章列表或其他内容。这些区块通常被放置在页面的“非主要部分”。非主要部分主要是指顶部、左侧、右侧和底部。另外,区块还可以被设置只在某个页面或某类页面显示。
区块在页面中可以放置的地方称为“区域”。区域是由“主题”规定的,Durpal的主题引擎默认将页面分为五个区域,如图3-5所示。每个主题可以自定义页面模板,增加或减少区域。页面模板文件page.tpl.php中包含有区域变量(如$left、$right等),通过修改HTML代码或CSS样式可以实现对定位的修改。一个区域中可以拥有0个或多个区块,但每个区块只能被放置在一个区域中,不能同时出现在两个以上的区域。
图3-5 Drupal的默认区域
管理员可以在后台的区块管理中设置区块的所属区域,以及每个区块的属性(如标题、可访问的角色以及在哪些页面中显示等)。网站用户也可以选择其是否开启和关闭,只要系统赋予了这样的权限。
网站的外观称为主题(theme),主要包括网站的页面布局、颜色、图片、字体、按钮等元素。国外通常用“look and feel”这个词组来说明什么是主题,它准确地表达了主题的含义,即“所看及所感”。网站不仅要美观,还要让用户使用起来“有感觉”,即使用起来非常方便,能够简洁流畅地完成网站业务流程。
Drupal主题是由一组模板文件,样式表(CSS)以及图像所组成的,也有时会包含一些JavaScript代码。Drupal默认提供了几种主题,它们的文件在程序根目录下的themes文件夹中。Drupal提供的主题包括:Garland(默认主题)、Chameleon、Marvin等,如图3-3所示。
这些主题可以在后台管理的主题管理页面中开启或关闭。此外,还可以从www.drupal.org上下载第三方提供的Drupal主题。图3-4展示了一些第三方的Drupal主题。
如果说节点是Drupal的内容单元,那么模块(Module)就是Drupal的功能单元。每个模块为Drupal提供一个或多个完整的功能。上文提到的“节点”管理,还有评论管理、用户管理等功能,都是由模块提供的。
一 个模块是由一组脚本文件组成的,它用于扩展Drupal的功能。核心模块和核心可选模块是包含在Drupal安装包里的,不需要单独下载。在后台管理的 “模块管理(Module)”列表中可以看到当前系统可开启的全部模块及状态。第三方模块是由除Drupal开发团队外的开发者开发的,基本上都发布在 http://drupal.org/project/modules中,提供了从内容发布、显示、用户管理、分类等各种各样的模块,而且都是免费和开源 的。
除了直接使用核心模块和第三方模块,也可以使用Drupal API开发自定义模块。Drupal模块的核心机制是钩子函数,通过调用它可以实现对Drupal工作流程的修改。比如创建一个新的系统路径来展示自定义 页面,就需要菜单的钩子函数(hook_menu)来完成。
内容类型(Content type)就是在抽象层次上对节点的一个归类,如上面提到的新闻和博客文章,是两种不同的内容类型。不同内容类型的文章用于不同的使用场景。每一个节点都必须属于某个内容类型,一个内容类型下可以有多个节点。
Drupal默认提供两种内容类型:页面(Page)和故事(Story)。这两者没有实质的区别,只是在显示时,故事节点会显示节点的发布信息,如时间和发布者等;但页面不会显示。页面经常用于存储如“公司介绍”等介绍性文字信息;而故事通常用于存储如“站点新闻”、“公告”等内容,且在浏览时可显示发布者和发布时间等信息。
Drupal的后台管理有“内容类型”管理功能,管理员可以创建新的内容类型并设置每个内容类型具有哪些属性。除标题、内容属性外,还提供了诸如是否支持评论、是否开启版本控制等功能选项。同时,在内容类型的设置中可以对节点的三个基本属性——是否发布在首页、是否置顶和是否发布——有选择地开启。
但是,像3.1节如图3-1所示描述的“新闻节点类”,除了基本属性外,还需要“文中插图”这个额外的属性。这时需要使用第三方模块Content Construction Kit(简称为CCK)提供的为节点增加字段的功能。此模块将在后面的章节详细介绍。
节点是一段内容(a piece of content),它是网站内容的基本组成单元。网站上的主要内容是由一个个节点组成的。通过观察网站上发布的各种内容(如新闻、博客、论坛帖子等),可发现它们都有如下的共同特性:
需要一个唯一的ID用于标识这个节点;
都有标题和内容;
需要记录发布时间、修改时间和发布者。
用面向对象的分析问题的方法,可以将这些内容进行抽象出一个“节点类”,节点类具有最基本的属性,而其他类(如博客文章、论坛主题等)均继承自此类,增加一些专属的属性。因此,可以认为Drupal网站中的每个节点是节点类的一个实例。
如图3-1所示为一个网站中的节点类的实例。可以看到,每个节点类除了标题、内容、发布者等共同的属性外还有专属属性。使用这样的图对网站内容进行分析是一种很好的方法。
图3-1 节点类结构图
由于节点的共性,Drupal为节点的创建和编辑准备了相同的页面,这样使管理员可以在一个页面中完成全部节点的创建。
- 阅读更多 关于 3.1 节点(Node)
- 登录或注册以发表评论
本章详细介绍了如何选择Drupal版本,以及下载和安装Drupal的详细步骤。Drupal提供了一个友好的安装向导使管理员能够轻松地在服务器上安装Drupal。预先修改好Drupal的配置文件settings.php可以省略在安装向导中数据库配置部分的操作。有时通过页面配置数据库时会出现无法连接的错误,直接修改settings.php则会避免这样的问题。此外,还介绍了一些如“更改超级管理员”密码这样的小技巧,也是实际开发中非常实用的技能。
本章通过一个简单的“个人博客”网站示例,向读者展示了如何使用Drupal构建一个具有发布博客文章及评论功能的个人博客网站。这个示例只展现了“冰山一角”,更丰富的功能和使用方法将在后面的章节陆续展开。
- 阅读更多 关于 2.6 小结
- 登录或注册以发表评论