logo

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

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

演示 EBT 模块 下载 EBT 模块

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

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

演示 EPT 模块 滚动

滚动
03/10/2025, by Ivan

配置 API 为模块提供了一个集中存储配置数据的位置。该数据可以是简单配置,例如您网站的名称,或者是通过配置对象管理的更复杂的信息,例如视图和内容类型。

配置是存储 您希望从开发环境同步到生产环境的信息 的地方。这些信息通常在网站构建期间创建,通常不会由普通用户在网站正常运行期间生成。

对于不应在不同实例之间移动的本地变量,您应该使用 状态 API,而不是配置。状态用于隐藏的系统值,如果您永远不希望在不同环境之间部署它们。您可以重建系统并丢失所有状态,但配置会被保留。

配置 API 有两种形式:(简单的)Config API 和 Configuration Entity API。关键区别在于 Config API 是单实例用例。单例意味着只能有一个该配置的实例,例如网站名称。

Configuration Entity API 应用于存储多个配置集合,例如节点类型、视图、词汇表和字段。

03/10/2025, by Ivan

在 Drupal 8 中有几种信息类型:

  • 内容 (Content)

这些信息旨在显示在您的网站上并由用户编辑:文章、基本页面、图片、文件等。

  • 会话 (Session)

关于单个用户与站点交互的信息,例如他们在视图过滤器中的当前选择。这是临时的,并且只针对单个用户。

可能会频繁更改和/或无需用户干预的信息。例如:Cron 上次运行的时间、是否需要重建节点访问权限等。

关于您网站的信息,它不是内容,并且不会经常更改,例如您网站的名称、您定义的内容类型和视图等。

03/10/2025, by Ivan

默认情况下,Drupal 8 中的配置信息存储在数据库中。

配置文件格式 (YAML)

扩展(模块、主题和安装配置文件)通过 YAML 文件提供配置信息。

下面是一个配置文件的示例:

some_string: 'Woo kittens!'
some_int: 42
some_bool: true

配置也可以是嵌套的。示例如下:

03/10/2025, by Ivan

Drupal 8 的配置系统以统一的方式处理配置。默认情况下,Drupal 将配置数据存储在数据库中,但它们可以导出为 YAML 文件,从而能够通过版本控制来管理配置。然而,在某些情况下需要为特定目的覆盖配置值。在 Drupal 7 中,有一个全局变量 global $conf,它通常在 settings.php 中填充条件覆盖的配置值。该系统的主要缺点是覆盖会进入实际的配置中。当保存包含覆盖值的配置表单时,条件覆盖就会写入实际的配置存储。

Drupal 8 引入了配置覆盖系统,该系统:

  • 将这些覆盖作为临时层叠在标准配置值之上
  • 不将覆盖值用于配置表单
  • 可以与其他配置文件一起存储覆盖,从而支持预生产和版本控制(例如,语言覆盖,见下文)。

Drupal 7 中的全局变量 $conf 在 Drupal 8 中重命名为 $config,并在默认的配置系统中启用。

全局覆盖

Drupal 8 保留了使用 global $config 的功能。配置系统通过 Drupal\Core\Config\ConfigFactory::get() 的实现合并这些覆盖值。当您从配置中获取值时,全局变量 $config 会有机会更改返回值:

03/10/2025, by Ivan

Drupal 8 包含对由 Kwalify (http://www.kuwata-lab.com/kwalify/) 创建的 YAML 配置文件的架构/元数据语言的支持。Kwalify 本身是用 Ruby 编写的,我们对格式做了一些小的调整,因此并非所有 Kwalify 的细节都能直接应用,但已经非常接近。

速查表

为了快速理解和参考一些便捷的示例,请查看这份速查表,如果您还有疑问,请继续阅读:

ConfigSchemaCheatSheet1.5Thumb

03/10/2025, by Ivan

配置对象 可以声明依赖关系。依赖项可以是模块、主题或 实体

配置对象的依赖必须在配置对象安装之前就已安装。如果缺少依赖且未在站点中安装,则该配置对象无法被安装。模块必须在其 info YAML 文件中声明其配置对象所需的模块和主题依赖。

通常,模块开发人员无需手动为配置对象声明依赖。通过扩展核心配置实体基类以及从标准插件 API 提供者中创建插件,依赖会被自动计算并声明。

概览

配置对象的依赖通过 config_dependencies 键在配置对象定义中声明。该数组的键可以包括以下几类:

  • content
  • config
  • module
  • theme

 

03/10/2025, by Ivan

本页展示了一个示例,说明如何在 Drupal 8 中创建一个配置对象类型以及对应的管理页面。关于简单配置和配置对象的概念,请参阅 https://drupal.org/node/2120523

启用包含以下代码的示例模块后,示例配置表单应可通过 “admin/config/system/example” 访问,如截图所示:

2016-12-18-002716

模块设置与管理员菜单入口

example/example.info.yml