作为初学者应该如何开始学习并成为Drupal开发专家?

As a beginner how should I start to learn and become an expert in Drupal development?

我是一名 PHP 程序员。我是 Drupal 的新手。我想成为一名 Drupal 开发人员。我应该开始学习第 7 版还是第 8 版。

作为 Drupal 开发专家,我建议您观看 Drupalize Me and follow Getting Started - Background & Prerequisites (Drupal 8) will you much。当然,光看书是不够的,你应该多练习,写一些自定义模块,使用Drupal API等等

也在跟踪 Weekly Drop 能不能请多多指教。我经常查看他们的帖子。

Drupal 7 与 Drupal 6 有点相似。另一方面,Drupal 8 在后端看起来像 Drupal 7,但在底层差异很大。 D8 基于 symfony,更面向对象,可能编写得更好(更干净),但也更耗资源。

Drupal 7 是真正成熟的版本,您拥有范围广泛且经过良好测试的模块,可满足各种需求。它也可以正常工作 PHP 5.x,但是在 PHP 7.x 上,某些模块可能会拒绝工作 - 我不建议 运行 Drupal 7 站点 PHP 7.x.

Drupal 8 还不够成熟,D7 中的许多模块在 D8 中仍然缺失,或者处于测试阶段。 PHP 7.x D8 支持得更好。

因此,由您决定。如果您需要稳定的 CMS,现在有很多可用的模块并且您不关心 PHP 7.x 那么 D7 适合您。

但如果您打算长期使用它,在 PHP 7.x,想要一些面向未来的解决方案,那么最好选择 D8。请记住,许多托管公司计划仅保留 PHP 7.x 并撤销对 PHP 5.x

的支持

TL/DR:到目前为止,Drupal 8 是更好的选择!

绝对选择 Drupal 8! Drupal 7 仍在使用,但我认为现在大多数人都在切换到 8。几乎所有的 contrib 模块现在都可用于 8。 我唯一能想到的我可能(但可能不会)使用 D7 的是商业网站(网上商店)。上次查了一下,这些模块还没有全部移植到D8,但是大部分都可以用。

1) 弄清楚如何在您的计算机上安装 DrupalVM,或者使用 composer 和 drush 获得支持 Drupal 的虚拟主机。

2) 在您的 drupalvm 或虚拟主机上设置站点并进行实验,Drupal 中的基本站点构建非常简单

3) 找到一些预制(免费)主题并安装它们,您可以从那里创建自己的主题或只编辑现有主题

4) 很多东西已经存在,几乎所有你能以贡献模块的形式想到的基本功能,使用它们!

5) 如果您想创建自己的网站布局,请开始学习 CSS、SCSS、Twig、JavaScript、...

6) 如果您想在您的网站上创建自己的高级自定义功能模块,请开始学习 PHP

您无需编程即可创建美观大方的 Drupal 网站。

如果您想学习编程,最好学习 Laravel 或 CakePHP 或任何类似的框架。

尽管您也可以在 Drupal 中进行很多自定义编程。

类似于“How do you eat an elephant”的问题(答案:一次1个字节...),我认为你应该尝试制定一些计划(路线图),基本上由4个主要阶段组成:

  • 开始的先决条件是什么?
  • 训练计划会是什么样子?
  • 如何获得更多经验?
  • 如何瞄准黄金摇篮?

(许多)关于每个阶段的更多详细信息如下...我很确定这是一种有效的方法...主要是因为这是我自己开始使用 Drupal 的方式...虽然我'我仍在努力完成我的 Drupal 之旅(继续获得更多 Drupal 经验)。

第 1 部分 - 开始的先决条件是什么?

0。 HTML, PHP, JS, CSS知识

如果您已经了解 HTML、PHP、JS、CSS 等,它肯定会帮助您使用 Drupal。

但根据我的经验,这些技能并不是快速掌握 Drupal 的最重要技能。您可以“即时(在工作中?)”了解它们。具体到 PHP,在 Drupal 的上下文中,你只需要知道你可以用 PHP.

做的所有事情的一个子集

