你现在的位置:首页 > PHP网站建设知识库 > Drupal > 正文

Drupal 7:你需要了解的事实

Drupal是一个内容管理系统(CMS),也是一个内容管理框架(CMF)。因此,它既是一种应用程序,能够帮助开发者外的其它人员建立复杂的网站;同时,它也是一种开发架构,能够帮助开发人员快速定制和开发应用程序。围绕Drupal,已经发展起来一个庞大的用户社区,热衷于改进该软件,并支持它的实际应用。

经过两年多的酝酿和6600多次重大更新,Drupal 7 即将发布。其中的重大变化会对最终用户,网站建设者和开发者带来很好的影响。本文探讨了Drupal 7 一些最显著的新功能。首先,让我们介绍一些入门者必须了解的Drupal基本知识...

Drupal的基础知识


在Drupal中有五个层次: 

1。 数据 - 在Drupal中,表现为'节点'(文章,评论,用户)。
2。 模块 - 即Drupal中的一些功能插件,用来扩展你的网站的功能。 
3。 区块,菜单 - 提供一个网页区域,其中包括导航。 
4。 用户权限 - 基于角色,控制哪些是用户可以看到的,哪些是用户可以做到的
5。 主题 - 通过模板,以XHTML和CSS的形式对网站的基础数据加以呈现。

‘节点’是Drupal的核心概念,这是用于指代某一特点内容单元(例如,一篇博客文章、一条新闻、一个食谱,等)的通用术语。由于管理员可以创建任何所需的内容类型(包括自定义的字段类型),每个网站上能够添加什么内容,也是非常灵活的。内容也可以通过分类系统,分类或加上标签。

模块化是Drupal获得成功的主要原因之一,目前已经有超过6000多种不同的模块,为Drupal增加各种功能,目前所有模块都是免费提供的。在框架层面,模块化是通过挂接机制进行函数定义、捕捉到其他模块所产生事件,实现Drupal API 的灵活性的。

现在你已经有了基本的知识,让我们看看Drupal 7的新功能...

Drupal的7可用性

强大的功能带来用户界面的复杂性,Drupal历来被认为是令人迷惑和勇于使用的。为了改善Drupal的用户体验,专门雇用了Mark Boulton 和 Leisa Reichelt,为Drupal 7创建和测试新的设计。该项目由Acquia资助,这是Drupal创始人Dries Buytaert建立的公司。重新设计的目的是:

1。 让最频繁使用的功能更加容易完成,让较不频繁的任务也可以实现。 
2。 为80%的用户设计。 
3。 给内容创建者(用户)以特权。他们用大部分时间来管理内容。 
4。 让默认设置更聪明。

Drupal的用户界面的最显着的改善在于层叠技术的运用。可用性实验室的测试发现,许多从其他CMS系统转移过来的用户,习惯于一个专门化的内容管理和创作后端。在Drupal中,他们发现很难区分网站不同管理界面。

Drupal 7使用的层叠技术,结合了两者的优点。原位编辑和专门的、更加简洁的后端管理界面。它的优点是,你可以立即从任何地方进入管理模式,在网站上改变设置,然后返回到原来的位置,保持上下文(图1)的关联。Drupal界面中的另一个重要改进是新增的控制台(仪表盘),提供了获取用户相关信息和用户角色所对应功能(图2)的一种快捷方式。

表单经过重新设计,使用字段集和垂直制表符来压缩屏幕上战胜的空间(图3)。上下文关联的链接是一种方便的新功能。鼠标悬停在区块上时,会出现齿轮图标;点击后会出现一系列的菜单项,列出用户可用的功能项。这些菜单对页面上的每个区块都是可用的,并且可以通过编程(图4)来操纵。

\

\

\

\

\

\

安装Drupal时,可选择一个名为“install profile”的安装配置文件。利用该文件,能够建立包括示范数据和配置的网站,让用户能够初步了解如何 使用该系统。如果选择最小安装模式,可创建一个不包含示范数据的网站,因此更适合有经验的用户。

较小的用户体验改进,包括本地时区处理和更好、更简洁的密码强度管理组件。

另外,Drupal的文档团队已经对帮助系统进行了扩充,使之更为详细、更有组织,包括通向drupal.org手册页面的链接。

