杰瑞科技汇

Drupal开发教程怎么学?

Drupal 开发教程:从零到英雄

Drupal 是一个功能强大、高度灵活的开源内容管理系统,它的学习曲线相对陡峭,但一旦掌握,你将能够构建几乎任何类型的网站,从个人博客到复杂的社交网络和企业门户。

Drupal开发教程怎么学?-图1
(图片来源网络,侵删)

第一部分:准备工作

在开始编码之前,你需要准备好你的开发环境。

为什么选择 Drupal?

  • 灵活性与可扩展性:通过“内容类型”、“字段”、“视图”等核心概念,你可以像搭积木一样构建网站,而无需编写大量代码。
  • 强大的社区:拥有庞大而活跃的全球社区,提供丰富的文档、模块和主题。
  • 安全性:Drupal 核心团队非常重视安全,定期发布安全更新。
  • 多语言支持:内置强大的多语言功能,是构建国际网站的绝佳选择。

必需工具

  • 本地服务器环境:Drupal 是一个 PHP 应用,需要一个 Web 服务器(如 Apache 或 Nginx)、数据库(如 MySQL/MariaDB)和 PHP 解释器。
    • 推荐新手使用XAMPPWAMP (Windows) 或 MAMP (macOS),它们一键集成所有环境。
    • 推荐专业开发者使用DockerDDEV,这是目前最流行、最专业的本地开发方式,可以完美模拟生产环境。
  • 代码编辑器:一个强大的代码编辑器能极大提高效率。
    • 推荐Visual Studio Code (免费、功能强大)、PhpStorm (付费,PHP 开发神器)。
  • 版本控制Git 是现代开发的必备工具,用于代码管理和协作,请务必学习 Git 的基本命令。
  • Composer:PHP 的依赖管理工具,Drupal 8/9/10 完全依赖 Composer 来管理其核心和第三方模块。

安装 Drupal

  1. 下载:访问 Drupal.org 下载最新的 Drupal 版本(目前是 Drupal 10)。
  2. 解压:将下载的压缩包解压到你本地服务器的 Web 根目录(XAMPP 的 htdocs 文件夹)。
  3. 运行安装程序:在浏览器中访问 http://localhost/drupal (根据你的文件夹名调整)。
  4. 选择语言:选择 "English" 或其他语言。
  5. 检查要求:安装程序会检查你的 PHP 和数据库环境是否符合要求。
  6. 数据库配置
    • 输入数据库名称(drupal)。
    • 输入数据库用户名和密码(通常是你在 XAMPP/MAMP 中设置的 root 和空密码)。
    • 数据库主机通常是 localhost
  7. 安装配置
    • 站点名称:你的网站名称。
    • 站点维护帐户:创建一个管理员账户。
    • 国家/地区:设置默认时区。
  8. 安装完成:等待安装程序完成,然后你就可以登录你的新 Drupal 网站了!

第二部分:核心概念理解

这是 Drupal 开发最重要的部分,理解这些概念,你就能理解 Drupal 的工作方式。

核心三驾马车

这三个概念是 Drupal 架构的基石。

  • 内容类型

    Drupal开发教程怎么学?-图2
    (图片来源网络,侵删)
    • 是什么的“蓝图”或“模板”,它定义了某种类型的内容应该包含哪些信息(字段)。
    • 例子
      • 文章:可能包含标题、正文、作者、发布日期、封面图片等字段。
      • 产品:可能包含产品名称、描述、价格、SKU、库存数量等字段。
      • 事件:可能包含事件名称、开始时间、结束时间、地点等字段。
    • 如何创建:在 管理 > 结构 > 内容类型 中创建。
  • 字段

    • 是什么:存储具体数据的最小单元,字段被附加到内容类型上。
    • 类型:文本字段、数字字段、日期字段、文件字段、图片字段、实体引用字段等。
    • 例子”是一个文本字段,“发布日期”是一个日期字段,“封面图片”是一个图片字段。
    • 关键点:Drupal 的强大之处在于,你可以将任何字段添加到任何内容类型(甚至用户、 taxonomy 术语等)。
  • 实体

    • 是什么:Drupal 中任何可以被存储和管理的“东西”都是实体。
    • 例子
      • 内容实体:一篇文章、一个产品、一个事件。
      • 用户实体:一个用户账户。
      • 词汇表/分类法实体:一个分类(如“标签”、“分类”)。
      • 配置实体:一个视图、一个内容类型定义、一个区块。
    • 关键点类型、字段、视图、区块等都是实体,这个统一的模型使得 Drupal 非常一致和可扩展。

重要概念

  • 区块

    • 是什么:一个可重用的 UI 组件,用于在网站的特定区域(如页头、页脚、侧边栏)显示内容。
    • 可以是一段静态文本、一个菜单、一个视图列表,甚至是某个内容类型的最新文章列表。
    • 如何管理:在 管理 > 结构 > 区块布局 中,你可以将区块放置到不同的区域。
  • 视图

    Drupal开发教程怎么学?-图3
    (图片来源网络,侵删)
    • 是什么:Drupal 最强大的模块之一(即使它现在是核心的一部分),它允许你从数据库中查询内容,并以列表、表格、幻灯片等多种方式展示出来。
    • 例子
      • 显示所有“产品”内容类型的项目列表。
      • 显示按“分类”分组的文章。
      • 创建一个带有“分页”和“筛选”功能的文章列表。
    • 如何创建:在 管理 > 结构 > 视图 中创建。
  • 主题

    • 是什么:控制网站外观和用户体验的层,它决定了 HTML 结构、CSS 样式和 JavaScript 行为。
    • 工作原理:Drupal 使用“Twig”模板引擎,主题通过覆盖核心的 Twig 模板文件来改变输出。
    • 如何创建:你可以基于 starterkit_theme (Olivero 或 Claro) 创建一个子主题,这是最佳实践。
  • 模块

    • 是什么:为 Drupal 添加新功能的插件,模块可以添加新的内容类型、字段类型、区块、权限,甚至改变 Drupal 的核心行为。
    • 例子
      • Webform:创建复杂的表单。
      • Paragraphs:更灵活地构建页面内容。
      • Devel:开发辅助工具,用于调试和查看信息。
    • 如何安装:通过 Composer 或在 Drupal 后台的 扩展 页面安装。

