Drupal 7基础教程

Drupal7基础教程,最初于2011年编写并出版,是一本向Drupal伦敦大会献礼的图书,并于2012年5月,以遵守创作共享协议2.0许可的情况下,将其贡献到drupal.org。

我们鼓励大家,编写并改进本书中的内容,修正文字错误、更新过时的技术信息、添加与本书有关的新的技术文档。

希望大家共同参与。

本文档的最初版本来自于 Drupal7:基础教程,作者Johan Falk,NodeOne公司的。中文翻译,thinkindrupal.com,老葛。

• 介绍
• 卷A:Drupal核心基本概念
• 卷B:Drupal中的信息结构
• 卷C:其它常用模块
• 附录1:安装、代码基本管理、主题
• 附录2:Drupal和多语言

原文出处:http://drupal.org/node/1576418
中文翻译:http://www.thinkindrupal.com/node/4835
创作共用许可署名 - ShareAlike2.0

Drupal版本:

导言

首先,恭喜你!为什么要恭喜你呢?你选择来阅读本书,这本身就意味着你对学习Drupal有兴趣。Drupal是一个强大的、灵活的、易于管理的、富有灵性的网络发布系统。选择Drupal,就意味着你选择了挑战,挑战就意味着痛苦、挫折、与成长,而所有的这一切,都将成为你自身的宝贵的经历。如果你能驾驭了Drupal,为你所用,那么你网站的用户,比如管理员、普通用户,他们会与你的网站一起进步、成长。

当你学习Drupal的时候,你会发现,有太多的东西需要学习,一辈子都学不完的。至少我在学习、使用Drupal的过程中,是这么认为的。和Drupal打了这么多年的交道以后,现在,我仍然需要学习新东西,并且我到现在为止,还没有感觉到学够了。

通过这么多年的积累,我越来越相信,存在一个学习Drupal的捷径,它比大多数的其它方法(如果不是全部的话)都要好。当你开始学习Drupal的时候,你首先需要学会如何使用一些常用模块。如果你不熟悉这些重要的模块,你经常会重复的去发明轮子,而且你无法充分的利用Drupal框架的优越性。如果你掌握了这些模块,使用它们,你就可以快速并有效地构建各类实际网站的结构。有了这些模块作为基础,就好比你学会了九阳神功,再学习其它门派的武功,就非常轻松了;更确切一点的说,就是学会了蹲马步,马步扎实了,学其它的就容易了;总之,学会了这些以后,无论是你想学习模块开发,还是构建界面,或者管理一个Drupal项目,以及其它的各个方面,都会轻松很多。
这本书里面,包含了Drupal核心的各种技能,如果你要成为Drupal开发者的话,这是必须要学的。我们这里也没有百分百的覆盖所有的方面,我们的目的是,为你的继续学习打下一个坚实的基础。

我希望你在学习Drupal的过程中,也能找到各种各样的乐趣,就想我当初学习Drupal一样,我也非常希望能够看到,你也能够为Drupal社区带来新的概念,新的技术。Drupal会因为您的共同参与而成功。

致礼

约翰•福尔克

本文档的最初版本来自于 Drupal7:基础教程,作者:NodeOne公司的约翰•福尔克,。中文翻译,老葛。

原文出处:http://drupal.org/node/1576420
中文翻译:http://www.thinkindrupal.com/node/4836
创作共用许可署名 - ShareAlike2.0

 

Drupal版本:

什么是Drupal?

    什么是Drupal?这是我们遇到的第一问题,也是最简单的问题:Drupal是一个网络内容发布系统。Drupal是一个用来管理网站内容的程序,或者说是一个web应用程序。

    但是这只回答了一部分。Drupal不仅仅是一个用来管理网站内容的工具,它还是一个用来构建工具的工具。基于Drupal,我们可以构建出来更多的工具,所以我们可以把Drupal看作是一个元工具。从某种意义上来说,我们可以把Drupal看作一门编程语言。

    但是我们仍然没有回答圆满。那些与Drupal打了多年交道的朋友,他们有时候,还会告诉你,Drupal是一个社区:一批分散在世界各地的人,为了一个共同的目标,联系到一起。这个社区拥有50多万的成员,大家为了一个名叫Drupal的项目共同协作,贡献各自的力量。有一部分人,努力把Drupal打扮的更漂亮一些;有一部分人,在编写和构建新的功能;还有一部分人,编写文档、翻译、以及回答Drupal新手的各式问题。有一小部分人,在社区内非常知名,他们是Drupal社区的超级明星。社区大部分的人,大部份都把Drupal当作一个内容发布工具,但是这些人对Drupal仍然是有贡献的,他们通过提问、报告bug、提交新的功能请求,来帮助开发者完善程序。

    还有一部分人,他们刚刚使用Drupal,但是却会在将来Drupal的成长和开发中扮演关键作用。这个人,有可能就会是你哟。

