RSSフィードをノードとしてインポートするソリューションを探していました。変更を加え、コンテンツにフィールドを追加する必要があります。これは、Drupal 7のFeeds Importerで簡単にできましたが、Drupal 8。
フィードをノードに直接インポートする最良の方法は何でしょうか?
解決策は次のとおりです。
1)migrate_plusおよびmigrate_toolsモジュールをダウンロードして有効にします。あなたは作曲家でこれをやるべきですが、私は判断しません。それらをコードベースに入れて有効にします。 Migrate PlusはコアMigrateのプラグインを提供するため、リモートXML、JSON、CSV、または任意のスプレッドシートデータを解析できます。移行ツールは、移行を実行するためのDrushコマンドを提供します。
2)移行構成をテキストで記述し、構成インポート管理ページ(admin/config/development/configuration/single/import)に貼り付けるか、別の方法でインポートします。すぐ下にスターターYAMLを含めました。コピーパスタをコピーし、いくつかの値を変更して、お茶に間に合うようにする必要があります。
3)システムcronに行を追加して、drush migrate -y my_rss_importerを好きな間隔で実行します。
以下は、調整する必要があるYAMLファイルです。
id: my_rss_importer
label: 'Import my RSS feed'
status: true
source:
plugin: url
data_fetcher_plugin: http
urls: 'https://example.com/feed.rss'
data_parser_plugin: simple_xml
item_selector: /rss/channel/item
fields:
-
name: guid
label: GUID
selector: guid
-
name: title
label: Title
selector: title
-
name: pub_date
label: 'Publication date'
selector: pubDate
-
name: link
label: 'Origin link'
selector: link
-
name: summary
label: Summary
selector: 'iTunes:summary'
-
name: image
label: Image
selector: 'iTunes:image[''href'']'
ids:
guid:
type: string
destination:
plugin: 'entity:node'
process:
title: title
field_remote_url: link
body: summary
created:
plugin: format_date
from_format: 'D, d M Y H:i:s O'
to_format: 'U'
source: pub_date
status:
plugin: default_value
default_value: 1
type:
plugin: default_value
default_value: podcast_episode