【Craft 3 サイト構築の基本】Feed Me プラグインを利用したエントリのインポート

これは Craft CMS Advent Calendar 2018 19日目の記事です。
連載「サンプル制作で覚える Craft 3 サイト構築の基本」として、エントリデータのインポート編と同様に Feed Me プラグインによるエントリのインポートを行います。

ここでは、次の作業を行います。

  1. アセットの登録
  2. JSON データの準備
  3. フィードの設定、および、インポートの実行

インポート用の JSON データは「素材データ専用リポジトリ vol-13 ブランチ」にコミットしてあります。

なお、セクションタイプが シングル のものは Feed Me プラグインでインポートできないため、公式デモサイトのデータを参考に別途入力してください。

アセットの登録

アセットを登録する3つの方法で紹介した「アセットインデックスを利用した一括登録」で、あらかじめ画像を登録しておきます。

アセットインデックス

グローバルナビゲーションから ユーティリティ に移動後、サブナビゲーションから アセットインデックス を選択します。メインカラムのチェックボックスは「カンパニーロゴ」と「サービスアイコン」だけを ON にして アセットインデックスを更新 ボタンをクリックします。

プログレスバー

アセットインデックスの更新中は、プログレスバー が表示されます。

プログレスバー

更新が完了したら、グローバルナビゲーションから アセット に移動し、サブナビゲーションの カンパニーロゴ または サービスアイコン をクリックして画像が追加されていることを確認します。

JSON データの準備

公式デモサイトの「ニュース」セクションに含まれるエントリデータの JSON をリポジトリに用意してあります。 「素材データ専用リポジトリ vol-13 ブランチweb/import/entry ディレクトリに含まれるファイル」をローカル環境の web/import/entry 直下に配置してください。

その後、ブラウザからアクセスして内容を表示できることを確認します。

  • https://craft3.dev/import/entry/locations.json
  • https://craft3.dev/import/entry/services.json
  • https://craft3.dev/import/entry/work.json

Feed Me プラグインでインポートする際は、ソースファイルに URL でアクセスできる必要があります。

フィードの設定、および、インポートの実行

フィード一覧

グローバルナビゲーションから FeedMe に移動後、「ニュース」エントリ(入力タイプ:リンク) 行の右側にある「歯車」アイコンをクリックします。下段にトグル表示されるオプション設定から Duplicate Feed ボタンをクリックします。

フィード一覧

フィードが複製されたら、下段の 「ニュース」エントリ(入力タイプ:リンク) リンクをクリックします。

フィード設定の修正:「サービス」セクション

フィード編集画面

次の4箇所を修正してから Save & Continue ボタンをクリックします。

ラベル
Name「サービス」エントリ
Feed URLhttps://craft3.dev/import/entry/services.json
Sectionサービス
Entry Typeサービス

フィードのオプション設定:「サービス」セクション

オプション編集画面

オプション設定に変更はありませんので、そのまま Save & Continue ボタンをクリックします。特に明記しませんが、他のフィードを設定する際も次の画面に進んでください。

フィールドマッピングの設定:「サービス」セクション

マッピング設定画面

次の項目を修正してから Save & Continue ボタンをクリックします。

FeildFeed Element
Expiry Date<expiryDate>
サービスアイコン<serviceIcon>
概要文<shortDescription>
新しいセクション: セクション見出し<Matrix/articleBody/newSection_sectionHeading>
見出し: 見出し<Matrix/articleBody/heading_heading>
テキスト: テキスト<Matrix/articleBody/text_text>
テキスト: 位置<Matrix/articleBody/text_position>
リード文: リード文<Matrix/articleBody/pullQuote_pullQuote>
リード文: 位置<Matrix/articleBody/pullQuote_position>
画像: 画像<Matrix/articleBody/image_image>
画像: キャプション<Matrix/articleBody/image_caption>
画像: 位置<Matrix/articleBody/image_position>
ギャラリー: 画像<Matrix/articleBody/gallery_images>
引用: 引用<Matrix/articleBody/quote_quote>
引用: 帰属<Matrix/articleBody/quote_attribution>
引用: 位置<Matrix/articleBody/quote_position>
サービスポイント: Heading<Matrix/serviceBody/servicePoint_heading>
サービスポイント: テキスト<Matrix/serviceBody/servicePoint_text>
サービスポイント: 画像<Matrix/serviceBody/servicePoint_image>

その後、インポートを実行してください。

「ニュース」セクション同様、マッピングを設定するためのダミーエントリを JSON データの先頭に加えてあります。ただし、Expiry Date(有効期限日)を過去に設定しているため、craft.entries.section('services') の取得対象に含まれません。

フィード設定の修正:「ロケーション」セクション

「サービス」セクション フィードを複製して、編集画面に移動します。

フィード編集画面

次の4箇所を修正してから Save & Continue ボタンをクリックします。

ラベル
Name「ロケーション」エントリ
Feed URLhttps://craft3.dev/import/entry/locations.json
Sectionロケーション
Entry Typeロケーション

フィールドマッピングの設定:「ロケーション」セクション

マッピング設定画面

次の項目を修正してから Save & Continue ボタンをクリックします。

FeildFeed Element
住所<address>
お問い合わせ方法: ラベル<Matrix/contactMethods/contactMethod_label>
お問い合わせ方法: 値<Matrix/contactMethods/contactMethod_data>
メールアドレス<email>

その後、インポートを実行してください。

フィード設定の修正:「ワークス」セクション

再度 「サービス」セクション フィードを複製して、編集画面に移動します。

フィード編集画面

次の4箇所を修正してから Save & Continue ボタンをクリックします。

ラベル
Name「ワークス」エントリ
Feed URLhttps://craft3.dev/import/entry/work.json
Sectionワークス
Entry Typeワークス

フィールドマッピングの設定:「ワークス」セクション

マッピング設定画面

次の項目を修正してから Save & Continue ボタンをクリックします。

FeildFeed Element
大見出し<heading>
小見出し<subheading>
サービス種別<servicesPerformed>
サムネイル画像<featuredThumb>
背景色<backgroundColor>

その後、インポートを実行してください。

エントリ一覧

グローバルナビゲーションから エントリ に移動すると、ひと通りインポートできていると思います。

まとめ

ここでは Feed Me プラグインを利用して、セクションごとのエントリをインポートする方法を復習してみました。

似通ったフィールド構成のセクションがある場合、フィードの複製機能を利用することで設定が引き継がれ、最小限の調整で済むのが便利ですね。

次回は「サービス」および「ワークス」を対象に「セクション詳細ページ向けのテンプレート作成」を行います。