Drupal是一个由许多小的功能模块组成的模块化系统。它不仅是一个CMS,还被描述成为框架。项目创建者将它设计为高度灵活的系统,让技术人员可以对其进行改造以满足多样化的需求。正是因为遵循了这个设计原则,Drupal才需要大量的定制化工作—当然也对使用者的技术水平提出了较高的要求。
了解Drupal体系结构的工作原理不是一个简单的事情。但如果想成为一个称职的Drupal管理员,这是必需的过程。
1. 使用的编程语言
Drupal软件是使用PHP程序语言编写的,用户界面综合使用了HTML、JavaScript、CSS和PHP。当为Drupal开发扩展(模块)时,开发者需要同时使用PHP、HTML和CSS。
提示
Drupal 7是第一个要求使用PHP 5的版本,其全部技术需求请参见第2章。
2. 体系结构的基本概念
Drupal体系结构的基本概念包括用户、节点、字段、分类、评论、模块、钩子以及一组用户界面条目如区域、区块和菜单。其他重要概念将在本书后面的章节讨论,但下面的概念非常重要,需要在开始了解Drupal前掌握。
用户
一个Drupal用户指的是可以登录系统并执行操作的人。包括编辑者、系统管理员和网站用户(通过Drupal网站彼此交流)。Drupal还有一个和安全相关的概念称为“匿名用户”。所有网站的访问者在登录前都被称为匿名用户。
用户是系统的原生(native)实体,其默认属性包括用户名、密码、电子邮件等。另外也可以对用户个人信息进行定制增加新的属性,例如可以为用户的Twitter地址增加一个新URL属性。
节点
节点是内容条目。Drupal内容类型全部基于节点。Drupal对内容的管理的实质是管理节点。例如,要在Drupal中创建并发布一篇博客,则需要创建和发布一个Drupal节点。
节点由默认元素(如标题和内容)以及一个或多个可选的Drupal字段组成。默认情况下,节点是简单实体。这样定义的目的是让站点所有者在定义自己的内容类型时可以扩展简单节点。
提示
默认的Drupal安装程序会创建两个已定义好的内容类型:基本文章(basic article)和页面(page)。这两个内容类型包括标题和内容字段以及一些元数据。也可以通过为其增加字段来扩展这些内容类型。
字段
字段是Drupal 7中新添且重要的概念,它们是可以被附加到Drupal中大部分实体上的内容容器。例如,想将文章的到期时间增加到站点的文章中,那么可以定义一个新的名为“到期时间”的字段并将其关联到Article内容类型上。
能够自由地定义新字段并将其关联到内容类型上,这使Drupal几乎可以存储任何类型的内容。
交叉引用
有关Drupal内容类型的创建和管理,包括Drupal字段的定义、配置和管理详见第10章。
分类
分类(taxonomy)用于在Drupal中对内容进行组织。Drupal分类功能是由内核模块定义的,可以定义“词汇表”(一组类别或标签)并将它们与系统中的内容类型相关联。当一个分类与某个内容类型关联后,就可以在创建或编辑这种类型的内容时使用所属分类了。
分类也有不同的形式—可以是层次的(hierarchical)、平行的(flat)或任意的(arbitrary),标签(tagging)系统为任意形式分类的一个示例。在创建一篇关于体育运动的博客时,可能需要用一套分类来区分不同运动项目的博客,还有可能需要标明每篇文章中提到的运动员的名字。
在上面提到的两种应用场景中,第一种可以使用一个预先定义好的分类系统,第二种使用标签系统比较合适,可在创建内容时填入一系列任意的单词或词组。
交叉引用
第11章将详细介绍Drupal 7中分类的创建和管理,包括Drupal 7中所包含的分类管理工具。
评论
Drupal评论是原生的系统实体,用来展示来自用户的评论和反馈。评论必须与系统中的某段内容相关联—用术语来表达就是“节点”。例如像用户个人信息这样的内容是不能被评论的。
评论也可以与其他评论相关联。换句话说,一个用户可以回复他自己或其他人的评论,这样Drupal的评论就构成了一个“会话”,也就是通常所说的帖子列表(threading)。
交叉引用
评论模块和相关的功能将在第15章中深入讨论。
模块
Drupal模块是用于增强或改变现有Drupal功能的软件包,它有两种类型:Drupal默认的内核模块和由社区提供的贡献模块。如果使用Drupal基础发布版,那么需要单独下载和安装贡献模块。如果使用其他发布版,除带有内核模块外,还会集成一些贡献模块。
标准的Drupal版本包含了一定数量的内核模块,通常少于50个。然而目前已有上千的贡献模块可使用,这些都可以从Drupal官方网站上下载:http://drupal.org/project/modules。
高级管理员和开发者可以通过开发自己的模块来扩展或改变Drupal的功能,这需要精通Drupal API和PHP编程技术。
交叉引用
Drupal内核模块将在第6章中详细介绍。如何使用贡献模块扩展站点功能的内容将在第29章中介绍。
菜单系统负责显示站点的导航元素,它也有另外的功能,例如将URL请求映射到Drupal系统中能够处理此请求的部分。这个功能被称为请求路由(request routing),是Drupal的高级概念。掌握此过程的复杂原理并不必要,但是所有管理员应该明白菜单系统不只是负责显示用户界面。
交叉引用
第8章有关于创建和管理Drupal菜单的详细介绍。第5章将介绍主题和Drupal主题管理工具。
3. 数据库
Drupal将所有的内容、缓存数据、系统实体和一部分配置信息存储到一个关系型数据库中。很多系统实体包括用户、评论、节点和字段,都有专门的数据库表存放各自的数据。
Drupal 7包括了一个增强的数据库抽象层。这层是建立在PHP数据对象(PHP Data Object,PDO)API基础之上的,使模块开发者从底层的数据库操作细节中解放出来。
Drupal 7支持MySQL、PostgreSQL和SQLite数据库。
交叉引用
关于Drupal 7的详细技术需求请参见第2章。
4. 工作原理
Drupal是一个Web应用程序,通过Web服务器和数据库服务器来支撑其运行。对内容的请求源自像Web浏览器这样的客户端,通过Web服务器被传递至Drupal应用程序系统,再由Drupal菜单系统路由转发至负责处理这些请求的软件组件。图1-4展示了请求的处理流程。
技巧
所有的模块都针对特定的Drupal版本创建。如果一个模块的版本与其所安装的Drupal系统版本不匹配,那么模块将不能正常使用。
钩子
钩子是模块开发者必须掌握的高级编程知识。钩子是系统中所有功能和模块的内部应用程序接口(API)。它们定义了可被系统执行的操作。当模块安装钩子时,就进入到系统的管理中并执行与此钩子有关的操作。
例如,一个名为example的节点模块创建了一个文件example.module,其中定义了example_form()函数。当系统调用这个函数时,模块将进入到系统的管理中并显示所编辑的菜单。如想获得Drupal开发的更多信息,可在线查看开发者文档:http://drupal.org/contributors-guide。
区域、区块和菜单
Drupal网站的每个页面都由区域构成。页面的结构可能包含页眉、页脚、左边栏和中心内容区。区块是在被安排在某个特定区域中显示出来的一块内容。图1-3展示了在Drupal驱动的网站页面上如何显示区域。
如果客户端请求的内容有访问权限,则Drupal将从系统缓存或原始的数据表中取出内容并返回。内核系统和相关模块会对响应内容进行组装。模板系统负责内容的最后格式化处理,并最终交由Web服务器将内容发布至客户端。
相关推荐
#### 三、Drupal体系结构分析 - **核心组件**:Drupal的核心由一系列模块和服务组成,它们协同工作来处理请求和生成响应。了解这些核心组件对于进行高效开发至关重要。 - **模块开发**:本书详细介绍了如何编写...
#### 二、Drupal体系结构解析 - **核心组件**: - 内容管理:包括内容创建、编辑和审核流程。 - 用户管理:用户注册、登录、权限设置等功能。 - 主题化:支持不同风格的网站界面设计。 - 模块扩展:通过安装额外...
4. **《Drupal 8模块化编程》**:此书深入探讨了Drupal 8的模块化体系结构,教你如何编写高效、可维护的模块。对于希望成为Drupal模块开发者的人来说,这是必不可少的读物。 5. **《Drupal源码分析》**:理解Drupal...
- **主题体系结构**:阐述Drupal主题的基本结构,包括模板文件(Template Files)、区域(Regions)、块(Blocks)等元素的作用。 - **响应式设计**:强调在不同设备上实现一致用户体验的重要性,提供关于如何创建响应式...
本书由 Drupal 核心开发人员编写,全面讲授了 Drupal 定制开发的方法,揭示了 Drupal 强大的体系结构和行为,以及模块编写和主题制作方法。书中详细介绍了 Drupal 的开发流程、API 的使用、模块编程实践、安全性最佳...
- **系统性学习资源**:为读者提供了一个全面了解Drupal 7的机会,帮助他们建立起扎实的基础知识体系。 - **实践指导性强**:书中包含大量实战案例和步骤指南,便于读者边学边练。 - **持续更新支持**:虽然该书出版...
"drupal数据库设计图"是理解Drupal工作原理的重要工具,通过这张图,我们可以直观地看到数据库结构,帮助开发者更有效地理解和操作Drupal系统。 首先,Drupal的数据库设计图通常会展示各个表之间的关系,包括核心表...
完成后,Drupal 将自动建立必要的表结构并保存配置信息。 8. **安装完成**:一旦所有步骤都完成,Drupal 就安装好了,用户可以通过管理员账户登录,开始创建内容和定制网站。 Drupal 的核心特性包括模块化架构、...
你还需要学习如何利用Taxonomy(分类体系)组织内容,让网站结构更加有序。 Drupal的菜单系统允许创建导航链接,而工作流工具(如Workbench Moderation)则帮助管理内容的状态,如草稿、审核和发布。了解这些工具能...
- **体系结构解析**:本书全面揭示了Drupal的强大体系结构,包括其模块化设计、主题系统、数据库层等关键组成部分。 - **模块化设计**:模块是Drupal的核心组件之一,允许开发者轻松地添加新功能而不需改动核心代码...
2. 主题的结构和文件组成:一个基本的Drupal主题至少需要包含一个信息文件(.info),这是主题的配置文件,定义了主题的基本信息如名称、描述、依赖以及各种主题设置。此外,通常还会有用于布局的PHP模板文件(.tpl....
它全面地讲解了Drupal的体系结构,揭示了其行为背后的原理,这对于深入理解Drupal的工作机制至关重要。此外,本书还介绍了Drupal模块的编写和主题(themes)的制作方法,这对于希望自定义和扩展Drupal功能的开发者来...
在内容管理方面,Drupal使用节点(nodes)作为内容的基本单位,通过使用区块(blocks)和主题(themes)来构建网站的结构和外观。Drupal的钩子(hooks)机制允许模块与系统其他部分进行交互,从而提供更复杂的功能。...
该图表将使您可以设置和配置Drupal以及其他集成: 使用ProxySQL配置MySQL 使用PGBouncer配置的PostgreSQL 雷迪斯漆请查阅我们的体系结构图以获取有关Azure的推荐设置:安装确保您有一个正在运行的Kubernetes集群。...
在模块化开发部分,《 Beginning Drupal 7》将深入探讨Drupal的模块体系,这是Drupal的核心优势之一。通过学习如何安装、配置和编写自定义模块,读者能够扩展Drupal的功能,满足特定项目需求。书中会介绍一些常用的...