1。所需的基础设施

  • 显然您需要一台计算机,以及(至少偶尔)有效的互联网连接和一个电子邮件 ID。至少把Drupal、贡献的模块等下载到你自己的电脑上。

  • 稍后,当您有一个准备向全世界展示的网站时,您还需要:

  • 托管该 Drupal 站点的托管服务提供商。

  • 一个域名(DNS注册)。

  • 要真正能够在您自己的计算机上使用 Drupal 网站,您需要像 pre-requisites 这样的典型 Drupal 软件。以下是所谓的 'stacks'(通常也称为 WAMP、MAMP 或 LAMP)的列表:

  • 适用于您计算机的操作系统(Windows、Mac 或免费的 Linux)。

  • 一个网络服务器(比如免费的 Apache,...)。

  • 一个 DBMS(就像免费的 MySQL)。

  • PHP(这里没有其他语言,但是...免费)。

  • 一些典型的实用程序,如:

  • .tar.zip 等存档格式解压文件的东西,因为 Drupal 及其贡献的模块是以这些格式下载的。

  • 文本编辑器(如记事本、记事本++、您最喜欢的编辑器等)。

  • FTP 客户端,例如 FileZilla(将您的站点从本地环境上传到实时服务器)

  • 设置所需的 pre-requisites(如上一个项目符号)可能需要一些工作(and/or 是一个挑战)。但是,有一些很棒的软件包可以大大减少所需的工作量(和所需的技能),例如(选择您喜欢的任何选项 and/or 适合您,列表不完整!):

  • VirtualBox 与 QuickStart 相结合(奖励:附带 GIT、Drush 等 pre-installed)。

  • XAMPP.

第 2 部分 - 培训计划会是什么样子?

2。攀登 Drupal 阶梯

当有人问我如何开始使用 Drupal 时,我总是指向 Climbing the Drupal ladder(来自著名的 Dries ...)。虽然只有一张图,但里面的信息量和价值却很大(一张图胜过1000字...)。

这是一个非常适合在“Drupal 入门”中使用的大纲 session。稍微熟悉 Drupal 的人应该也能解释其中提到的大部分项目。

它还有这些变体:

  • DrupalLadder.org 网站,其中包含(或 link 至)课程和材料,以帮助人们了解 Drupal 并为 Drupal 做出贡献。该站点帮助 Drupal 用户组开发、共享和开发用于学习冲刺和问题冲刺的材料。

  • Drupal Ladder 安装配置文件(仅限 alfa 版本,缺少一些安全更新...)。

3。熟悉贡献的模块和主题

这些天,大约有 17K 个贡献模块 and/or 主题。有数吨(数以千计...)的好东西 modules/themes,还有很多隐藏的宝石。因此,在开始编写自定义 modules/themes 之前,请三思(或 3 次?)。问问自己“谁会在几年后维护它们?”。

但是,您经常会 运行 加入不止 1 个贡献的模块或主题。这是一个示例:您应该使用哪个贡献模块在 Drupal 中创建图表? ...做出您的选择,例如通过 Comparison of charting modules。但是,如果您正在寻找,您会选择哪个模块:

那时您需要制定一些标准来选择最合适的标准,如“Maintenance scorecards”中所示(您可以将它们用于许多其他 Drupal 主题,因此不仅仅用于图表)。

4。浏览量/旗帜/规则/消息

很少有网站不使用有关视图模块的(惊人的)Views module, which however isn't obvious to get started with (there is so much to learn about it). I learned a lot about this module via the great, and free, set of 30 video tutorials

结合Flag, Rules and Message modules, a lot of site functionality can be delivered already. To get started with Rules, checkout the 32 (!!!) great, and free, video tutorials Learn the Rules framework, organized in 7 chapters. There is a similar set of 8 video tutorials about the Flag模块。

因此,请确保 knowledge/understanding 在几乎所有站点中都可以使用那些“神奇 4”来完成所有令人惊奇的事情。几个样本:

5。研究可用文档

有关 Drupal 和许多贡献模块的文档以各种格式提供,例如:

  • 贡献模块附带的 Readme.txt 文件。
  • 可用于许多模块的社区文档,通常可以通过模块项目页面上的“阅读文档”link 找到(但并非所有模块都有,尽管它们应该有)。
  • 所选模块附带的高级帮助文档,如果您安装了 Advanced Help 模块,则可以从您的站点访问这些文档。
  • Drupal Answers.
  • 令人印象深刻的一组(很棒的)问题和(很棒的)答案

6.学习在 Drupal.org.

上使用问题 queue(s)

Drupal.org 上的每个贡献模块都有一个“项目页面”,位于类似 https://www.drupal.org/project/issues/abc 的地方,而 abc 是模块的“命名空间”(并不总是完全相同作为项目页面的标题)。可以在项目页面上找到对应的“问题 queue”的多个 link,或者只使用 https://www.drupal.org/project/issues/abc.

之类的 URL

问题 queue(问题的搜索结果)提供了各种搜索功能 and/or 过滤器。即使您不是在“搜索”某个特定问题,而只是浏览这些问题,您也可以通过查看这些问题学到很多东西。通常,“某些”问题中包含重要(关键)信息,但(还)没有出现在与模块相关的文档中。