自由软件

    Drupal是基于GPL协议发布的开源软件程序。这意味着,与其它发布系统相比,Drupal是免费的。下载Drupal、使用Drupal,都不收费,继续使用,也不会收取年费。

    除了价格以外,对于那些商用CMS,你可以看一下他们的许可协议,里面有种种的限制,比如你最多将这个程序安装到5台计算机上,有这样的数量限制,你还不能修改人家的程序,程序里面所包含的专利技术,你也不能乱用。

    开源许可协议,是对闭源软件种种限制的一种回应。开源许可协议允许我们,想用多少就用多少,没有数量的限制,还允许我们阅读源代码,了解它的构建原理,还允许我们自由的分发软件的拷贝,比如传给自己的朋友,她还允许我们修改程序、完善程序、在它基础上构建出更好的程序。如果我们使用Drupal构建网站的话,我们还可以为正在使用的其它系统编写插件,而不用担心侵权起诉问题。

    开源背后的哲理非常简单:共同努力,才会更好。

    在相当长的时间内,开源软件仅仅是付费软件的一个补充---通常只有满脸胡须的计算机极客一族才会使用。但是今天,形式发生了变化,全球十大网站之一的Wikipedia,就运行在开源软件之上,并且网站上面的内容,也是基于开源协议的;还有,世界上一个顶级的网络内容发布系统,也是开源的,这就是我们的Drupal。

 

原文出处:http://drupal.org/node/1576422

中文翻译:http://www.thinkindrupal.com/node/4837
创作共用许可署名 - ShareAlike2.0 

从本书中可以学到什么

尽管Drupal是免费的,并且有很多业余爱好者在使用,但Drupal绝对不是一个小儿科的儿童玩具。Drupal系统本身就相当复杂,即便是专职的Drupal开发者,也需要花费很多年的时间,才能掌握Drupal中的一部分。对于大部分Drupal开发者来说,能够跟得上Drupal技术进化的脚步,就已经非常不错了,昨天我们还在用CCK的,今天就进化成为了Field,对于Drupal开发者而言,也需要保持与时俱进。

这本书的将近一本的内容,都在讲解一些基本概念,这是各种Drupal开发者都应该掌握的---不管你是模块开发者,还是设计师,以及服务器、数据库管理优化人员,当然也包括网站构建者,这些概念,你都需要掌握。

本书的另一半,主要讲解如果通过点击Drupal的管理界面,综合运用一些常用的模块,来构建网站功能的,所以我们面向的对象是Drupal网站的构建者。如果你想成为一个Drupal模块的开发者的话,你也会发现本书的第二部分,对你也是很有帮助的。

本书的内容,主要讲解功能和信息结构---我们可以把这些看作一个网站的骨架。对于用户界面、主题的修改制作,则很少涉及。例如,我们这里就没有讲解如何在Drupal中安装一个所见即所得(wysiwyg)编辑器。我们这样做,也是有道理的。构建网站的信息结构,就好比盖房子时候的打地基,是我们首先要做的,我们不可能地基还没有打,就去装修房间。如果你认为,你已经掌握了本书中的大部分内容,那么此时再让你去安装一个所见即所得编辑器的话,就没有一点困难了。如果,你要使用所见即所得编辑器上传图片,你在做这项工作的时候没有考虑底层的信息结构,如果将来你在网站的其它部分,想要复用这里的图片的话,你就有可能会遇到问题。

