Data APIについて
Data APIでの読み込み
フリーレイアウト型のカスタムフィールドに入力した値を、Data APIで扱うこともできます。
前述したように、フリーレイアウト型のカスタムフィールドの値は、JSON文字列として保存されます。Data APIで記事等のオブジェクトを読み込んだときにも、フリーレイアウト型のカスタムフィールドの値は、JSON文字列の形で読み込まれます。
各プログラム言語からData APIで記事等にアクセスした後、言語ごとのJSON系の関数を使って、その言語に応じたデータ構造に変換することができます。
たとえば、以下のような状況だとします。
- 記事に、ベースネームが「entry_flcf」というフリーレイアウト型のカスタムフィールドを追加した。
- このカスタムフィールドに「txt1」と「txt2」のフィールドを追加した。
- JavaScriptのData APIライブラリを使い、Data APIのオブジェクトを変数apiに割り当てた。
この状況で以下のコードを実行すると、「各記事に対する処理」の中では、「entry.flcf」でこのカスタムフィールドにアクセスすることができます。また、「entry.flcf[番号].txt1」で、txt1フィールドに代入した個々の値にアクセスできます(番号は0~件数-1の数値)。
Data APIで記事を読み込んで処理する例
api.listEntries(サイトID, function(response) {
var entries = response.items;
for (var i = 0; i < entries.length; i++) {
var entry = entries[i];
for (var j = 0; j < entry.customFields.length; j++) {
if (entry.customFields[j].basename == 'entry_flcf') {
entry.flcf = jQuery.parseJSON(entry.customFields[j].value);
}
}
各記事に対する処理
}
});
Data APIでの保存
Data APIでは、記事等のオブジェクトを保存することもできます。その際に、フリーレイアウト型のカスタムフィールドの値を保存することもできます。読み込みの場合と逆に、保存したいデータ構造をJSON文字列に変換して、対象のカスタムフィールドの値として代入しておくようにします。
たとえば、以下のような状況だとします。
- 記事に、ベースネームが「entry_flcf」というフリーレイアウト型のカスタムフィールドを追加した。
- このカスタムフィールドに「txt1」と「txt2」のフィールドを追加した。
- JavaScriptのData APIライブラリを使い、Data APIのオブジェクトを変数apiに割り当てた。
- Data APIからMovable Typeにログインする処理はすでに終わっている。
この状況で、記事を新規作成して、このカスタムフィールドに以下の表の値を保存したいとします。
カスタムフィールドに保存する値
txt1フィールド | txt2フィールド |
こんにちは | 山田 |
さようなら | 田中 |
この処理は以下のように書くことができます。記事のデータ(変数entryData)を作成する際に、「customFields」というプロパティを作り、そこにカスタムフィールドのベースネームと値を代入します。
なお、値を作る際に「jQuery.toJSON」という関数を使っています。この関数は、「jQuery JSON Plugin」というjQueryのプラグインで提供されています。Movable Typeの「mt-static」→「jquery」ディレクトリにある「jquery.json.js」を組み込むことで、この関数を使うことができます。
Data APIで記事を作成する例
var entryData = {
'title': '記事のタイトル',
'body': '記事の本文',
'customFields': [
{
basename: "entry_flcf",
value: jQuery.toJSON(
[
{ "txt1":"こんにちは", "txt2":"山田", "flcf_row_is_null":"" },
{ "txt1":"さようなら", "txt2":"太郎", "flcf_row_is_null":"" }
]
)
}
]
};
api.createEntry(サイトID, entryData, function(response) {
記事保存が終わった時の処理
});