语义Web 
语义Web提供了以下好处:
1。 程序和站点可以交换信息。 
2。 搜索引擎可以在结果中显示更多相关信息。 
3。 数据mashers可以整合来自不同数据集的数据,以寻找新的,惊人的混合效果。

资源描述框架(RDF)是W3C的倡导的一种基于非集中架构的开放式知识建模和共享标准。知识分散开世界假设的W3C标准。关于任何实体的信息,都可以分解为包括主题、谓主和宾语的三元组合。下面是一个例子:

“用户喜欢Linux”在RDF中表现为三个部分:主语是“用户”,谓语是“喜欢”,“宾语”则是Linux。

Drupal 7通过为内容定义RDF映射,实现了 RDFa规范 。核心Drupal主题输出RDF元数据和可以人工识读的视视觉信息。事实上,Drupal在数据组织方式上与RDFa已经非常相似:带有属性和关系的类型实例。最重要的区别是,Drupal的结构隐藏在数据库中,而RDF的结构是在网页上公开的。

Drupal 7引入了一个新的抽象层称为实体类型,包括节点、用户、评论、文件、术语和词汇等实体类型。默认的映射被提供给RDFa,因此对于每个实体类型,包括:标题、该实体的各个字段、创建和更新日期、创建者、评论数,以及(评论)的答复等等。因此,在每个评论和它的上级节点,以及每个评论与其所回复的节点之间,存在某种关系。Drupal提供以下的RDF词汇表:

1。 FOAF - 朋友的朋友。 
2。 SIOC - 通过语义层关联的网上社区。 
3。 SKOS - 简单知识组织系统。 
4. DC – Dublin 核心元数据标准 (Fig 5).

PHP数据对象

Drupal 已经支持PHP数据对象(PDO),这是一种轻量统一数据访问接口。PDO提供了一种数据库抽象层,使Drupal能够支持更广泛的后端数据库,包括MySQL和PostgreSQL,Informix,Oracle,ODBC和SQLite。

网页设计

这在 Drupal 社区中被称为“主题化”。Drupal 7 缺省采用 Stark 主题,即‘无主题 Drupal’. 这是应那些希望得到一种基本架构,从而展开网页设计工作的设计师们的要求提供的。总体而言,在Drupal 7的主题化提供了更强的功能,但却是以复杂性为代价的。主题化的显着变化在于:
1。 JQuery 1.8 被纳入 Drupal核心。 
2。 文件和图像功能的变化使主题化更加容易。 
3。 以表为基础的主题将被删除。Bluemarine 和 Pushbutton 主题将不再保留。
4. 可通过复制通向drupal.org主题的链接,添加新的主题。
5. 模板经过清理,命名的改变让其中的项目更易理解。例如,左/右侧边栏成为主边栏/次边栏。
6。 为所有主题函数增加了预处理函数。以前只模板拥有预处理函数。预处理函数也可以通过设置theme_hook_suggestions或theme_hook_suggestion,定义要使用的主题重写建议。
7。 增加了最外层模板以处理渲染功能。 
8。 隐藏,渲染和显示函数具备极大的灵活性,使主题设计者能够以任何次序,任意多次地输出内容,如:提交按钮可以在表单的顶部或底部。 
9。 函数hook_page_alter允许在网页内容呈现前对页面主题项目进行最后的修改。任何修饰接口均可使用。 
10。 更多区块。 
11。 硬编码的变量更少,因为这些现在都已经以区块的方式出现。即使是一个网页的主要内容,也是区块。
12。 主题覆写更灵活。可以比以前版本更多地实现本地化。 
13。 两个新增函数,可使节点的打印输出更精细:render()和hide()。以前,精细控制打印输出的粒度非常困难。
14。 html.tpl.php是一个新的主题页面包装模板。它成为最外层的容器,在Drupal 6 中page.tpl.php 得以实现。 事实上,html.tpl.php 调用了 page.tpl.php。不幸的是,迁移Drupal 6主题到Drupal 7的文档是落后于代码的开发。请大家关注 此页 以追踪工作的进展。在编写本报告时,已经有不止52项修改。
单元测试
测试模块已从SimpleTest迁移到核心模块。成为工作流程的一个组成部分。大大改善了核心模块的开发方式,增加了开发者完成重要API修改的信心。Drupal的测试重点,不是单元测试,而是功能测试。这意味着测试的编写注重接口的整体测试,而不是单独的函数或者代码块。