Drupal的方式(Drupal way

本书涉及的内容,不需要你熟悉编程。这里面,讲解到的最高深的编程,就是HTML链接,而即便是HTML的编程,也仅仅在若干个地方提到。但是,对于想成为Drupal模块开发者的朋友,也是很有帮助的。为什么呢?

Drupal的一个强项,就是用很少的编程,就能构建出来一个非常专业的网站。我们知道,有很多通用的模块,比如Views、Rules等等,通过使用它们,就可以方便的扩充Drupal的功能了。通过使用这些模块,我们可能一行代码都不写,就能构建出功能丰富、外观精美的网站,如果定制代码的话,基于这些模块,我们就可以少写很多代码,编写出来小而美的模块,从而达到事半功倍的效果。

如果一个开发者,不了解Drupal的这些常用模块,那么他就会常常陷入重复发明轮子的泥潭。他编写的代码,除了他自己,知道是干什么的以外,就没有外人熟悉,而里面的很多代码,其实很多本身是没有必要的,也没有什么用处的。如果你作为一个模块开发者,非常熟悉这些常用的模块,这个时候,你就可以使用短小精悍的代码,来扩展现有的功能了,这就是我们津津乐道的小而美,小而美。这样的好处很多,由于代码本身短小精悍,这就方便了我们日常的维护和更新,同时,会有更多的机会,在别的地方复用这些代码,有时候还会有意外收获,比如你将模块贡献到了Drupal社区,其它开发者,可能会从你的模块里面找到新的用法,可能连你开始都没有想到的用法。

使用常用模块,通过点击和配置,来构建网站,而不是编写自己的模块,这种思想,我们有时候,也把他叫做“Drupal的方式”(Drupal way)。“Drupal的方式”包括:

  • 尽可能的使用常用的Drupal模块来解决问题。
  • 选用那些易于与常用模块集成的模块,而不是选用一些孤立的安装量比较小的模块。
  • 即便是需要编写代码,我们也应该思考,如何充分的利用这些常用模块。
  • 尽可能的,与Drupal社区分享你的解决方案。

在“Drupal方式”的背后,所蕴藏的哲理,和其它开源软件是一样的---共同参与,才会更好。

    按“Drupal的方式”构建网站,好处多多,这些常用模块会不断地成长,整个社区进一步的增强,除此以外,还可以带来直接的经济利益。比如说,网站的维护和升级。如果我们的网站,是构建在这些常用模块的基础之上的,由于有成千上万的开发者都在使用这些模块,无论是发现和修正BUG、还是完善升级路径,还是开发新的功能特性,我们能够从别人的贡献之中获益。假如一个网站,主要功能都是基于自己开发的代码实现的,无论是BUG的发现和修正,还是新功能的开发,都需要自己来做,而且很有可能,他们无法将他们的站点迁移到Drupal的下个主版本上。还有比这更坏的情况,如果他们修改了Drupal核心代码,此时他们甚至无法应用Drupal安全团队提供的安全更新。简而言之,这个世界上,只有几个人知道它们的站点是怎么工作的,这些站点慢慢地就成为了易碎品。网站的开发者,完全忽略了Drupal已有的功能,他们在构建一个自定义的发布系统,就像以前的很多开发者一样。我们一定不想重蹈覆辙。

    这本书,是完全基于Drupal方式的。这里所提到的模块,都是Drupal社区中最常用的,经过无数人检验了的模块。我们这里列出四个模块---Views、Flag、Rules、Panels,这是社区中的大部分成员,都认可的Drupal中的最重要的模块,这个地球上,无数多个站点,都是建在它们的基础之上的。

原文出处:http://drupal.org/node/1576430

中文翻译:http://www.thinkindrupal.com/node/4838 
创作共用许可署名 - ShareAlike2.0

Drupal版本:

我该如何阅读此书?

这本书分为几个独立的部分:

  • 卷A,这一部分涵盖了使用Drupal时所需要的基本概念和技巧。这里面的每一章,在结尾部分,都带有一些练习或作业,通过这些练习,你可以在实践中快速的掌握这些概念。
  • 卷B,这一部分涵盖了Drupal的一些高级技术。除了Drupal核心的介绍以外,这里还包括了Views模块,只有搞懂了这个模块,才能充分的理解和利用Drupal的能力。这里面的每一章,在结尾部分,也都带有一些练习,不过这些练习难度系数大一点,所需的时间也多一点。
  • 卷C,是卷B的姐妹篇,如果你已经掌握了卷B中所讲到的各种技术,那么接下来就应该学习卷C了。在这里我们主要介绍三个新的Drupal模块,这里所讲的每一个模块,在构建Drupal时,都扮演着关键作用。卷C里面,多了一些引用,少了一些介绍,但是这里面给出了如何使用模块的示例,在每一章的结尾,都有一些练习,帮助我们学习如何使用这些模块。
  • 附录1,这里面主要讲了Drupal的安装、模块的安装、主题的安装。同时介绍了一种方式,如何通过版本控制来管理Drupal中的配置。
  • 附录2,介绍了如何在其它语言下面使用Drupal,非英文环境下面。

 

提示:在这本书里面,有很多像这个提示一样的评论。它们通常包含了一些更高级的技巧,只有当你读了第2遍、第3遍的时候,你才会更好的理解它们,所以说当你阅读第一遍的时候,完全可以跳过这些提示。

 

原文出处:http://drupal.org/node/1576432

中文翻译:http://www.thinkindrupal.com/node/4839
创作共用许可署名 - ShareAlike2.0

Drupal版本:

在编写本书时

在Drupal7的第一个正式版本发布前不久,作者开始编写的本书。在这个时候,有些模块已经有了稳定版本,一些模块正在开发它们的Drupal7版本。本书当中的例子,是基于编写本书时,所有可可用的模块,在有些地方,对于一些模块将来的一些功能,我们也做了描述。

当你阅读Drupal7基础教程时,很多这样的问题应该都得到了解决。

提示:由于本书现在已经贡献给了Drupal社区,所以你也可以更新和改进本书。

原文出处:http://drupal.org/node/1576446

中文翻译:http://www.thinkindrupal.com/node/4842
创作共用许可署名 - ShareAlike2.0

Drupal版本:

练习和用户场景

在卷B和卷C里面,文档站点和新闻站点的相关练习,都是以用户场景的形式呈现的。用户场景是描述开发任务的一种方式,这种方式在网站开发和软件开发中日趋流行。用户场景的核心是,是对网站的特定类型的用户在网站上面想要做什么的一个简短描述。把任务描述成为用户场景,能够更好的帮助我们理解实际的功能需求,而不是关注具体的技术方案。

用户场景是敏捷开发的重要组成部分,是现代软件开发中的一个核心概念。你可以到维基百科上面的敏捷开发里面找到一个简单介绍http://en.wikipedia.org/wiki/Agile_software_development。

新闻站点套件里面只包含简单的用户场景信息,而文档站点则包含了丰富的描述,包括:

  • 一个简洁明了的标题,方便查找和记住练习。
  • 一个有关练习的实际用户场景。这是一段描述:谁能做什么东西,他们应该怎么做,已经为什么需要这个功能。在敏捷开发中,为什么,占有很重要的位置,因为它能够帮助开发者选择最佳的技术解决方案。
  • 一个截图,用来显示示例和结果。
  • 如何实现,里面列出了具体的步骤。你可以按照这些步骤,一步一步的跟着练习一下,最后看一下是否完成了整个用户场景。通常这些步骤里面,还包含一些用户场景里面没有涉及到的任务,所以,你最好把这部分好好的读一下。
  • 一些预备条件。仅限于简单的任务。如果任务是按照顺序进行的,那么后面的任务就没有附加的准备条件的。(有关练习套件的详细,可参看下面内容。)
  • 一个建议方案,通常是解决任务的最自然的方式。方案中的每一步,都会给出本书中的对应部分,在那里可以找到本步的具体介绍。
  • 通过评论给出一些缺失的细节,或者技术方案的替代方式。

这里建议的解决方案,在作者看来是最自然的,但是这并不意味着绝对就是,可能还有别的方案,从特定的角度来看,比这里的解决方案还要好一些,在Drupal中,解决问题的办法,从来不只有一个,办法很多。在有些用户场境里面,我们还给出了一些替代方案。

原文出处:http://drupal.org/node/1576444

中文翻译:http://www.thinkindrupal.com/node/4841
创作共用许可署名 - ShareAlike2.0

 

Drupal版本:

练习套餐

这本书包含了很多的练习作业,通过这些练习,我们就可以更好的实践新的Drupal技能了。所有的练习,都属于一个练习套餐。这里有三个套餐:

  • 老板套餐,用在卷A中,在这里,为大家布置了一些简单直观的任务,这些任务的目的是让你熟悉Drupal的管理和编辑界面,而不是去构建完整的Drupal站点。
  • 文档站点套餐,分布于卷B和卷C当中,用来为某个社区构建一个站点,帮助他们管理在线文档。尽管这些练习,适合功能和外观一起完成,但是大部分练习只需要我们安装一下就可以了,不强迫大家按序列完成所有的练习,当然你也可以全部完成,也可以有选择的完成一部分,随缘。
  • 新闻站点套餐,同样分布在卷B和卷C当中,用来构建一个用于发布新闻的站点。这些练习适合于一些高级用户,通过这些练习,我们可以探索Drupal里面的不同解决方案。每一个练习,都包含一个用户场景和一个如何实现的演示说明。这里没有建议的解决方案。只有一些评论。

提示:文档站点套餐里面的所有练习,都有相应的教学视频,里面包含要实现的功能,以及如何在Drupal里面实现这些功能。这些视频大家可以在线观看,网址nodeone.se/learning-library

原文出处:http://drupal.org/node/1576442

中文翻译:http://www.thinkindrupal.com/node/4840
创作共用许可署名 - ShareAlike2.0

Drupal版本:

更多Drupal学习资源

通过这本书的学习,可以为你的Drupal学习打下比较坚实的基础,但是本书中只包含了Drupal的一小部分内容,想要学习更多的Drupal知识,就需要更多的资源了,这里给出一些常用的:

  • drupal.org:这是Drupal社区的根据地,是Drupal社区的中心。这里面包含了一个论坛、模块和主题的项目页面,以及一个强大的搜索功能,帮助我们查找各种Drupal资料。
  • Drupal文档:这是Drupal的官方文档,里面包含了各种操作指南和具体步骤,无论是初学者,还是资深的Drupal开发者,都应该到这里多看看。
  • groups.drupal.org:这是Drupal社区成员聚在一起讨论Drupal的地方。这里面的小组,既有按照地理划分的,也有按照兴趣划分的
  • Internet Relay Chat (IRC):Drupal有很多IRC频道,供大家聊天,里面通常有上百号用户。即时聊天,对于获取Drupal技术支持,和认识Drupal社区成员,非常有用。这个页面包含了有关IRC的更多信息、相关的Drupal频道、以及如何访问这些频道。
  • Planet Drupal:这个页面聚合了有关Drupal的新闻,从世界各地的Drupal博客聚合而来。
  • Think in Drupal:这个博客网站,站长为老葛,里面提供了老葛翻译编写的很多Drupal技术文章,在中文圈内具有较高的参考价值,同时也是Think in Drupal系列Drupal中文资料的官方网站。

原文出处:http://drupal.org/node/1576448

中文翻译:http://www.thinkindrupal.com/node/4845
创作共用许可署名 - ShareAlike2.0

Drupal版本:

致谢

在编写本书时,收到了来自NodeOne同事的各种帮助。我要特别感谢的CEO Thomas Barregren,在他的鼓励和说服我下,我才有了编写本书的动力。还要感谢我的同事Rustan Håkansson,他为本书提出了很多宝贵的改进意见;感谢我的同事BJ Wilson,非常耐心的帮助我改进了语言语法问题,如果本书中仍然有类似问题的存在,绝对是我的问题,如果您觉得行文流畅,这要归功于同事BJ。非常感谢Matts Hildén,帮助我把最初的电子版转成最终的印刷版。

    另外还要感谢AJ Jack/AlternateRoute,他帮助修正了书中的很多印刷错误和语言错误。更新后的版本,构成了这个在线文档的基础。

    还要感谢Kate Seldman/kwseldmanMarc Isaacson,他们对在线版本进行了很多的改进和修正。

原文出处:http://drupal.org/node/1576450
中文翻译:http://www.thinkindrupal.com/node/4847
创作共用许可署名 - ShareAlike2.0

Drupal版本: