目录 第一篇入门篇 第1章Drupal介绍 1.1开源内容管理系统 1.2Drupal的特点 1.3Drupal的版本 1.4Drupal 7、8、9版本的区别 1.5Drupal核心概念思想 1.5.1模块 1.5.2节点 1.5.3内容类型 1.5.4字段 1.5.5区块 1.5.6分类 1.5.7实体 1.5.8视图 第2章Drupal开发环境搭建与安装 2.1Drupal的开发环境 2.2UniServerZ安装 2.3Drupal 8安装 2.3.1下载Drupal 2.3.2数据库配置 2.3.3中文化设置 2.3.4安装Drupal 8 2.4Drupal 8后台管理 2.4.1内容 2.4.2结构 2.4.3外观 2.4.4扩展(模块) 2.4.5配置 2.4.6人员 2.4.7报告 2.4.8帮助 第3章模块 3.1模块查找 3.2模块存放的位置 3.3模块下载、安装、使用 3.3.1手动安装 3.3.2系统管理页面下载 3.3.3模块启用与依赖 3.4模块的升级 3.4.1手工升级 3.4.2在线升级 3.4.3使用Drush和Composer工具升级 3.5用Module Filter管理模块 第4章内容管理 4.1Drupal的内容 4.2创建基本页面 4.3内容的修改和删除 4.4内容的修订版本 4.5批量内容的查询、编辑、删除管理 4.6其他内容类型的创建 4.7富文本编辑器 4.7.1使用CKEditor编辑器 4.7.2CKEditor的文本格式修改 第5章内容类型 5.1内容类型的创建 5.1.1创建内容类型 5.1.2内容类型的设置 5.2字段管理 5.3管理表单显示 5.4管理内容显示 第6章内容分类 6.1创建一个Drupal文章分类 6.2引用分类表 6.3修改分类表表单显示 6.4在文章中使用分类 第7章内容显示 7.1系统默认的显示方式 7.2视图模块 7.2.1页面方式 7.2.2显示域 7.2.3格式化显示域 7.2.4过滤器 7.2.5排序 7.2.6页眉页脚 7.2.7分页器 7.2.8上下文过滤器 7.2.9关联 7.3创建视图 7.3.1创建“所有文章列表”视图 7.3.2设置“所有文章列表”页面 7.3.3“所有文章列表”视图显示 7.3.4视图的区块 7.4区块布局 7.4.1演示块区域 7.4.2放置区块组件内容 7.4.3自定义区块库 7.5与内容显示相关模块 7.5.1Ctools模块 7.5.2Panels模块 第8章多媒体内容 8.1视频内容 8.1.1启用Media模块 8.1.2创建视频内容类型 8.1.3安装优酷模块 8.1.4添加优酷字段 8.2创建视频内容 8.2.1创建本地视频内容 8.2.2创建优酷远程视频内容 8.3相册内容 8.3.1创建相册内容类型 8.3.2相册相关模块 8.3.3Juicebox模块安装 8.3.4设置相册幻灯片显示 8.3.5Juicebox相册显示效果 8.3.6相册视图定义Juicebox显示 8.3.7相册视图的显示效果 8.4幻灯片 8.4.1幻灯片相关模块 8.4.2Views Slideshow模块安装 8.4.3创建轮播内容 8.4.4创建视图幻灯片 8.4.5添加一个视图区块 8.4.6“内容: Image”设置 8.4.7改变轮播效果 8.4.8添加轮播控制按钮 8.4.9自定义轮播图片样式 8.4.10文字滚屏 8.4.11幻灯片布局 8.5文件上传下载 8.5.1Drupal的文件系统 8.5.2设置PHP上传文件大小 8.5.3创建内容类型 8.5.4作为资源文件下载 第9章菜单管理 9.1创建菜单 9.2添加菜单项链接 9.2.1通过内容创建生成菜单项 9.2.2通过系统菜单管理添加菜单项 9.3部署菜单 9.4菜单项分级 9.5创建菜单的其他方式 9.5.1通过视图创建菜单 9.5.2通过视图创建标签菜单 9.6菜单的禁用和删除 9.7与菜单相关的模块 9.7.1Nice Menu模块 9.7.2Superfish模块 9.7.3Taxonomy menu模块 9.7.4Pathauto模块 第10章用户、角色与权限 10.1用户管理 10.1.1用户注册与创建 10.1.2用户账号设置 10.1.3用户批量管理 10.2创建角色 10.3赋予角色权限 10.4赋予用户角色 第11章主题 11.1主题模块 11.1.1主题模块安装 11.1.2主题启用 11.1.3主题切换与卸载 11.2主题设置 11.2.1配色方案 11.2.2网站logo与快捷图标 11.2.3第三方主题设置 11.3站点信息设置 第12章页面布局与首页设计 12.1Page Manager和Panels 12.1.1Panel Nodes 和Pages 12.1.2变体与页面管理 12.2创建自定义首页布局 12.2.1创建首页页面(变体) 12.2.2首页布局 12.2.3给首页添加内容 12.2.4重新定义首页URL地址 12.3Layout Builder管理显示 第13章社交 13.1社交分享 13.2阅读统计 13.2.1浏览统计的配置 13.2.2谁可以看到浏览统计 13.2.3热点文章排行 13.3点赞统计 13.3.1Voting API设置 13.3.2LikeBtn模块设置 13.3.3点赞效果 13.4联系表单 13.4.1个人联络表单 13.4.2自定义联络表单 13.4.3创建联络表单菜单 13.4.4通过自定义联络表单发送邮件 13.5Webform表单 13.5.1创建Webform表单 13.5.2发布表单 第14章中文与多语种网站 14.1多语种网站 14.2用户界面翻译 14.2.1翻译包 14.2.2翻译用户界面 14.3创建双语网站 14.3.1添加语言 14.3.2语言检测设置 14.3.3添加语言切换按钮 14.3.4第三方语言切换按钮 14.4内容翻译 14.4.1内容类型增加翻译和语言选择功能 14.4.2语言选择器与内容创建 14.4.3编辑翻译文章 14.4.4其他实体内容的翻译 第15章实用管理模块和Drupal分发版 15.1高级帮助管理 15.2开发管理 15.3分类管理 15.4关联关系管理 15.5批量处理 15.6规则 15.7电子商务 15.8Drupal分发版 第16章移动与PWA设计 16.1响应式移动设计 16.1.1移动优先主题设计 16.1.2移动和桌面应用切换 16.2移动业务相关设计 16.3PWA 16.4基于Drupal后端移动应用开发 第17章产品上线 17.1申请域名 17.2申请托管服务器 17.3安装Drupal到虚拟主机 17.4域名设置 17.4.1域名绑定 17.4.2重定向 17.4.3迁移 17.4.4子域名 17.5Cpanel管理虚拟主机 17.5.1文件管理 17.5.2数据库管理 17.5.3邮件管理 17.5.4监控管理 17.5.5安全服务 第二篇实战篇 第18章在线课程管理系统分析 18.1系统概要 18.2参与者 18.2.1老师角色职能 18.2.2学生角色职能 18.2.3系统管理员角色职能 18.3系统主要功能需求 18.3.1课程管理 18.3.2课程资源管理 18.3.3题库和作业管理 18.3.4课程班级讨论帖管理 18.3.5查询功能 第19章用户与系统角色设计 19.1Drupal内核的用户管理 19.2自定义用户信息 19.3系统用户角色 19.3.1用户角色定义 19.3.2用户角色添加 19.3.3用户注册的角色选择 19.4给用户添加自定义字段 19.4.1添加用户通用字段 19.4.2添加老师和学生用户字段 19.4.3老师和学生用户信息字段加权限 19.5学生和老师用户注册方式 19.5.1给特定角色添加注册页面 19.5.2老师和学生的注册界面 19.5.3老师角色注册需要管理员确认 19.6登录用户查看自己信息 第20章课程、班级和内容设计 20.1课程与教学班级设计 20.2安装群组模块 20.2.1使用Group模块 20.2.2使用OG群组模块 20.2.3OG群组概念 20.3课程群组数据结构设计 20.4创建课程群组内容类型 20.4.1创建课程性质和教研室分类 20.4.2课程小组添加课程性质和教研室分类 20.4.3添加课程图片封面 20.4.4添加其他字段 20.5班级群组数据结构设计 20.6创建班级群组内容类型 20.6.1设置班级群组为课程群组的内容 20.6.2修改字段名称 20.7建立群组与内容关系 20.7.1内容绑定到课程和班级群组 20.7.2设置创建内容链接 20.8群组和内容的创建 20.8.1创建课程实例、发布文章 20.8.2课程小组和文章的发布效果 20.8.3课程群组和文章页面效果 20.9设置群组公有、内容私有 20.9.1设置课程小组公有 20.9.2设置课程小组文章内容私有 第21章课程与班级显示 21.1OG模块默认的视图 21.2OG Extras模块 21.3所有课程列表显示 21.3.1设置课程页面 21.3.2设置课程区块 21.4课程小组下的所有班级列表显示 21.4.1创建班级列表视图 21.4.2设置班级标签菜单 21.4.3设置班级视图页面上下文过滤器 21.4.4班级列表显示效果 第22章课程与班级页面布局设计 22.1构建课程群组页面布局 22.1.1Page manager修改节点模板 22.1.2添加课程群组新变体 22.1.3设置课程变体显示规则 22.1.4定义课程页面布局 22.2给课程变体添加内容 22.2.1添加节点的正文 22.2.2添加“创建内容”面板 22.2.3添加内容面板 22.2.4群组成员列表 22.2.5添加群组成员状态 22.3课程自定义布局 22.4课程小组页面布局显示效果 22.5班级小组布局 22.5.1默认群组节点的显示效果 22.5.2查看Group变体的内容 22.5.3修改Group变体名称为“班级群组布局” 22.5.4修改“班级群组布局”变体的选择规则 22.5.5重新定义“内容”布局 22.5.6选择创建内容链接 22.5.7显示班级所属课程 22.5.8给布局添加样式 22.5.9班级布局效果 第23章题库设计 23.1Quiz模块 23.2Quiz的设置管理 23.3Quiz的基本原理 23.4题库内容类型设置 23.5题型内容类型设置 23.6创建题库实例 23.7添加题型实例 23.7.1独立内容添加题型 23.7.2题库添加题型 23.8题库的题型分类设计 23.8.1以问题“标题”为分类字段 23.8.2通过系统分类术语分类题库问题 23.9在线测验与测验结果 23.10成绩统计 23.10.1统计图模块安装 23.10.2题库修订版本 23.10.3查看题库成绩统计 23.11一些关键设置 23.11.1用户可以测验的次数 23.11.2通过率(及格率) 23.11.3测试开放时间设置 23.12批量题型导入 23.13课程和班级的题库设计 23.13.1课程的题库标签菜单设置 23.13.2班级的题库设置 第24章课程与班级用户权限管理 24.1系统级角色权限分配 24.2系统级角色权限设置 24.3群组角色权限设置 24.3.1群组角色定义 24.3.2群组角色权限设置 24.4群组角色授权管理 24.5班级群组批量学生角色授权 第25章课程多媒体资源库设计 25.1课程大纲结构设计 25.2创建课程大纲内容类型 25.2.1“教学内容及要求”字段 25.2.2富文本编辑器 25.2.3“重点难点”字段 25.2.4文件类型的字段设置 25.2.5视频设计 25.2.6安装ffmpeg 25.2.7安装Zencoder库 25.2.8本地视频字段设置 25.2.9远程视频字段 25.3创建课程大纲实例 25.3.1编辑“教学内容及要求” 25.3.2上传课件和作业模板 25.3.3上传本地和远程课程视频 25.4课程大纲显示效果 25.5课程大纲在课程群组的显示设计 25.5.1大纲文字内容列表 25.5.2课程视频列表 第26章课程资源和消息管理 26.1课程资源管理 26.1.1资源共享设计实现 26.1.2资源分类(标签菜单)设计 26.2老师、学生资源管理 26.2.1学生管理 26.2.2老师管理 26.3题库资源发布与管理 26.3.1课程小组的题库管理 26.3.2班级小组的作业发布 26.4课程大纲、文章和群组帖的发布管理 26.4.1课程大纲的发布管理 26.4.2文章的发布管理 26.4.3群组贴发布管理 26.5消息管理 26.5.1在线课程消息管理设计 26.5.2本地服务器Email测试管理 26.5.3安装设置Mail Safety模块 26.5.4设置消息类型模板 26.5.5定制消息发送规则 26.5.6消息管理测试 26.6消息管理改进 26.6.1群组帖添加“通知字段” 26.6.2修改消息通知规则 第三篇维护篇 第27章Drupal备份与恢复 27.1备份Drupal系统 27.1.1下载Drupal系统文件 27.1.2导出数据库 27.2恢复Drupal系统 27.2.1系统代码恢复 27.2.2导入数据库 第28章Drupal版本迁移 28.1迁移准备 28.1.1系统清单 28.1.2内容清理 28.1.3模块清理 28.1.4用户清理 28.2迁移审查 28.3用Migrate迁移工具 28.4用Drush迁移 第29章Drupal的升级与多网站开发 29.1手工升级Drupal 29.1.1Drupal 7升级 29.1.2Drupal 8升级 29.1.3关于.htaccess和robots.txt 29.1.4update.php 29.2多网站 29.2.1创建多网站 29.2.2多网站更新 29.2.3多网站数据库备份还原 第30章重置MySQL数据库root密码 30.1Linux下的MySQL 30.2UniServerZ下的MySQL 第31章Drupal安全防护 31.1安全审查和基本保护 31.1.1安全审查 31.1.2基本防范 31.2Spambots防范 31.2.1Drupal用户设置 31.2.2使用第三方安全模块 31.3admin账号恢复 第四篇工具篇 第32章WSL开发环境 32.1Windows Subsystem of Linux 32.1.1打开Windows的Linux子系统功能 32.1.2选择安装一个Linux子系统 32.1.3进入Ubuntu终端 32.1.4设置root密码或修改用户密码 32.1.5设置bash属性 32.1.6WSL默认共享目录 32.2安装LAMP 32.2.1升级系统 32.2.2添加PHP软件仓库 32.2.3安装LAMP 32.2.4测试Apache 32.2.5测试PHP 32.2.6启用模块 32.3Apache服务器设置 32.3.1解决WSL网络协议错误问题 32.3.2修改端口号 32.3.3根目录设置 32.3.4虚拟主机设置 32.4MariaDB数据库设置 32.4.1启动MySQL服务 32.4.2打开MySQL终端 32.4.3退出MySQL终端 32.5设置系统自动启动LAMP服务器 32.6安装邮件服务器代理 32.6.1安装Postfix 32.6.2启动邮件服务器 32.6.3发送测试mail 32.7安装FTP文件服务器 32.7.1安装FTP 32.7.2修改设置 32.7.3启动FTP服务 32.8WSL目录文件权限问题 32.9WSL系统下Drupal安装 32.9.1下载和解压Drupal 32.9.2创建数据库和用户 32.9.3settings.php文件设置 32.9.4虚拟主机设置 32.9.5手工安装Drupal 32.10WSL迁移 32.10.1WSL导出 32.10.2WSL导入 32.10.3WSL启动 32.10.4Ubuntu用户切换 32.11WSL升级到WSL2 32.11.1检查Windows 10版本 32.11.2安装Linux内核更新包 32.11.3切换到WSL2环境 32.11.4设置WSL的Linux分发版本为WSL2 32.11.5文件共享问题 32.11.6Web访问问题 32.12Windows 10下文件共享问题 32.12.1文件夹共享设置 32.12.2专用网络设置 32.12.3网络共享设置 第33章Linux虚拟机与容器开发环境 33.1Drupal的虚拟机镜像 33.2VirtualBox开发环境 33.2.1安装VirtualBox 33.2.2安装Drupal虚拟机镜像文件 33.2.3启动Drupal虚拟机 33.2.4安装扩展包 33.3Docker 33.3.1Windows 10下安装Docker 33.3.2Docker基本容器管理命令 33.3.3修改容器镜像文件存放位置 33.3.4修改Docker服务器引擎容器 33.3.5共享磁盘 33.3.6设置国内镜像加速器 33.3.7安装Drupal容器和MariaDB数据库 33.3.8使用dockercompose 安装Drupal项目 33.4Vagrant 33.4.1先安装VirtualBox 33.4.2安装和使用Vagrant 33.4.3基本概念 33.4.4安装基础盒 33.4.5虚拟机操作 33.4.6VDD 33.4.7Drupal VM 33.4.8beetbox 33.5Vagrant的系统性能问题 33.6Vagrant和Docker的比较 第34章Composer和Drush工具 34.1Composer 34.1.1安装Composer 34.1.2安装Drupal项目 34.2Drush 34.2.1Windows 10 安装Drush 34.2.2安装wget或者cURL 34.2.3在Ubuntu中安装Drush 34.2.4下载Drupal项目 34.2.5安装Drupal项目 34.2.6检查Drupal项目的设置 34.2.7安装管理Drupal模块 34.2.8升级Drupal内核和模块 34.2.9备份代码和数据库 34.2.10恢复代码和数据库 34.3Drupal CLI 34.3.1安装Drupal CLI 34.3.2使用Drupal CLI 第35章Web应用开发常用工具 35.1代码编辑器 35.1.1Linux下的编辑器 35.1.2Windows常用编辑器 35.2浏览器调试工具 35.2.1开发者工具 35.2.2浏览器的Web应用开发扩展 35.3文件上传下载工具 35.4Linux服务器控制台 35.4.1开发环境的Linux服务器控制台 35.4.2远程环境的Linux服务器控制台 附录ADrupal常用模块一览表 附录B常用开发工具及服务一览表 致谢