如何使用 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 站點。
