Movable Typeのコンテンツタイプで投稿したデータでjsonを生成することがあったので、その際の対応方法をメモ。
サンプルコード
今回はコンテンツデータのラベルと公開日、コンテンツタイプのフィールドで追加したカテゴリーを含める想定で試してみます。
インデックステンプレートで以下の内容を作成して、jsonファイルで保存します。
{
"data":[
<mt:Contents content_type="【コンテンツタイプ名】" limit="10">
{
"title":"<mt:ContentLabel encode_json="1">",
"date":"<mt:ContentDate>",
"category":[
<mt:ContentField content_field="【カテゴリーのコンテンツフィールド名】">
"<$mt:CategoryLabel encode_json="1">"<mt:Unless name="__last__">,</mt:Unless>
</mt:ContentField>
]
}<mt:Unless name="__last__">,</mt:Unless>
</mt:Contents>
]
}
mt:Contentsでループを回しているだけなので特にややこしい点はないですが、ポイントは値をjsonでも扱えるようにencode_jsonを設定している点と、12行目で最後の配列のみカンマを入れないようにしている点です。
これで以下のようなjsonファイルが生成されるようになりました。
{
"data":[
{
"title":"タイトルB",
"date":"2021年11月 6日 00:41",
"category":[
"カテゴリA",
"カテゴリB"
]
},
{
"title":"タイトルA",
"date":"2021年11月 6日 00:34",
"category":[
"カテゴリA"
]
}
]
}
今回コンテンツタイプで試しましたが、記事やウェブページでも基本的には同じように生成できます。
コメントが承認されるまで時間がかかります。