就我而言,当我第一次开始使用 Forena 时,我不断迭代它的问题 queue,偶尔发布新问题。

作为模块(共同)维护者,我尝试通过这些社区文档页面中提到的 'issues' 列表(hyperlinked)向模块用户指出这些有趣的问题: Charts HowTos, Forena HowTos, Chart HowTos. Note: later on I started adding similar links to interesting question on Drupal.SE 还有...

7.从播客中了解 Drupal

有一些专门针对 Drupal 的有趣播客,这些播客还有一个很棒的网站,其中包含各种 hyperlink 内容,涉及每个播客所涵盖的主题。虽然有很多,但这是我最喜欢的(+ links 回答我通过它们学到的主题):

仅供参考:我在遛狗时“从这些播客中学习”(+ 获得想法)。你也可以在上下班、锻炼、割草、做饭等时候这样做

8。了解 Drush

在尝试飞行之前先学会走路...因此,使用典型的管理界面 (UI) 开始构建/维护 Drupal 站点。如:

  • install/enable 个模块。
  • 正在清除缓存。
  • 正在更新站点信息。
  • 您在构建的大多数站点中一直使用的典型模块。
  • 等等

然而,当您觉得自己有足够的经验,并且开始足够了解和理解 Drupal 时,您应该投入学习 Drush。完成之后,您会想知道“如果没有 Drush,我怎么能在 Drupal 中工作呢?”。对于上面的每个项目符号(以及更多项目符号),都有一种方法可以使用 Drush 来完成。

9.了解 GIT

一个 Drupal 站点主要由 2 个主要部分组成:数据库(通常在 MySQL 中)和 代码(主要是 PHP,还有 JavaScript、CSS 等)。 Drupal 核心,它的贡献模块,以及自定义模块都在“代码”中。 Git 用于该代码的“软件变更管理”(SCM) 部分。

强烈建议“尽快”开始使用 GIT(使用之后,您会想知道“如果没有它,我将如何在 Drupal 中工作?”)。 Git 通常用于 topics/tasks 例如:

第 3 部分 - 如何获得更多经验?

10。选择种植区域

Drupal 很大,实际上很大。没有人(即使不是 Dries)可以 do/know Drupal 中的一切。因此,请尝试找到您感兴趣的领域(或几个领域)。如果可以,请寻找您在其他 (none-Drupal) 领域也已经体验过的东西。

就我而言,它是(是)软件变更管理和商业智能(报告)。这就是我现在 'involved' 在(图表、报告等)中贡献的模块的原因……以及我对即将到来的“配置管理计划”的兴趣。

11。从经验中吸取教训...和错误

跟上 Drupal 速度的另一个重要方面是,您有时间“从经验中”和“从错误中”学习。从网站建设者开始似乎是最明显的起点。

从那里您可以移动/发展成为 Drupal 开发人员 (back-end)、Drupal Themer (front-end) 或 Drupal 多面手等角色。这似乎也符合最近的 Drupal 认证计划。

备注:如何开始担任这些角色中的任何一个,似乎是out-of-scope这个问题。

12。与其他人取得联系 Drupal-fans

你一定看过这个:“为软件而来,为社区而留”。如果没有,你去过www.drupal.org吗?在主页的左上角看到了吗?如果您是 Drupal 的新手,您可能想知道它的真正含义。以下是体验的一些建议:

13。 ...

此项目符号有意留空...因为它的“编号”...您是否注意到编号从 0 开始? ...以弥补这个缺失的数字...

14。参加 Drupal 会议

