标题：Drupal高手建站技术手册
图书信息
书名：Drupal高手建站技术手册  作者：方擎 等编著
ISBN 978-7-121-11813-5 
出版日期：2010年10月 tushu 
定价：49.80元（含DVD光盘1张） 
开本：16开 
页码：332页
章节：14章
宣传语
中国Drupal培训第一人“方医生”力作
国内第一本介绍Drupal建站的图书
字字珠玑，绝对干货，物超所值！
赠送价值300元的Drupal培训视频
内 容 简 介
本书全面、系统地介绍了当今最流行的开源内容管理系统Drupal的建站方法，不仅由浅入深地介绍了Drupal的基础知识、而且对重要的配置过程均配以截图进行详细的讲解；在此基础上，介绍了Drupal模块开发和主题定制方面的知识，为读者对Drupal进行二次开发提供了很有价值的参考；最后通过两个完整的案例使读者对Drupal建站全过程进行近距离接触，以增强读者使用Drupal进行实际开发的能力。在本书的配套光盘中列出了这两个案例的源代码，以及14小时的学习视频，将为读者学习Drupal建站起到很好的辅助作用。
序
Drupal诞生于2000年，是一个基于PHP语言编写的用于开发网站的开发型CMF（内容管理框架）。Drupal强大的定制开发能力，也使其成为众多有技术实力的网站建设公司优先选用的网站开发平台。
任何网站建设公司自己开发的系统，在技术上都无法达到Drupal的水平，这正是开源软件的优势所在：PHPChina作为PHP的中文官方网站，同时也是国内最大的开源社区；其中自然也有很多关于Drupal的技术讨论的话题，但是非常遗憾并没有关于Drupal的系统介绍和讲解。随着《Drupal高手建站技术手册》这本书的问世，弥补了国内在Drupal技术方面的一块空白，为广大PHP爱好者以及公司提供了强有力的技术支持后盾，同时也为Drupal在国内更好的推广起到了基石的作用。
由于Drupal具有便于搜索引擎收录的URL，提供了强大的个性化环境、提供了基于角色的权限系统、提供的站内搜索系统能对站内的所有内容进行索引和搜索、模板系统将内容和表现分离、提供内建的新闻聚合工具、强大的多语言支持体系等等优势，所以国外很多著名的政府机构（联合国，美国白宫）、商业公司（华纳兄弟，联邦快递）、高等学府（美国哈佛大学，美国美国麻省理工学院）、技术社区（Ubuntu、Fedora、Firefox）的网站都是使用Drupal搭建的。因此，我们也希望国内能够通过《Drupal高手建站技术手册》这本书让Drupal真正被国内的企业和PHP技术人员所认可，让其在开源领域绽放出更加绚丽的色彩！
PHPChina 总经理 李薇
前 言
Drupal是当今开源内容管理系统中的王者，连续几年获得优秀开源CMS 大奖的殊荣。它依靠优良的架构、多语言支持、Web 2.0的特质、丰富的第三方模块、简练的主题模板引擎和强大的Drupal API，获得了无数开发者的青睐。目前，国内外越来越多的网站在采用Drupal构建，很多著名的公司、组织和个人也使用Drupal作为其门户网站的框架。在经过了近十年的发展后，Drupal 6现已成为最流行也是最稳定的Drupal版本，这是全球近700名开发者在Drupal 5的基础上做了大量的改进、使其更加完善和强健的成果。
Drupal包含了内容管理、用户管理、角色和权限访问控制、模块管理、主题和模板管理等网站基础功能。掌握了Drupal，就等于掌握了一个强大建站工具；将帮助读者在未来的网站项目中，保证质量的同时有效地缩短开发周期，尽快实现网站原型。
作者是国内最早使用Drupal的开发者之一，参与和独立完成了很多国内外的Drupal项目，在本领域经验颇丰。作者结合实践中的项目经验和多年的培训经验完成此书，旨在为读者搭建一个通往Drupal世界的桥梁。本书依据Drupal的学习路径，由浅入深地介绍Drupal建站知识；对关键操作进行了详细的讲解，并配以截图和代码片段让读者更准确地掌握操作技能；最后通过两个项目案例的讲解，系统介绍了如何使用Drupal解决实际项目中的需求。相信读者在学习完本书后，必具备独立开发Drupal网站的能力。
本书特色
1．遵循Drupal学习路径
本书每一章节的排列顺序都按照学习Drupal的路径进行编排，从基础的背景知识到实际项目经验，构建了Drupal完整的学习路径。每结束一章的学习，意味着读者能根据前面所学的知识构建某个难度等级的Drupal网站。这样可最大程度地保证读者学习的成果。
2．内容全面、系统、深入
本书介绍了从Drupal的下载与安装到后台管理的各项功能，从第三方模块的使用到自定义模块的开发，几乎涵盖了Drupal建站的各种技能。很多重要的知识点，不只停留于表面操作流程的讲解，还对其功能实质和设计原理进行了讲解，旨在使读者不仅掌握工具的使用，还能体会其中蕴涵的思想。
3．适合不同层次的读者阅读
不管是从未开发过网站的初学者，还是精通PHP的高级开发工程师，相信都可从本书中有所收获。本书在讲解时，充分考虑了不同层次读者的需要，即对关键的知识点进行了详细的讲解，又避免过于在基础的知识点上停留。 
4．完整的项目案例讲解
本书详细介绍了大学教务处新闻系统和在线订餐系统的案例（在本书的配套光盘中列出了这两个案例的源代码）。与其他书不同的是，作者结合软件工程思想，从需求分析、设计与实现到测试完整软件产品开发流程对两个实例项目进行了讲解，旨在培养读者Drupal网站项目的全局观。
5．提供技术支持，答疑解惑
读者阅读本书时若有疑问可发E-mail获得帮助，同时欢迎访问“方医生798工厂”，查看笔者最新的技术博客文章并进行交流。
本书内容及体系结构
第1篇 基础篇（第1～7章）
本篇主要内容包括：Drupal入门、安装Drupal 6、Drupal的基本概念、管理Drupal、主要模块介绍、部署Drupal和Drupal网站维护。通过本篇的学习，读者可以掌握内容管理系统的概念、Drupal下载和安装、Drupal的核心概念、后台管理的主要功能、核心模块的使用以及Drupal网站的部署和维护等知识和技能。
第2篇 高级篇（第8～12章）
本篇主要内容包括：常用第三方模块、Drupal模块开发、Drupal主题开发、Drupal API和Drupal网站安全等内容。通过本篇的学习，读者可以掌握Drupal最重要的三大第三方模块：CCK、Views和Panels的使用，还会掌握使用Drupal API开发自定义模块的技能，以便修改和扩展Drupal。还将学到如何使用Drupal的主题模板引擎定制Drupal网站的表现层。此外，通过第12章Drupal网站安全的学习，可加深开发者对网站安全的重视，并给出Drupal网站应对常见攻击的方法。
第3篇 实战篇（第13～14章）
本篇主要内容包括：大学教务处新闻系统和在线订餐系统的设计与实现。第一个实践项目重点是让读者熟知Drupal网站开发的流程；第二个实践项目重点在详解使用Drupal API开发自定义模块。通过本篇的学习，读者可以掌握如何使用Drupal解决实际项目中的需求。
附录
本篇主要内容包括：PHP入门、MySQL入门和第三方模块介绍。前两者对没有接触过PHP网站开发的读者是很好的入门学习资料。第三方模块介绍中对常用的Drupal第三方模块按照分类进行了简要介绍，可作为读者在选择模块时的参考依据。
本书读者对象
 正使用Drupal的网站开发者；
 专注国外网站项目外包领域的开发者；
 PHP网站开发的初学者；
 想利用Drupal作为系统架构的架构师；
 开源PHP项目的爱好者；
 大中专院校的学生；
 社会培训班学员。
