この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

CMS Connect (JSON) 式

コンテンツを再利用すると、時間と労力を節約できます。CMS Connect (JSON) コンポーネントの JSON 式を定義することで、既存のコンテンツをサイトページに対応付けることができます。

サイトページにコンポーネントを配置するときに、JSON 式を使用してそのプロパティを指定します。たとえば、ブログ記事内で対応付けている場合、CMS からブログの ID、タイトル、著者、コンテンツを取得する式を定義できます。

この JSON 構造をコンテンツソースとして使用した例を見てみましょう。この JSON レスポンスボディの例は、Drupal CMS からのものです。

1{
2	"data": {
3		"type": "node--page",
4		"id": "c53cf56c-f70d-456e-838b-47788742b074",
5		"attributes": {
6			"nid": 5,
7			"uuid": "c53cf56c-f70d-456e-838b-47788742 b074",
8			"vid ": 5,
9			"langcode": "en",
10			"title": "DIY Dryer Vent Cleaning",
11			"created": 1502133909,
12			"changed": 1502133933,
13			"body": {
14				"value": "This is the body of the blog article. Step 1...",
15				"summary ": "How to clean your dryer vent in 3 easy steps."
16			}
17		},
18		"relationships": {
19			"type ": {
20				"data ": {
21					"type": "node_type--node_type",
22					"id": "5b80bc9e-dc78-4612-add8-e46b2e2ff616"
23				}
24			}
25		}
26	}
27}

CMS 接続を設定するには、コンテンツ項目 (ブログなど) またはコンテンツリスト (ブログシリーズ) を作成します。コンポーネントをページに追加するときに、JSON 式を入力してそのプロパティを定義します。

たとえば、タイトルを取得するために、式 @data/attributes/title でサンプル JSON リソースから「DIY Dryer Vent Cleaning (DIY: ドライヤーの排気口の掃除)」を取得します。@ 記号は、テキストがタイトル要素を参照する JSON 式を表すことを示します。

コンポーネントプロパティの JSON 式を入力

基本的な JSON 式

CMS JSON 接続の場合、式の構文は RFC 6901 の JSON ポインタ仕様に従います。サンプルコンテンツソースの場合、親ノード @data は最上位のソースコンテンツへのポインタです。ネストされた要素にアクセスするには、単にパスを指定します。たとえば、式 @data/attributes/body/value はブログコンテンツを参照します。

配列内の値にアクセスする場合、開始インデックス値は 0 です。単純な配列を含む JSON ソースの例を次に示します。

1{
2 "array": [
3    {
4     "key": 1,
5     "dictionary": {
6        "a": "Air gap",
7        "b": "Belt",
8        "c": "Clog",
9        "d": "Drain"
10  },
11      "var": 2
12    },
13    {
14      "key": 2,
15      "dictionary": {
16        "a": "Appliance",
17        "b": "Breaker",
18        "c": "Coffeemaker",
19        "d": "Dryer"
20      },
21      "var": 3
22    }
23  ]
24}

このソースを使用すると、左側の式で右側の出力が生成されます。

式の例 出力
@/array/0/key 1
@/array/1/key 2
@/array/1/dictionary/a "Appliance"

JSON 式での関数の使用

wherelookupconcat 関数を使用して、より複雑な式を作成できます。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 関数は、JSON ドキュメントを検索するときに役立ちます。少なくとも 3 つのパラメータを取ります。
  • 開始ノード
  • 開始ノード内を調べるためのキー
  • キーと照合する文字列または数値
たとえば、JSON ソースで著者 ID またはキーが特定の値と一致するインスタンスを検索できます。
式の例 出力
@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 接続の設定を確認します。

    エラーメッセージの例