logo

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

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

演示 EBT 模块 下载 EBT 模块

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

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

演示 EPT 模块 滚动

滚动

使用 UI 导出自定义字段代码

30/09/2025, by Ivan

有时,当你从自定义模块中提取内容类型时,你还可以为该内容类型添加相关的字段。自动创建字段的功能允许你在多个站点上删除并重新安装时,不会留下多余的字段,并确保你不会忘记添加它们。我们将介绍两种将这些字段添加到代码库的方法。

前提条件

  • 已安装 Drupal 8.0.x。
  • 有一个自定义模块(在此示例中使用的模块名称为 foobar)。
  • 在模块中有一个自定义内容类型(请按照父页面中的说明进行操作。内容类型的名称为“汽车品牌”)。

向我们的内容类型添加额外字段

有两种方法可以完成此步骤。你可以使用用户界面来创建字段并将配置导出到文件,或者你也可以自己编写文件。我喜欢使用第一种方法,只是为了确保不会遗漏 Drupal 添加字段到内容类型所需的任何内容,不过字段会以“field_”开头导出,而不是“foobar_car_brand_”,用来将它们与我们的自定义内容类型关联。在本页中,我们将介绍使用用户界面来创建字段并导出代码的方法,然后在自定义模块中使用这些代码。

使用 UI 创建字段

如前所述,此方法更适合不太熟悉 Drupal 添加字段到内容类型所需要求的用户。

启用自定义内容类型

如果你在 父页面的最后还没有启用 foobar 模块,请现在启用它。如果此时进入“创建内容”页面,你将看到可以创建一个新的“Car Brand”内容类型节点。

/admin/structure/types/manage/car_brand/fields

现在模块已启用,你可以进入内容类型的字段管理部分。添加你想要的所有字段。只需确保你添加的字段之一是“品牌信息”(field_brand_information),字段类型为“文本”(格式化、长文本、带摘要),并删除“正文”字段。其他保持默认即可。

使用 UI 导出字段配置 /admin/config/development/configuration/single/export

添加字段后,进入配置同步页面。顶部有三个选项卡。从这三个中选择“导出”。然后选择“单个项目”。

获取导出的配置

下面附上四张图片,展示了为“field_brand_information”字段需要导出的元素。

  • 字段存储(Field Storage)
  • 字段(Field)
  • 实体视图显示(Entity View Display)
  • 实体表单显示(Entity Form Display)

在配置代码块下方,你会看到应该在自定义模块中创建的文件名。将配置代码中的所有内容复制到指定的文件中,但排除第一行以“uuid:”开头的内容。

注意:如果你添加了其他字段,就需要为每个字段导出字段和字段存储。同样,如果你创建了多个显示模式,例如摘要(teaser),也需要导出。在此示例中,我们仅展示默认显示模式。

modules/custom/foobar/config/install/field.storage.node.field_brand_information.yml

field_storage

modules/custom/foobar/config/install/field.field.node.car_brand.field_brand_information.yml

field_5

modules/custom/foobar/config/install/core.entity_view_display.node.car_brand.default.yml

entity_view_display

modules/custom/foobar/config/install/core.entity_form_display.node.car_brand.default.yml

entity_form_display

删除并重新启用 foobar 模块
现在你已将所有字段配置添加到代码库中,是时候删除 foobar 模块了。删除模块后,再次启用它,查看是否导入了自定义字段。如果此时进入“创建内容”页面,你将看到可以创建一个新的“Car Brand”内容类型节点,并且它包含了名为“品牌信息”的新字段以及你创建的其他字段。