フィードモジュールを使用して外部フィードをDrupal9Webサイトにインポートする方法
公開: 2020-11-03開発者として、外部ソースからデータをインポートする必要がある場合、いくつかの状況に遭遇します。 複数のソースからDrupal9Webサイトにデータをインポートする必要がある場合があります。 DrupalのFeedsモジュールは、技術者でないユーザーでもさまざまなデータソースからコンテンツをインポートできるようにするシンプルで手間のかからないモジュールです。 Migrateモジュールのような他のDrupalモジュールよりも簡単なのは、インポートプロセス全体がDrupalのUIを介して行われることです。 利用可能になり次第、コンテンツを希望どおりに配信します。
多くのWebサイトは、サードパーティのサイトからRSS / XMLフィードをインポートします。 このブログでは、Drupal 9のFeedsモジュールを使用して、json形式でデータを提供するこのサードパーティAPIを介してインポートされたニュースフィードを取得します。

Drupalフィードモジュールのインストール
Drupal 9のフィードモジュールを使用すると、CSV、XML、JSON、RSSなどのさまざまな形式から、UIを介してノード、ユーザー、分類用語にデータをインポートできます。
1. Drupal Feedsモジュールをインストールします(ここではcomposerを使用します)
composer require 'drupal/feeds:^[email protected]'composer require 'drupal/feeds:^[email protected]'
2.ここでは、データのインポートにJSONフィードを使用しています。 そのため、JSONパーサーが必要です。これには、Feeds拡張可能パーサーであるモジュールをもう1つインストールする必要があります。 このモジュールをインストールする最良の方法は、必要なすべてのライブラリをダウンロードするため、composerを使用することです。 (Drupalフィードモジュールはfeed_exモジュールの依存関係になるため、 composerを使用してダウンロードする場合は、最初のステップをスキップすることもできます)。
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 )モジュールを有効にします。

フィードモジュールの構成と実装
ここでは、下のスクリーンショットに示すように、JSON形式で公開されているhttps://newsapi.org/ Webサイトの記事(「 TechCrunchの今のトップヘッドライン」に関連するトピック)からデータをインポートします。
このニュースデータを取得するには、WebサイトにログインしてAPIキーを取得する必要があります。 次に、データをWebサイトにインポートするトピックを選択します。

APIを見て、データをインポートする必要があるコンテンツタイプを作成しましょう。
コンテンツタイプの作成
ここでは、「ニュース」という新しいコンテンツタイプを作成しました。 データを移行する必要があるJSONに応じてフィールドタイプを選択します。

上のスクリーンショットでは、 JSONキー作成者からデータをインポートするためのText(plain)フィールドであるAuthorのようなデータをインポートするための単純なフィールドを選択しました。

あなたは上のスクリーンショットで見るように、私たちは型フィードのフィード項目フィールドを追加し、それに応じてフィードタイプを選択しました。 次のセクションでは、フィードタイプを作成する方法を学習します。
フィードタイプの作成
以下の手順に従って、フィードタイプを作成します。
- フィードの概要ページ( / admin / structure / feeds )に移動します。 このページにリストされているすべてのDrupalフィードを見ることができます。
すでに2つのフィードを作成しました。 ここでは、ニュースフィードを使用します。 [フィードタイプの追加]をクリックして、独自のフィードタイプを作成できます。 - フィードタイプを編集したり、新しいフィードタイプを追加したりすると、以下のオプションが表示されます。
- 基本設定
フィードタイプの基本設定を構成しましょう。まず、フィードタイプの名前、説明、説明、または送信ガイドラインを入力します。
インポート期間(以下の[設定]タブに表示)は、インポートを実行する頻度を選択するのに役立ちます。 これはcronジョブを介して行われます。 [オフ]を選択すると、インポートは手動で行われます。

