Craft CMS のテンプレートで JSON を返す方法をご紹介します。
例えば、 entry
がセットされているときはエントリーの情報を、セットされていないときはエラーを返したいとします。
結論からいうと Twig テンプレートは次のようになります。
{% header 'Content-Type: application/json; charset=utf-8' %}
{% set response = { status: 'error' } %}
{% if entry is defined %}
{% set response = {
status: 'success',
id: entry.id,
title: entry.title,
sectionId: entry.sectionId,
} %}
{% endif %}
{{ response | json_encode() | raw }}
重要なのは先頭でヘッダーをセットすることと、出力するところで | json_encode() | raw
を組み合わせるところです。
なお、Craft の場合は Element API for Craft CMS というプラグインで、自由に API を定義できます。 上記のようにテンプレートで実装するのが良いか、API で実装するのが良いか、要件と照らし合わせて選択したら良いと思います。
以上です。