安全

Drupal拥有良好的安全纪录,Drupal 7实现了以下改进:
1。 受保护的cron.php - cron只会在提供相关密钥的情况下运行。
2。 使用更强大的密码哈希值,并兼容便携式PHP的密码哈希框架。以前Drupal使用的是MD5,离安全还有很大的差距。 
3。 对登录尝试进行限制,以防止强行密码猜测。同时,实现了更好的过载控制API,允许限制用户对资源进行访问的时间窗变量和标识符。 
4。 此前,只有第一个用户(管理员,又名'用户/ 1')有权更新站点,现在有一种新的权限,允许其它用户进行网站更新。 
5。 节点访问也被彻底改革,实现了更精细的节点查看、编辑、删除和创建控制。该节点访问接口已改进,更加成熟和灵活。

文件和图像管理

文件API提供了一个抽象层,可访问几乎任何普通的文件类型。它使用PHP流包装,允许多种模块之间更多的协作。因此,模块之间交互时,通常不再需要了解其它模块对文件系统的调用。

流是一种资源对象,具备可进行流处理的特征。可以通过线性方式读取或写入,可通过fseek()在其中任何位置进行检索。在Drupal 7中,流是通过scheme://target的方式引用的。Scheme代表协议或 编码。例如,'http','public'和'private'。target 代表所需资源,可以是文件系统(public://images/logo.jpg)中的文件。这些资源的处理工作由幕后的PHP包装函数完成。

图像处理

在过去,实现图像处理需要很多工作,要下载并安装ImageAPI,ImageCache,FileField或ImageField等更多此类模块。所幸这些功能已被添加到Drupal 7,使用户们的生活更容易(图6)。

字段和令牌

内容构建工具包(CCK)是一个用户贡献的模块,可为内容类型增加字段。在Drupal 7中,CCD已被添加到核心中,称为 Field API。字段可以添加到任何实体,并可以包括RDF信息。Field API还提供了灵活的存储后端,使字段可以与第三方系统更好地配合。

令牌是另一个被集成到Drupal 7中的用户贡献模块。提供更有意义的值,取代文本占位符,实现了可扩展的API函数集。令牌遵从 [$type:$name]的格式,其中 $type 是令牌的一种通用类型 (如 ‘节点’、 ‘用户’、 或 ‘评论’) ,$name 则是指定点位符的名称。例如,[节点:标题]。令牌也可通过[$类型:$指针:$名称]的形式进行链接,其中$类型是正常的令牌类型,$指针是指向另一个令牌类型的引用,而$name是一个给定的占位符名称。例如,[节点:作者:邮件]。在该示例中,‘作者’是指向创建节点的‘用户’帐户的指针。‘邮件’是任何‘用户’可用的一个点位符。字段值也可以被访问,例如:[node:my-cck-field:2]。最常见的用户令牌应用,是自动生成自定义网址。令牌也被用于高级操控,在有新评论添加到其内容时,邮件通知用户。

系统要求

Drupal 7要求的最低版本为:PHP 5.2 和 MySQL v5.0.15;PHP 内存使用:40 - 64MB。请参阅 这里 的系统需求列表。

升级

从Drupal 6到新版本的升级需要不少工作,但已经有一些文档可供参考。对于开发人员,代码升级模块可帮助他们移植代码到Drupal 7。

性能

Drupal 7的运行速度会比 Drupal 6慢。从本质上讲,Drupal 7为可扩展性牺牲了速度。这是由于更多大的公司(财富500,如微软,IBM和Gap Gemini)得以参与Drupal项目。但是,未缓存的网页性能有所提高。所以匿名用户会掌握您网站速度更快。对于登录用户,Drupal的系统会进行更少的查询,以实现更好的性能。

总之,期待中的Drupal 7发布,无论对于用户,还是开发人员,都是一个重要的里程碑。对用户而言,Drupal 7解决了一些用户体验问题,使新用户能够更容易地体验到Drupal的丰富性和强大功能。对开发人员而言,Drupal 7提供了建立网站所需要的灵活性和定制能力,可满足个人网站和大型企业网站部署的需要。最后,用Drupal创始人Dries Buytaert的话说,“奇迹正在发生”。