MTOS から Craft CMS に JSON 形式でデータを移行する方法
目次
MTOS に登録されている記事データを JSON 形式で Craft に移行しました。「Feed Me」という Craft プラグインを使ってとても手軽に移行できたので、その方法をご紹介します。
Feed Me プラグインのインストールと設定
はじめに Feed Me という Craft プラグインをインストールします。
このプラグインは、XML や RSS、ATOM、JSON などのフォーマットで Craft にデータをインポートすることができます。すべての機能を使いためには $99 の Pro 版を購入する必要がありますが、Entries だけなら無料版でインポートすることができます。
プラグインのインストール手順は下記のとおりです。
- 上記ページで ZIP ファイルをダウンロードして展開します。
- その中にある
feedmeディレクトリをcraft/pluginsにアップロードします。 設定 > プラグインのページへ移動し、 Feed Me プラグインのインストールをクリックします。Welcome to Feed Me!という画面が表示されるのでGet Startedをクリックしてインストール完了です。

Feed Me でインポートする JSON ファイルを作成
MTOS のインデックステンプレートで、Feed Me でインポートするための JSON ファイルを作成します。
JSON ファイルの書式は下記のとおりとなります。
{
"channel": {
"items": [
{
"title": "My Title",
"slug": "my-title"
},
{
"title": "Another Title",
"slug": "another-title"
}
]
}
}
次に、この書式でインポートする記事の情報を書き出します。JSON を書き出すためのインデックステンプレートは下記のようになります。
本文欄からサイトのホスト名部分を削除するための正規表現をセット
pattern =//g
replacement =
配列のための変数を初期化
配列 items に入れていく各アイテムをセットするハッシュ変数 item を初期化
各アイテムの情報をハッシュ変数 item にセット
ハッシュ変数 item を配列変数 items に push
配列変数 items を変数 channel にセット
最終的に出力する変数 out に channel をセット
変数 out を JSON で出力
投稿日時もインポートする場合は EntryDate に language="en" モディファイアをつけるのがポイントです。
また、本文欄に入っている画像の URL などからもホスト名部分を regex_replace モディファイアで削除しておきます。
regex_replace="$pattern","$replacement"
regex_replace モディファイアに渡している変数は、テンプレートの冒頭でセットしています。
このテンプレートで書き出した JSON の URL をメモしておきましょう。
画像を移動しておく
MTOS の本文欄に入っていた画像や、サムネイルが入っている asset_c ディレクトリを予め craft/public ディレクトリに移動しておきます。
Feed Me プラグインの設定とインポート
Feed Me プラグインをインストールすると、管理画面の左メニューに Feed Me というメニューが追加されます。これをクリックして Feed Me Feeds ページへ移動し New feed ボタンをクリックします。

各項目に必要な値を入れていきましょう。
名前
今回のインポートの設定を保存しておく名前です。 From MTOS としました。
Feed URL
先程書き出した JSON ファイルの URL です。
Feed Type
JSON Feed を選択します。
Primary Element
今回のフォーマットで作成した場合は items になります。
Element Type
エントリ を選択します。
セクション
データをインポートするセクションを選択します。
入力タイプ
データをインポートするセクションの入力タイプを選択します。
Import strategy
どのようにインポートするかを選択します。今回はデータの以降なので Create new elements を選択します。
Passkey
初期値のままでOKです。
Backup
OFF にしておきます。
ここまで入力したら、 Save & Continue ボタンをクリックします。
次に Craft のどのフィールドに JSON ファイルの値をインポートするかを設定します。
各項目のドロップダウンリストから必要な割り当てる情報を選択します。
この中で、 ステータス と 投稿者 は Don't import のままで、右側のドロップダウンリストから値を選択しました。 Entry ID は Don't import にしました。

ページ最下部の Set a unique identifier for existing elements では重複チェックするフィールドを選択します。今回は スラグ だけ選択しました。
ここまでの設定が終わったら Save & Iimport ボタンをクリックしてインポートを開始します。
Processing complete! が表示されればインポート完了です。

インポートが終わったらサイドメニューの エントリ でインポートが成功しているか確認しましょう。
まとめ
今回は Feed Me プラグインのエントリのインポートを簡単にご紹介しました。
Pro 版を購入すればエントリ以外もインポートできるようになります。詳細は下記のページをご覧ください。

以上です。