本书作者
本书主要由方擎编写，同时参与编写的还有巴蕾、昊燃、黄叶新、李增辉、刘聪、龙志标、孟劼、米爱中、秦侠、冉剑、任潇、谭励、王大亮、伍云辉。在此一并表示感谢。
编者 
2010年7月于北京
目 录
基 础 篇
第1章 Drupal入门 2
1.1 内容管理系统（CMS） 2
1.2 开源的PHP WCMS 3
1.2.1 Drupal 3
1.2.2 Joomla 5
1.2.3 Typo3 7
1.2.4 WordPress 8
1.2.5 比较 10
1.3 Drupal功能总览 11
1.3.1 内容管理 11
1.3.2 用户管理 12
1.3.3 主题模板 13
1.3.4 博客平台 14
1.3.5 论坛社区 15
1.3.6 多语言支持 16
1.3.7 站点管理工具 16
1.3.8 模块 17
1.3.9 其他特性 17
1.4 小结 18
第2章 安装Drupal 6 19
2.1 版本的选择 19
2.2 获得Drupal 19
2.3 创建数据库 20
2.4 使用安装向导 24
2.4.1 选择向导的界面语言 24
2.4.2 创建settings.php文件 24
2.4.3 设置数据库 25
2.4.4 设置站点初始信息 27
2.4.5 完成安装 30
2.5 Hello Drupal！ 32
2.5.1 创建个人博客 32
2.5.2 开启功能模块 32
2.5.3 发布第一篇博客 33
2.5.4 选择合适的主题 35
2.6 小结 37
第3章 Drupal的基本概念 38
3.1 节点（Node） 38
3.2 内容类型（Content Type） 39
3.3 模块（Module） 39
3.4 主题（Theme） 40
3.5 区块（Block） 42
3.6 菜单（Menu） 42
3.7 用户（User） 43
3.8 评论（Comment） 43
3.9 分类（Taxonomy） 44
3.10 小结 44
第4章 管理Drupal 45
4.1 介绍 45
4.2 内容管理 46
4.2.1 创建节点 47
4.2.2 管理节点 51
4.2.3 管理评论 52
4.2.4 管理节点类型 53
4.2.5 发布设置 60
4.2.6 RSS发布设置 61
4.2.7 类别管理 62
4.3 用户管理 64
4.3.1 用户管理 65
4.3.2 访问规则 67
4.3.3 角色 69
4.3.4 用户相关设置 71
4.4 站点创建 74
4.4.1 区块管理 75
4.4.2 菜单导航管理 80
4.4.3 模块管理 83
4.4.4 主题管理 85
4.5 站点配置 89
4.5.1 动作（Actions） 89
4.5.2 管理专用主题（Administration theme） 91
4.5.3 简洁URL（Clean URLs） 91
4.5.4 日期与时间（Date and Time） 93
4.5.5 错误报告（Error reporting） 94
4.5.6 文件系统（File system） 94
4.5.7 图像处理工具（Image toolkit） 95
4.5.8 输入格式（Input formats） 95
4.5.9 日志和报警（Logging and alerts） 99
4.5.10 性能（Performance） 99
4.5.11 站点信息（Site information） 101
4.5.12 站点维护（Site maintenance） 101
4.6 站点报告 102
4.6.1 最近日志记录 102
4.6.2 出现“访问被拒绝（Access denied）”的页面 103
4.6.3 查看返回404错误的路径 103
4.6.4 站点状态 104
4.7 小结 105
第5章 主要模块介绍 106
5.1 博客（Blog） 106
5.2 文集（Book） 108
5.2.1 创建文集 109
5.2.2 管理文集 111
5.3 联系表单（Contact） 111
5.3.1 联系表单类别管理 112
5.3.2 网站用户的联系表单 113
5.3.3 联系表单链接 115
5.4 论坛（Forum） 116
5.4.1 容器（Container）和论坛（Forum） 118
5.4.2 论坛全局设置 119
5.5 本地化（Locale）和翻译（Content Translation） 121
5.5.1 更换界面语言 121
5.5.2 修改现有翻译 124
5.5.3 导出翻译包 125
5.5.4 为节点创建多语言版本 126
5.5.5 本地化域名 127
5.6 自定义路径（Path） 128
5.6.1 创建节点时设置自定义路径 128
5.6.2 使用后台集中管理自定义路径 128
5.7 访问统计（Statistics） 130
5.8 触发器（Trigger） 130
5.9 小结 132
第6章 部署Drupal 133
6.1 测试环境与生产环境 133
6.2 选择最适合你的服务器架构 133
6.2.1 单服务器 133
6.2.2 Web服务器和数据库服务器 134
6.2.3 更复杂的架构 134
6.3 部署流程 135
6.3.1 第一次部署 135
6.3.2 更新运行中的Drupal网站 137
6.4 小结 138
第7章 Drupal网站维护 139
7.1 网站清理 139
7.1.1 清理缓存 139
7.1.2 清理垃圾节点和评论 140
7.1.3 非法用户 140
7.1.4 垃圾上传文件 141
7.1.5 日志 142
7.2 网站备份 142
7.2.1 准备工作 142
7.2.2 数据库备份 142
7.2.3 网站程序备份 143
7.2.4 用户文件备份 143
7.3 网站数据恢复 143
7.3.1 使用phpMyAdmin 144
7.3.2 使用BigDump 144
7.4 小结 146
高 级 篇
第8章 常用第三方模块 148
8.1 CCK 148
8.1.1 为什么需要字段 148
8.1.2 扩展内容类型 149
8.1.3 CCK提供的字段类型 153
8.2 Views 157
8.2.1 基础概念 157
8.2.2 创建视图 159
8.2.3 列表样式 167
8.2.4 导入与导出 168
8.3 Panels 169
8.3.1 Panel布局 170
8.3.2 创建Panel节点 171
8.3.3 创建Panel区块 172
8.4 小结 173
第9章 Drupal模块开发 174
9.1 开发环境搭建 174
9.1.1 开发工具 174
9.1.2 Drupal运行环境 177
9.1.3 Devel模块 178
9.2 模块开发基础 179
9.2.1 钩子函数 180
9.2.2 菜单系统 180
9.3 创建Drupal模块 180
9.3.1 为模块命名 181
9.3.2 模块文件夹 181
9.3.3 模块注册文件 181
9.3.4 创建页面 182
9.3.5 创建自定义区块 184
9.4 小结 186
第10章 Drupal主题开发 187
10.1 Drupal的主题机制 188
10.1.1 MVC架构 188
10.1.2 模板技术和网站主题 189
10.1.3 Drupal主题引擎 190
10.2 theme函数 193
10.2.1 执行流程 194
10.2.2 hook_theme 194
10.3 主要模板文件 195
10.3.1 通用模板变量 196
10.3.2 page.tpl.php 197
10.3.3 node.tpl.php 199
10.3.4 block.tpl.php 200
10.3.5 comment.tpl.php 201
10.4 小结 202
第11章 Drupal API 203
11.1 API文档使用指南 203
11.2 操作节点 204
11.2.1 节点对象 204
11.2.2 载入节点（node_load） 205
11.2.3 获得节点展示代码（node_view） 205
11.2.4 保存节点（node_save） 206
11.2.5 删除节点（node_delete） 206
11.2.6 节点钩子函数（hook_nodeapi） 206
11.3 操作用户 208
11.3.1 用户对象 208
11.3.2 全局$user变量 209
11.3.3 载入用户（user_load） 209
11.3.4 用户钩子函数（hook_user） 210
11.4 操作数据库 212
11.4.1 数据库查询（db_query） 213
11.4.2 获得结果（db_fetch_object和db_fetch_array） 214
11.4.3 分页查询（pager_query） 214
11.5 表单API 216
11.5.1 创建表单 216
11.5.2 表单提交数据的验证 219
11.5.3 处理提交数据 221
11.5.4 修改已存在的表单 222
11.6 小结 223
第12章 Drupal网站安全 224
12.1 访问权限控制 224
12.2 过滤用户输入内容 225
12.3 安全的数据库查询 225
12.4 防止跨站请求伪造（CSRF） 227
12.5 小结 228
实 战 篇
第13章 实践项目一：大学教务处新闻网站 230
13.1 项目背景 230
13.2 需求分析 230
13.2.1 需求分析的重要性 230
13.2.2 用例图 231
13.2.3 网站功能 231
13.2.4 非功能性需求 232
13.2.5 项目估计 233
13.3 设计 233
13.3.1 核心页面设计 233
13.3.2 主要内容类型 236
13.3.3 所需模块 236
13.3.4 主题 237
13.3.5 用户角色与权限 237
13.4 系统实现 238
13.4.1 新闻审核 238
13.4.2 新闻视图 240
13.4.3 创建首页 242
13.4.4 注册规则 243
13.4.5 联系表单 244
13.4.6 自定义错误页面 245
13.4.7 定制主题 246
13.4.8 安装中文语言包 248
13.5 测试 248
13.5.1 软件测试简介 249
13.5.2 使用SimpleTest进行单元测试 249
13.5.3 使用虚拟机搭建测试环境 251
13.5.4 测试用例 254
13.6 小结 255
第14章 实践项目二：在线订餐系统 256
14.1 项目背景 256
14.2 需求分析与功能设计 256
14.2.1 核心业务数据 257
14.2.2 页面设计 257
14.2.3 所需模块 258
14.3 系统实现 258
14.3.1 创建内容类型 258
14.3.2 订餐模块的开发 260
14.3.3 订单列表 264
14.3.4 订餐页面的美化 265
14.4 小结 265
附录A PHP基础 266
附录B MySQL基础 281
附录C 第三方模块介绍 302
文摘
  文摘用户是网站的受众，也是网站内容的贡献者。现在大多数的网站都支持用户注册。Drupal适合构建从个人网站到社区驱动的网站（community-driven），是一个多用户系统，支持用户注册和身份验证，并具有维护个人信息的功能。
管理员可以通过后台管理的“用户管理”功能查看当前网站的全部用户，并可批量更新用户状态、按排用户角色或删除用户。Drupal采用“基于角色的访问控制”的权限管理机制。角色可以理解为一个用户组，组内的成员具有相同的对网站的访问和操作权限。每个用户可以同时具有一个或多个角色。在后台可以管理“用户角色（IJserRoles）”和“权限（Permission）”。管理员在后台管理的角色管理中可根据网站需求增加角色，如如普通管理员、新闻发布者、站点维护者等。但Drupal中有两个预先定义的角色不能被更改：
一
·匿名用户（.AnonymousUser）：未注册用户或己注册但未同过审核的用户；
·认证用户（AuthenticatedUser）：已注册并同过审核的用户。
每个权限项，如创建节点（CreateStoryNode）等权限，是由模块提供的，使用钩子函数hookperm在模块中定义。权限不能在后台管理中手动创建。