これは Craft CMS Advent Calendar 2018 19日目の記事です。
連載「サンプル制作で覚える Craft 3 サイト構築の基本」として、エントリデータのインポート編と同様に Feed Me プラグインによるエントリのインポートを行います。
ここでは、次の作業を行います。
- アセットの登録
- JSON データの準備
- フィードの設定、および、インポートの実行
インポート用の 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 URL | https://craft3.dev/import/entry/services.json |
| Section | サービス |
| Entry Type | サービス |
フィードのオプション設定:「サービス」セクション

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

次の項目を修正してから Save & Continue ボタンをクリックします。
| Feild | Feed 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 URL | https://craft3.dev/import/entry/locations.json |
| Section | ロケーション |
| Entry Type | ロケーション |
フィールドマッピングの設定:「ロケーション」セクション

次の項目を修正してから Save & Continue ボタンをクリックします。
| Feild | Feed Element |
|---|---|
| 住所 | <address> |
| お問い合わせ方法: ラベル | <Matrix/contactMethods/contactMethod_label> |
| お問い合わせ方法: 値 | <Matrix/contactMethods/contactMethod_data> |
| メールアドレス | <email> |
その後、インポートを実行してください。
フィード設定の修正:「ワークス」セクション
再度 「サービス」セクション フィードを複製して、編集画面に移動します。

次の4箇所を修正してから Save & Continue ボタンをクリックします。
| ラベル | 値 |
|---|---|
| Name | 「ワークス」エントリ |
| Feed URL | https://craft3.dev/import/entry/work.json |
| Section | ワークス |
| Entry Type | ワークス |
フィールドマッピングの設定:「ワークス」セクション

次の項目を修正してから Save & Continue ボタンをクリックします。
| Feild | Feed Element |
|---|---|
| 大見出し | <heading> |
| 小見出し | <subheading> |
| サービス種別 | <servicesPerformed> |
| サムネイル画像 | <featuredThumb> |
| 背景色 | <backgroundColor> |
その後、インポートを実行してください。

グローバルナビゲーションから エントリ に移動すると、ひと通りインポートできていると思います。
まとめ
ここでは Feed Me プラグインを利用して、セクションごとのエントリをインポートする方法を復習してみました。
似通ったフィールド構成のセクションがある場合、フィードの複製機能を利用することで設定が引き継がれ、最小限の調整で済むのが便利ですね。
次回は「サービス」および「ワークス」を対象に「セクション詳細ページ向けのテンプレート作成」を行います。