- Fetcher設定オプションは、コンテンツをインポートする場所またはコンテンツをフェッチする場所を示します。
から選択する3つのオプションを提供します。
- ディレクトリ:-すでにWebサイトにあるファイルまたは一連のファイルからコンテンツをインポートします。
- URLからダウンロード: -URLからコンテンツをインポートします(この場合はどちらを選択しますか)。
- ファイルのアップロード:-ファイルからコンテンツをインポートします。
選択したFetcherに基づいて、Fetcher設定を構成する必要があります。 フェッチャー設定の2番目のオプションとして、以下の設定リストがあります。

- フィードを自動検出
- PubSubHubbubを使用する
- 常にダウンロード
- タイムアウトをリクエストする
それに応じて二次設定を構成します。

•パーサーを使用すると、フィードの形式を構成できます。 ここでは、CSV、HTML、OPML、JsonPath(設定)などから選択できる多くのオプションがあります。フィード形式に応じて、ドロップダウンメニューから1つを選択します。
選択したパーサーに基づいて、パーサー設定を構成する必要があります。 この場合、タイプJsonPathのパーサーのパーサー設定はありません。
•プロセッサ設定は、フィードが作成するコンテンツのタイプの構成を示します。
同様に、次の画像に示すように、プロセッサのセカンダリ設定オプションがあります。

要件に応じてセカンダリ設定を構成します。
以下のスクリーンショットは、フェッチャー、パーサー、およびプロセッサーの主要な設定を示しています。

3.ソースをターゲットにマッピングする
- 環境
ヘルプテキストには、実行するベースクエリが記載されており、Drupalフィードのターゲットとなるデータのルートまたはベースがコンテンツとしてインポートされます。 この例では、データが記事キー内にあるため、 「$ 。 articles 。*」として構成しました。 このパスのドキュメントを参照して、自分のパスを構成してください。
- フィールドマッピング
これで、JSONから取得した値をDrupalニュースコンテンツタイプのどのフィールドにマップするかを決定するようにFeedsモジュールを構成できます。
これらのターゲットはDrupalデータフィールドであり、フィードタイプの作成時に選択したプロセッサに基づいて取得されます。 言語、フィルター形式(テキスト形式のフィールドに適用可能)、一意(コンテンツが新規か既存かを追跡するために使用される一意の識別子)など、フィールドの特定のマッピングに他の設定を構成することもできます。
たとえば、 JSONフィードのニュース記事のコンテンツタイトルをDrupalニュースコンテンツのタイトルフィールドとしてインポートする場合、次のスクリーンショットに示すように、ターゲットはDrupalタイトルフィールドになり、ソースはJSONニュース記事のタイトルキーになります。

ここでは、以下のスクリーンショットに示すようなマッピング構成を使用しています。

Drupal9でもサポートされているEntitycloneDrupalモジュールを使用してフィードタイプを複製することもできます。
フィードの作成
フィードを作成するには、 [コンテンツ]-> [フィード]タブ-> [フィードの追加]-> [フィードタイプの選択]に移動します

ニュース用に作成しました。 新しいフィードを作成するには、[ +フィードを追加]ボタンをクリックし、必要に応じてフィードを構成します。 私たちのブログでは、以下のスクリーンショットに示すように構成しました。

構成後、[保存してインポート]をクリックします。 これにより、Drupalフィードがコンテンツとしてインポートされます。 データがインポートされると、下のスクリーンショットに示すような処理ステータスが表示されます。

JSONデータがコンテンツに移行されると、下のスクリーンショットに示すように、ニュースコンテンツタイプに追加されたコンテンツを確認できます。

次に、インポートしたコンテンツをフィードと比較してみましょう。


詳細については、このガイドを参照してください。
フィードモジュールを拡張するための追加モジュール
•FeedsTamperモジュールは、Webサイトにインポートされる前にソースデータを変更および更新するのに役立ちます。
•フィード拡張可能パーサーには、XPath XML&HTML、JSONPath JSON&JSONラインパーサーなどのパーサーのセットが含まれています。
•フィードインポートプレビューモジュールを使用すると、ソースをインポートする前に、ソース内のコンテンツを確認できます。
•CommerceFeedsモジュールは、DrupalCommerceサイトに製品をインポートするのに役立ちます。