第三部分:动手开发

让我们开始编写一些代码。

创建自定义模块

这是 Drupal 开发的起点,我们将创建一个名为 hello_world 的简单模块。

  1. 创建模块文件夹: 在 Drupal 安装目录的 modules/custom 下创建一个名为 hello_world 的文件夹。

    /drupal/
    └── modules/
        └── custom/
            └── hello_world/
  2. 创建 .info.yml 文件: 这个文件告诉 Drupal 你的模块是什么。

    创建文件:modules/custom/hello_world/hello_world.info.yml

    name: 'Hello World'
    type: module
    description: 'A simple module to say hello.'
    core_version_requirement: ^10
    package: 'Custom'
  3. 创建 .module 文件: 这个文件包含 PHP 代码,我们在这里实现一个 "钩子"。

    创建文件:modules/custom/hello_world/hello_world.module

    <?php
    /**
     * @file
     * Contains hello_world.module.
     */
    /**
     * Implements hook_page_attachments().
     *
     * This function is called when a page is being built.
     */
    function hello_world_page_attachments(array &$attachments) {
      // Add a library to the page.
      // The library is defined in hello_world.libraries.yml.
      $attachments['#attached']['library'][] = 'hello_world/hello_world';
    }
  4. 创建库定义文件: 如果你的模块需要 CSS 或 JS,你需要在这里定义它们。

    创建文件:modules/custom/hello_world/hello_world.libraries.yml

    hello_world:
      version: 1.x
      css:
        theme:
          css/hello-world.css: {}
      js:
        js/hello-world.js: {}
  5. 创建 CSS 和 JS 文件: 创建文件夹 cssjs,并分别创建 hello-world.csshello-world.js 文件。

    modules/custom/hello_world/css/hello-world.css:

    body {
      border: 5px solid red;
    }

    modules/custom/hello_world/js/hello-world.js:

    console.log('Hello from Drupal!');
  6. 启用模块

    • 登录 Drupal 后台。
    • 转到 管理 > 扩展
    • 找到 "Hello World" 模块,勾选并点击 安装

刷新你的网站,你应该能看到页面边框变成了红色,并且浏览器控制台打印出了 "Hello from Drupal!",恭喜,你创建了第一个自定义模块!

创建自定义主题

  1. 创建主题文件夹: 在 Drupal 安装目录的 themes/custom 下创建一个名为 my_subtheme 的文件夹。

    /drupal/
    └── themes/custom/
        └── my_subtheme/
  2. 创建 .info.yml 文件: 创建文件:themes/custom/my_subtheme/my_subtheme.info.yml

    name: 'My Subtheme'
    type: theme
    description: 'A subtheme of Olivero.'
    core_version_requirement: ^10
    base theme: olivero # 关键:指定父主题
  3. 覆盖模板文件: 假设你想修改页面的 HTML 结构,你需要覆盖 page.html.twig

    • my_subtheme 文件夹中创建 templates 文件夹。
    • core/themes/olivero/templates/page.html.twig 复制 page.html.twig 文件到你的 templates 文件夹中。
    • 编辑 templates/page.html.twig,修改你想要的部分。
  4. 启用主题

    • 转到 管理 > 外观
    • 选择 "My Subtheme" 并设置为默认主题。

使用 Drupal Console (可选但推荐)

Drupal Console 是一个命令行工具,可以自动生成模块、主题、表单等的代码骨架,极大地提高开发效率,安装它后,你可以通过命令快速创建文件和结构。


第四部分:进阶主题

当你掌握了基础后,可以探索以下更高级的主题:

  • 配置管理:学习如何将 Drupal 的配置(如内容类型、视图设置)导出到代码中,实现不同环境(开发、测试、生产)之间的一致性。
  • Drupal API:深入学习 Drupal 的核心 API,如 EntityQuery(用于编程方式查询内容)、Form API(用于创建表单)、Routing(用于创建自定义页面路径)。
  • Services & Dependency Injection:了解 Drupal 的服务容器,这是编写可测试、可维护代码的关键。
  • 测试:学习使用 PHPUnit 和 Kahlan 为你的代码编写单元测试和功能测试。

第五部分:学习资源

  • 官方文档
  • 社区与教程
  • 书籍
    • The Definitive Guide to Drupal 7 (虽然旧,但概念相通)
    • Pro Drupal Development (系列书籍,版本较多,是 Drupal 开发的经典)

Drupal 开发是一个持续学习的过程,不要试图一次性掌握所有东西。

学习路径建议:

  1. 安装并玩转 Drupal:熟悉后台界面,创建内容类型、添加字段、使用视图和区块。
  2. 创建你的第一个模块:从简单的钩子开始,理解模块是如何工作的。
  3. 创建你的第一个主题:学习如何覆盖模板和样式,控制网站外观。
  4. 深入学习 API:当你需要实现更复杂的功能时,去查阅 API 文档,学习 Form API、EntityQuery 等。
  5. 阅读和贡献:阅读优秀模块的源码,尝试为 Drupal 贡献代码或文档。

祝你 Drupal 开发之旅愉快!

分享:
扫描分享到社交APP
上一篇
下一篇