与其他 Drupal 同行面对面会面需要更多的努力(并且更昂贵),但您会在 return 中得到很多。以下是一些可供选择的选项:

  • 参加 Drupal Cons, these are big conferences, about 1 in every continent every year, relatively expensive (travel, hotel, registration). Common language is English (though there are exceptions like in Latin America I believe it's in Spanish). Next one coming up is in Barcelona,2015 年 9 月 21 日至 25 日(我已注册...)。如果你做不到(或者错过了一些 session 在那里忙着做网络等),去找关于几十个 session 的视频。

  • 参加 Drupal 训练营,这些训练营更本地化且(方式)更小。它们通常按国家 and/or 州,以您自己的语言显示。

  • 参加 Drupal Sprints,在那里您不仅会做出贡献(=回馈社区),还会发现其他人愿意提供帮助,在需要的地方指导和指导您。

第 4 部分 - 如何瞄准黄金摇篮?

15。别等乔治,像乔治一样

George@Drupal.org 是(至少对我而言)在 Keynote (from Dries) (on slide 76/198 期间在阿姆斯特丹的 DrupalCon 2014 上首次推出的。查看这些幻灯片,并观看影片以了解 George 的全部内容。

然后停止“等待乔治”,而是开始像乔治一样。即使这是具有挑战性的事情(困难、巨大的努力等)。完成后,您肯定会学到一些东西,而且可能会学到更多...

如果您正在寻找关于什么可能是这方面的好例子的灵感,那么不要再想知道“D8 什么时候发布?”。相反,“参与为 D8 的发布做出贡献”......并继续使用 D7 构建网站,直到 D8 准备就绪(并且足够成熟)。

16。作为新手开始贡献

除了 Novice code contribution guide 中详细介绍的内容(关于创建补丁以向 Drupal 贡献“代码”)之外,还有许多社区文档需要工作,并且可以由新手用户完成(通常标记为“新手”)。

同样适用于需要 better/more 文档的模块。这实际上就是我 'promoted' 从 Drupal user/admin 成为模块 co-maintainer 和模块所有者的过程。请参阅 HELP Reports reorganization(即 'just' 1 期 ...)以了解我是如何开始这样做的。

此类贡献将有助于“建立您的声誉”,并可能解决 chicken/egg 开始使用 Drupal 的问题(Drupal 中的大多数工作需要特定 Drupal 领域的知识/经验)。

17。学习管理 Drupal 配置

任何 Drupal 站点都由 2 个主要部分组成:

  • 从 Drupal.org 下载的代码,例如 Drupal 核心和提供的模块或自定义模块。

  • 配置 存储在 Drupal 数据库中(通常是您使用 Drupal 管理屏幕执行的任何操作)。

管理代码(例如迁移或同步2个或更多环境)相对容易。可以使用各种工具(例如 GIT 等)实际执行此操作。

但是,您还需要管理 Drupal 站点的配置。一个没有任何配置的站点就像一个您甚至没有 运行 install.php 脚本的站点。以下是有关配置内容的一些示例:

  • 一旦您启动 运行ning install.php 脚本,您就开始输入有关您的 Drupal 站点的配置数据(站点名称、站点口号等)。
  • 任何内容类型、权限、角色、规则、用户、分类法、过滤器、自定义视图等(none 其中存储在“代码”中,您不能只下载它来自某处)。
  • 模块 and/or 已启用的主题(仅解压缩您从 Drupal.org 下载的贡献模块将不会启用它)。
  • 配置特定模块的选项and/or 主题。

因此,每当有关此类配置项的某些内容发生更改或需要迁移到另一个站点时,您都​​需要正确管理(并保护?)所有这些。否则您的网站(部分)可能会崩溃。

这就是最初引入这些贡献模块的原因:

尽管这些模块在管理配置方面增加了很多价值,但它们也有弱点。这就是 Configuration Management Initiative (=CMI) was introduced 的原因。 CMI 计划作为 Drupal 8 的一部分发布。

第 5 部分 - 附录

以上列表不完整(仍然...)。可在此处添加的其他主题:

  • 训练计划会是什么样子?

  • 熟悉other modules,至少熟悉那些有 high 运行king,还要搜索隐藏的宝石。

  • 了解用于显示内容的贡献模块,例如 Display Suite and/or Panels. Then check if you can answer questions such as "Panels Mini-Panels vs Block Regions vs Display Suite vs Stylizer vs Page Manager vs Theme". A great resource for learning about Panels is the (free) video training about Learn Page manager. Panels uses 'Page manager', which is one of the sub-modules of Chaos tool suite (ctools)

  • 熟悉构建多语言站点(使用 i18n)。

  • 了解使用“Base themes”,例如Zen, Omega or Bootstrap(大部分支持HTML5,响应式,有很多配置选项等)。并探索与它们相关的各种“Sub-themes”(也可从Drupal.org下载)。

  • 提高一些技术技能,例如 SQL 和正则表达式。

  • 回顾并从剖析 Drupal 中学习 distributions

  • 如何获得更多经验?

  • 寻找一位 Drupal 导师(+ 接受他人的邀请成为他们的...)。

  • IRC.

    上与 Drupal 社区聊天
  • 参加冲刺。

  • 了解 Drupal 部署(开发、阶段、QA、生产)。

  • 如何瞄准黄金摇篮?

  • 工作流自动化。

  • 自动化测试。

  • 应用软件重用(功能、drush make、安装配置文件等)。

  • 为 D8 做好准备(Symphony、Twig、OOP、CMI、服务器先决条件……)。