如何在Drupal 8中导入/导出内容类型?

use*_*593 8 drupal-8

如何在Drupal 8中将内容类型及其相关内容从一个网站导入/导出到另一个网站?

Cam*_*ron 7

您会发现 drupal/console 命令config:export:content:type在这里会有所帮助。

创建一个模块,然后运行此命令,它将为您完成所有艰苦的工作:

drupal config:export:content:type --module=new_module --remove-uuid --remove-config-hash content_type_to_export
Run Code Online (Sandbox Code Playgroud)

这会将它放在模块的 config/install 目录中。当您在新站点上启用该模块时,它将自动运行。

我遇到的一个问题是它为 core.config 中已经包含的配置添加了几个文件。我刚刚删除了它们,一切都很好。基本上,如果 yml 文件在其文件名中没有引用您的内容类型,那么您可能不需要它。

想要查询更多的信息:

drupal help config:export:content:type
Run Code Online (Sandbox Code Playgroud)


Kiw*_*wad 3

在这个答案中,我假设您已经安装了Drush。(如果没有,您可以在此处管理您的配置文件 /admin/config/development/configuration)。

好的,对于您的 SiteA,打开终端并转到 SiteA 文件夹。假设您希望将配置写入 /sites/default/dev 文件夹中。因此编写以下命令:

drush cex dev
Run Code Online (Sandbox Code Playgroud)

它将导出您的所有网站配置。如果您创建了新的内容类型,它们将导出到 dev 文件夹中。

现在转到 SiteA 的 dev 文件夹并复制与您的内容类型相关的每个 yml 文件。

之后,只需将它们粘贴到同一个文件夹中,但这次是在 SiteB 中。最后,在终端中,转到 SiteB 文件夹并编写以下命令:

drush cim dev
Run Code Online (Sandbox Code Playgroud)

编辑

如果你想使用 dev 文件夹,你需要在 settings.php 中进行此配置

$config_directories['dev'] = 'sites/default/dev';
Run Code Online (Sandbox Code Playgroud)

另外,我的答案仅导出内容类型配置。不是内容。