logo

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

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

演示 EBT 模块 下载 EBT 模块

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

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

演示 EPT 模块 滚动

滚动
04/10/2025, by Ivan

字段小部件用于在表单中渲染字段。字段小部件被定义为插件,因此在编写新的字段类型之前,建议先熟悉 插件 API

在 Drupal 8 中创建字段小部件,需要一个带有 FieldWidget 注解的类。

类的位置 应该是 /[MODULE_NAME]/src/Plugin/Field/FieldWidget,例如:/foo/src/Plugin/Field/FieldWidget/BarWidget.php。

类的命名空间 应该是 [MODULE_NAME]\Plugin\Field\FieldWidget,例如:\Drupal\foo\Plugin\Field\FieldWidget。

类上的注解 必须包含唯一的 ID、标签以及此小部件可以处理的字段类型 ID 数组。

04/10/2025, by Ivan

字段格式化器模块用于将字段数据格式化为最终用户可见的内容。字段格式化器被定义为插件,因此在编写新的字段格式化器之前,建议先熟悉 插件 API

字段格式化器类

文件:/modules/random/src/Plugin/Field/FieldFormatter/RandomDefaultFormatter.php

03/10/2025, by Ivan

事件系统概览

事件系统在许多复杂的应用程序中被用作允许扩展修改系统工作的方式。事件系统可以通过不同方式实现,但总体上组成系统的概念和组件是相同的。

  • 事件订阅器 (Event Subscribers) —— 有时称为“监听器”,是可以被调用的方法或函数,它们会对在整个事件注册表中传播的事件作出响应。
  • 事件注册表 (Event Registry) —— 用于收集和排序事件订阅器。
  • 事件调度器 (Event Dispatcher) —— 触发或“分发”事件到整个系统的机制。
  • 事件上下文 (Event Context) —— 许多事件需要一个特定的数据集,这对事件订阅器很重要。这可以是一个简单的值,也可以是一个复杂的对象,例如专门为事件创建的包含相关数据的类。

Drupal 钩子 (Hooks)

在其大部分发展历程中,Drupal 通过“钩子”拥有一种原始的事件系统。让我们看看“钩子”的概念如何映射到事件系统的 4 个元素。

03/10/2025, by Ivan

创建一个 Views 显示样式插件看起来可能是一项复杂的任务,但实际上比你想象的要简单。下面是一个带源码的分步指南。

你可以在这里下载现成的代码:TARDIS(尽管它还在开发中)。如果你需要 Drupal 8 模块的入门介绍,请查看这个 Drupal 8 基础模块构建实用指南

.info.yml

首先,在 /modules/custom 下为你的模块创建一个名为 tardis 的文件夹。在其中放置一个名为 tardis.info.yml 的文件,内容如下:

03/10/2025, by Ivan

第六部分 Drupal 8 基础模块构建实用指南
从 .info 到测试,只讲基础

如果你从一开始就跟随这个 Drupal 8 基础模块构建实用指南,那么现在我们准备进行一些质量控制。如果你只是想跳过并直接上手,你可以从 Drupal 下载 Lorem ipsum 模块

让我们通过编写几个可以直接在 Drupal 中运行的自定义测试,来检查模块是否按预期工作。

03/10/2025, by Ivan

钩子是模块与其他附加模块或 Drupal 核心子系统交互的一种方式。钩子用于各种任务,包括模板文件的预处理变量(hook_preprocess())、修改信息列表(hook_tokens_alter()、hook_views_data_alter())以及操作表单(hook_form_alter())等。在此页面中列出了核心提供的所有钩子。

模块可以定义它们自己的附加钩子。例如,Flag 模块定义了 hook_flag_options_alter(),其他模块可以使用它来修改现有标志的默认选项。大多数定义钩子的模块也会提供相应的文档。这些文档通常位于 *.api.php 文件中。

03/10/2025, by Ivan

本指南适用于模块。关于主题的信息,请参阅 在 Drupal 8 主题中添加样式表 (CSS) 和 JavaScript (JS)

在 Drupal 8 中,样式表 (CSS) 和 JavaScript (JS) 的加载通过同一个资源库系统完成,适用于模块(代码)和主题。资源库可以包含一个或多个 CSS 文件、一个或多个 JS 文件以及一个或多个 JS 配置。

Drupal 遵循一个高级原则:资源 (CSS 或 JS) 只有在你告诉 Drupal 需要加载时才会被加载。Drupal 不会在所有页面上加载所有资源 (CSS/JS),因为这会对前端性能产生负面影响。

与 Drupal 7 的区别

对开发者而言,Drupal 7 与 Drupal 8 有两个重要区别:

03/10/2025, by Ivan

Drupal 8 引入了许多新的 API,并且只包含 Drupal 7/6 的部分 API。在本节中将详细介绍 Drupal 8 中的 API。

在深入阅读以下文档之前,您可能希望先了解一下核心基础与前提条件,以及Drupal 8.x 模块开发指南,其中解释了一些在这里的 API 文档中会默认使用的概念和术语。

如果您想要快速但又深入地学习,可以阅读理解 Drupal 8。其中提供了对许多 D8 关键 API 的概览。

最后,请查看 Drupal 8 向后兼容性政策,了解在 Drupal 8 的次要版本之间可能发生的变化以及哪些内容会保持稳定。