如何使用 Feeds 模块将外部 Feed 导入您的 Drupal 9 网站
已发表: 2020-11-03作为开发人员,当您需要从外部源导入数据时,您会遇到几种情况。 有时,您需要将多个来源的数据导入 Drupal 9 网站。 Drupal 中的 Feeds 模块是一个简单、实用的模块,即使是非技术用户也可以从不同的数据源导入内容。 它比其他 Drupal 模块(如 Migrate 模块)更简单的是,整个导入过程是通过 Drupal 的 UI 完成的。 只要内容可用,它就会以您想要的方式向您提供内容。
许多网站从第三方网站导入 RSS/XML 提要。 在这篇博客中,我们将通过这个 3rd 方 API 导入一个新闻提要,该 API 借助 Drupal 9 中的提要模块提供 json 格式的数据。

安装 Drupal Feeds 模块
Drupal 9 的 Feeds 模块允许您通过 UI 将数据从不同格式(如 CSV、XML、JSON、RSS 等)导入到节点、用户和分类术语中。
1. 安装 Drupal Feeds 模块(这里我们将使用 composer)
composer require 'drupal/feeds:^[email protected]'composer require 'drupal/feeds:^[email protected]'
2. 在这里,我们使用 JSON 提要来导入数据。 因此,我们需要一个 JSON 解析器,它需要我们再安装一个模块,即 Feeds 可扩展解析器。 安装此模块的最佳方法是使用 composer,因为它会下载所有必需的库。 (如果您使用Composer下载,您也可以跳过第一步,因为 Drupal feeds 模块将成为feed_ex模块的依赖项)。
composer require 'drupal/feeds_ex:^[email protected]'composer require 'drupal/feeds_ex:^[email protected]'
注意:如果您不使用 composer 进行安装,则该模块所需的库也可以与 Ludwig 模块一起安装。 安装 Ludwig 模块,然后转到/admin/reports/packages以获取更多说明。
3. 使用 drush 或通过 UI 启用feeds和feeds_ex (Feeds Extensible Parsers)模块。

配置和实现 Feeds 模块
在这里,我们将从 https://newsapi.org/ 网站文章(与“ TechCrunch 的头条新闻”相关的主题)中导入数据,该数据以 JSON 格式显示,如下面的屏幕截图所示。
要获取这些新闻数据,我们需要登录网站并获取 API 密钥。 接下来,选择您希望将数据导入网站的主题。

查看 API,让我们创建一个需要导入数据的内容类型。
创建内容类型
在这里,我创建了一个名为“新闻”的新内容类型。 根据您的 JSON 选择需要迁移数据的字段类型。

在上面的屏幕截图中,我们选择了简单的字段来导入数据,例如Author ,它是用于从JSON key author导入数据的Text(plain)字段。

正如您在上面的屏幕截图中看到的,我们添加了 Feed 类型的Feed项目字段并相应地选择了 Feed 类型。 我们将在下面的下一部分中学习如何创建 Feed 类型。
创建提要类型
按照以下步骤创建 Feed 类型。
- 导航到 Feed 概览页面 ( /admin/structure/feeds )。 您可以看到此页面上列出的所有 Drupal 提要。
我已经创建了 2 个提要。 在这里,我将使用新闻提要。 您可以通过单击添加提要类型来创建自己的提要类型。 - 在编辑提要类型或添加新提要类型时,我们将看到以下选项。
- 基本设置
让我们配置 Feed 类型的基本设置,首先,提供 Feed 类型的名称、描述和说明或提交指南。
导入周期(显示在下面的设置选项卡中)可帮助您选择导入运行的频率。 这将通过 cron 作业完成。 如果您选择关闭,则导入将手动完成。

- Fetcher设置选项显示您从何处导入内容或从何处获取内容。
它提供了 3 个选项可供选择,
- 目录:-从您网站上已有的文件或一系列文件中导入内容。
- 从 URL 下载:-从 url 导入内容(我们将在我们的案例中选择)。
- 上传文件:-从文件导入内容。
根据选择的 Fetcher,我们必须配置 Fetcher 设置。 对于 fetcher 设置的次要选项,我们有以下设置列表。

- 自动检测提要
- 使用 PubSubHubbub
- 总是下载
- 请求超时
相应地配置辅助设置。

•解析器让您配置提要的格式。 在这里,我们有许多选项可供选择,例如 CSV、HTML、OPML、JsonPath(这是我们的设置)等。根据您的提要格式从下拉菜单中选择一个。
根据选择的解析器,我们必须配置解析器设置。 在我们的例子中,对于 JsonPath 类型的解析器,我们没有任何解析器设置。
•处理器设置显示提要将创建的内容类型的配置。
同样,我们为处理器提供了一个辅助设置选项,如下图所示。

根据要求配置您的辅助设置。
下面的屏幕截图显示了获取器、解析器和处理器的主要设置。

3. 将源映射到目标
- 语境
帮助文本表示要运行的基本查询,它显示了作为内容导入 Drupal 提要目标数据的根或基础。 在我们的示例中,我们将其配置为“$.articles .*”,因为我们的数据位于文章键中。 查看此路径文档以配置您的路径文档。
- 字段映射
现在,我们可以配置 Feeds 模块来决定从 JSON 中提取的哪个值应该映射到 Drupal 新闻内容类型的哪个字段。
这些目标是 Drupal 数据字段,并根据您在创建提要类型时选择的处理器引入。 您还可以为字段的特定映射配置其他设置,例如语言、过滤器格式(适用于文本格式的字段)、唯一(用于跟踪内容是新内容还是现有内容的唯一标识符)等。
例如,如果我们想将JSON 提要新闻文章内容标题导入为 Drupal 新闻内容标题字段,那么目标将是Drupal 标题字段,源将是JSON 新闻文章标题键,如下面的屏幕截图所示。

这里我们使用映射配置,如下面的屏幕截图所示。

您还可以使用 Drupal 9 中也支持的实体克隆 Drupal 模块来克隆提要类型。
创建提要
要创建提要,请导航到内容 -> 提要选项卡 -> 添加提要 -> 选择提要类型

我已经为新闻创建了一个。 要创建新提要,请单击+ 添加提要按钮并根据需要配置提要。 对于我们的博客,我们已按以下屏幕截图所示进行配置。

配置完成后,点击Save and Import 。 这会将 Drupal 提要作为内容导入。 导入数据后,您将看到处理状态,如下面的屏幕截图所示。

将 JSON 数据迁移到内容后,我们可以看到添加到新闻内容类型的内容,如下面的屏幕截图所示。

现在,让我们将导入的内容与提要进行比较。


有关更多详细信息,您可以参考本指南。
用于扩展 Feeds 模块的附加模块
• Feeds Tamper 模块可帮助您在源数据导入您的网站之前对其进行修改和更新。
• Feeds 可扩展解析器包含一组解析器,如 XPath XML 和 HTML、JSONPath JSON 和 JSON 行解析器等。
• 源导入预览模块让您在导入之前查看源中的内容。
• Commerce Feeds 模块可帮助您将产品导入您的 Drupal Commerce 站点。
