CMS Connect (JSON) 式
サイトページにコンポーネントを配置するときに、JSON 式を使用してそのプロパティを指定します。たとえば、ブログ記事内で対応付けている場合、CMS からブログの ID、タイトル、著者、コンテンツを取得する式を定義できます。
この JSON 構造をコンテンツソースとして使用した例を見てみましょう。この JSON レスポンスボディの例は、Drupal CMS からのものです。
CMS 接続を設定するには、コンテンツ項目 (ブログなど) またはコンテンツリスト (ブログシリーズ) を作成します。コンポーネントをページに追加するときに、JSON 式を入力してそのプロパティを定義します。
たとえば、タイトルを取得するために、式 @data/attributes/title でサンプル JSON リソースから「DIY Dryer Vent Cleaning (DIY: ドライヤーの排気口の掃除)」を取得します。@ 記号は、テキストがタイトル要素を参照する JSON 式を表すことを示します。

基本的な JSON 式
CMS JSON 接続の場合、式の構文は RFC 6901 の JSON ポインタ仕様に従います。サンプルコンテンツソースの場合、親ノード @data は最上位のソースコンテンツへのポインタです。ネストされた要素にアクセスするには、単にパスを指定します。たとえば、式 @data/attributes/body/value はブログコンテンツを参照します。
配列内の値にアクセスする場合、開始インデックス値は 0 です。単純な配列を含む JSON ソースの例を次に示します。
このソースを使用すると、左側の式で右側の出力が生成されます。
| 式の例 | 出力 |
|---|---|
| @/array/0/key | 1 |
| @/array/1/key | 2 |
| @/array/1/dictionary/a | "Appliance" |
JSON 式での関数の使用
where、lookup、concat 関数を使用して、より複雑な式を作成できます。where 関数を使用して、配列要素を絞り込みます。この関数は、演算子 'eq' (次の文字列と一致する)、'ne' (次の文字列と一致しない)、'lt' (<)、'gt' (>)、'le' (以下)、または 'ge' (以上) を使用して 2 つの値を比較します。
| 式の例 | 出力 |
|---|---|
| @/array[where(key,'eq',2)]/0/dictionary/b | "Breaker" |
| @/array[where(key,'eq',2)][where(var,'eq',3)]/0/dictionary/d | "Dryer" |
最初の例では、where 式は配列を絞り込んで、キーの値が「2」と一致する場所を見つけます。2 番目の例では、2 つの where 関数を使用しています。目的の配列要素を見つけるには、両方の条件が満たされている必要があります。
- 開始ノード
- 開始ノード内を調べるためのキー
- キーと照合する文字列または数値
| 式の例 | 出力 |
|---|---|
| @lookup(/array,key,2)/0/var | 3 |
| @lookup(/array,key,1)/0/dictionary/a | "Air gap" |
| @lookup(/array,key,2)/0/dictionary/a | "Appliance" |
concat 関数は、指定した文字列とパラメータを連結します。式 @concat('DIY Focus', ': ', 'about your ' , /array/1/dictionary/d) では "DIY Focus: about your Dryer" が出力されます。CMS で、姓要素と名要素を使用して配列内に著者名を保存している場合、著者の氏名を出力するには、@concat(author/first_name,' ',author/last_name) などの式を使用します。
補足情報
JSON 式を作成するときは、次の点に留意してください。
- 文字列は一重引用符で囲みます。たとえば、式に文字列 hello を含めるには @'hello' と指定します。文字列に @ 文字を含めるには、'myname@gmail.com' のように一重引用符で囲みます。
- Boolean 値を示すには、true または false を使用します。値 true は Boolean ですが、'true' は文字列です。
- 同階層にはピリオド (.) を使用し、親には 2 つのピリオド (..) を使用して、現在のコンテキストに相対的な同階層または親要素を指定します。たとえば、タイトルで検索するには、@data/attributes/title/../id を指定して、タイトルに対応する ID を取得します。
- バックスラッシュ文字 (\) をエスケープ文字として使用します。たとえば、@/author/name は author 要素の下位の name を検索しますが、@/author\/name は author/name をキーとして検索します。
エラーのシナリオ
間違いはときどき起こります。JSON 式が正しくない場合に考えられるエラーメッセージのいくつかを次に示します。
- エクスペリエンスビルダーのプロパティエディタに無効な JSON パスを入力する。たとえば、著者の JSON 式を @author/name ではなく @author/invalid として入力すると、次のようなエラーメッセージが表示されます。

- 期待値が 1 つのみの場合に複数の値を返す式を入力する。たとえば、著者の JSON 式を @author/name ではなく @author として入力すると、次のエラーメッセージが表示されます。

- CMS 接続のコンテンツリストまたは接続の詳細を作成するときに、無効な URL パスを指定する。問題に応じて、HTTP エラー (HTTP 0 エラーや HTTP 404 エラーなど) または次のようなエラーが表示されます。CMS 接続の設定を確認します。
