logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动
04/10/2025, by Ivan

返回到模块的根目录(即 .info.yml 文件所在的位置),添加一个名为 hello_world.routing.yml 的新文件,并在其中添加以下内容:

hello_world.content:
  path: '/hello'
  defaults:
    _controller: '\Drupal\hello_world\Controller\HelloController::content'
    _title: 'Hello World'
  requirements:
    _permission: 'access content'

请注意,你在路由表中为模块保留的位置——第一行中的 hello_world.content——不一定必须是你为模块选择的机器名称。然而,为了保证路由文件与菜单文件之间的一致性,这是最佳实践。完整的条目名称 hello_world.content 将在下一部分添加菜单链接时使用,以便将该链接与此路由表条目关联。

04/10/2025, by Ivan

现在,当我们已经为模块的设置页面创建了一个占位符后,让我们来添加一个菜单链接。下面的说明展示了如何在 “管理 > 配置” 页面(http://example.com/admin/config)的 “开发” 部分中,为 hello_world 模块创建一个菜单链接。

在你的模块根目录下创建一个新文件,命名为 hello_world.links.menu.yml,并在其中添加以下内容:

04/10/2025, by Ivan

本指南继续介绍 Hello World 模块,展示如何一步一步添加自定义区块(以及更多内容)。

如果你真的喜欢冒险,可以直接跳转到示例模块。Examples 模块包含了更多在本指南中使用的代码示例。如果你是第一次接触,建议继续阅读本指南,并在你准备学习更多内容时再查看示例模块。

要学习所有真正酷的代码和由 Drupal 社区提供的内置文档,可以尝试访问 http://cgit.drupalcode.org/examples/tree/page_example?h=8.x-1.x

此外,请务必查看相关的 API 文档:

04/10/2025, by Ivan

在我们的模块中添加一个 YAML 配置文件后,Drupal 会自动加载该 YAML 文件的内容,我们就可以访问它来提供默认配置。在模块的根目录下创建一个新文件夹并命名为「config」。在该文件夹内再创建一个名为「install」的子文件夹。最后,在 config/install 内创建一个新文件,并命名为 hello_world.settings.yml。

hello:
  name: 'Hank Williams'

请记住,YAML 对空格非常敏感。然而,为了在 Drupal 对象中使用已加载的值,我们需要在 HelloBlock 类中添加如下方法(参见 自定义区块教程):

04/10/2025, by Ivan

主要主题: 默认配置

概览

在 Drupal 7 中,默认配置(例如内容类型、字段配置、视图等)需要专门的 PHP 代码来进行安装和更新。而在 Drupal 8 中,这些配置与配置管理系统一起存储在 YAML 文本文件中。

例如,配置管理系统负责创建和管理内容类型。你可以通过创建一个命名和结构正确的配置文件,将内容类型与模块一起分发。

示例

创建一个名为 node.type.example_mytype.yml 的文件,并将其放置在你的模块目录下的 config/install 子目录中。例如,如果模块位于 /modules/example,那么该文件路径就是 /modules/example/config/install/node.type.example_mytype.yml

请遵守命名约定:在内容类型前加上模块机器名作为前缀,并用下划线分隔,以避免与其他配置文件冲突。

然后在该文件中写入以下代码:

04/10/2025, by Ivan

引言

关于最新版本的 Drupal —— Drupal 8,已经有很多讨论和争论,可以肯定的是:模块的构建方式发生了巨大变化。现在有很多关于新环境的教程,在每一篇中,作者都建议开发者在代码不断发展时,留意未来的更多变化。

在过去几天里,我学习了 一些 这类教程,以及 Examples 模块,并找到了一个相当有趣的示例,我希望它在可预见的未来仍然保持适用!

04/10/2025, by Ivan

Drupal 8 基础模块构建实用指南 第二部分
从 .info 到测试,只涵盖基础内容

基本结构

loremipsum.info.yml

name: Lorem ipsum
type: module
description: 'Drupal 的 Lorem ipsum 生成器'
package: Development
core: 8.x
configure: loremipsum.form

Info 文件现在使用 YML 格式,并且模块与主题之间的差别需要通过类型声明来明确。配置 (configure) 声明指向一个路由(稍后会详细说明),除此之外就没有别的内容。事实上,这是你模块唯一必需的文件。将其保存到 (root/modules) 文件夹后,你就可以在 /admin/modules 启用模块,而不会破坏你的网站。但正如你接下来会看到的,这还远远不够。

04/10/2025, by Ivan

主要主题:定义自定义配置

你可以在自己的模块中 包含默认配置,其基础是其他模块的功能(节点类型、视图、字段、文本格式等)。
例如,节点模块提供节点类型的配置,因此你可以在自己的模块中定义一个默认的节点类型,并随模块一起提供。

你可能希望为自己的插件、实体和设置定义配置,而这些配置又可以被其他模块使用,就像你可以使用节点类型的配置一样。Drupal 8 让定义你自己的配置变得更简单。

配置文件

模块的配置文件放在模块的 config/install 子目录中。例如,如果模块在 /modules/example 下,那么配置文件路径就是 /modules/example/config/install/example.settings.yml。你可以在此目录中放置模块的配置文件,格式为 YAML。

04/10/2025, by Ivan

在 Drupal 中创建一个简单页面有两个步骤:

声明路径及其参数。

此步骤包括页面标题、访问页面的权限要求等。

在 Drupal 7 中,你需要实现 hook_menu()。

在 Drupal 8 中,你需要在模块顶层目录下创建 <module_name>.routing.yml 文件。

编写代码以返回页面主体。

在 Drupal 7 中,你需要编写在 hook_menu() 中指定的页面回调函数。

在 Drupal 8 中,页面回调必须是类的方法或已注册的服务。它可以根据不同条件(HTTP 或 HTTPS、内容头等)有所不同,但这超出了本介绍的范围。

流程

按照本页的示例,你就能在自定义模块中创建一个简单的页面,而无需深入了解 Drupal 的内部机制。更多详细信息请参阅 变更记录,其中介绍了路由系统的更改以及核心和示例项目中的不同实现。