1. XM向けSitecore Experience Edge

Experience Edgeスキーマ

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Experience Edgeには、ヘッドレスSitecore開発の一般的なフロントエンドのユースケースに対応するように設計された読み取り専用のGraphQLスキーマがあります。Sitecoreアイテムに関する限られた情報が公開されます。たとえば、使用可能な標準フィールドがないとします。

次のクエリをエントリポイントとして使用できます。

  • item - パスまたはIDでアイテムをクエリできます。

  • layout - サイトとルートパスでアイテムをクエリできます。通常は、レイアウトサービスのJSON(rendered)にアクセスする目的で。

  • search - フィールド値または共通プロパティでアイテムを検索するためのブール型フィールド検索クエリを構築できます。

詳細については、クエリの例 を参照し、プレビュー エンドポイントIDEのGraphQLテストUIのDocsタブを使用してください。

テンプレート投影

Experience Edgeスキーマで使用可能なタイプは、パブリッシュされたSitecoreインスタンスのテンプレート定義を反映しています。厳密に型指定されたテンプレート フィールドを有効にするには、特定のタイプからフィールドを選択するインライン フラグメントを使用します。

Sitecoreでは、複数のテンプレートに同じ名前を付けたり、アイテム グラフ タイプのコア フィールドと競合するフィールド名を持つテンプレートを持つことができます。GraphQLでは、型とフィールドの名前は一意である必要があります。名前の競合が発生すると、作成日が最新のアイテムまたはフィールド アイテム _{guid} 名前に追加されます。作成日が使用されるのは、順序が安定している必要があり、グラフの種類の名前が参照後に変更されないようにするためです。

メモ

GraphQLタイプは、Helixコンテンツ構造に従うテンプレートに対してのみ作成されます。つまり、GraphQLタイプは、次のパスの下にあるテンプレートに対してのみ生成されます。

  • <foundation>/sitecore/templates/Foundation</foundation>

  • <feature>/sitecore/templates/Feature</feature>

  • <project>/sitecore/templates/Project</project>

  • <userdefined>/sitecore/templates/User Defined</userdefined>

ページネーション

Experience Edgeスキーマのページ分割されたクエリとフィールド(検索クエリなど)は、カーソルベースのシステムを使用して結果ページを要求します。

ページ分割されたクエリの場合:

  • クエリ引数には、first (返す結果の数) とafter (開始カーソル) があります。 firstデフォルト値は10です。

  • クエリ結果には、hasNext (より多くの結果があるかどうか) とendCursor (次のページを取得するためにafter引数で使用される) を含むpageInfoが含まれます。

  • クエリ結果には、totalも含まれます (使用可能な結果の合計数を提供します)。

    手記

    最初の引数は、Previewスキーマの基になるGraphQLライブラリで使用される複雑さの計算をクエリするための特別な意味を持ちます。特に、Itemグラフ タイプの ネストされたchildrenフィールドを使用すると、Query is too complex to executeなどのエラーが発生する可能性があります。次のセクションでは、クエリの複雑さを処理するための推奨事項について説明します。

クエリの複雑さ

Experience Edgeクエリの複雑さは250に制限されています。ランタイム環境で使用する前にクエリをテストして、複雑さの要件を満たしていることを確認することをお勧めします。クエリが複雑すぎる場合は、次の操作を試してください。

  • 複数の小さなクエリに分割します。たとえば、1つのクエリを使用してデータ セットを取得し、後続のクエリをそのデータセットに適用します。複数のオブジェクトから成る大規模なクエリは、クエリの複雑さを大幅に増大させます。

  • クエリから不要なフィールドを削除します。

コンテンツ検索に使用可能なフィールド

Experience Edgeでは、次の表に示す特別なフィールドに対してGraphQL searchクエリを使用できます。テンプレートをクエリする場合、クエリできるのはユーザー定義フィールドと次の特殊フィールドのみです。たとえば、サンプル項目テンプレートのユーザー定義のtitleフィールドをクエリーすることはできますが、_Sortorderはクエリーできません。

形容

_templates

基本テンプレートを含むすべてのテンプレートGUIDが含まれます。階層内でテンプレートを使用するすべてのアイテムを検索するために使用できます。

_path

親項目が含まれ、GUIDによって項目の子孫を取得するために使用できます。例えば、contains句と /homeパスのIDを使用すると、結果には /homeとその子 ( /home/about_usなど) が含まれます。

_parent

アイテムの直接の親のID。

_name

アイテム名。

_language

アイテムの言語。

_hasLayout

アイテムにプレゼンテーションの詳細/レイアウトデータがあるかどうかを示します。

これは、ユーザー定義フィールドでCONTAINS演算子を使用してアイテムを検索する例です。

query Search {
  search(
    where: {
      name: "title",
      value: "Sitecore",
      operator: CONTAINS
    }
  ) {
    results {
      id
      name
    }
  }
}

以下は、ユーザー定義フィールドで完全一致を使用してアイテムを検索する例です。

query Search {
  search(
    where: {
      name: "_parent"
      value: "110D559FDEA542EA9C1C8A5DF7E70EF9"
      operator: EQ
    }
  ) {
    results {
      id
      name
    }
  }
}

次に、複数の句を組み合わせる例を示します。

query Search {
  search(
    where: {
      AND: [
        {
          name: "_parent"
          value: "110D559FDEA542EA9C1C8A5DF7E70EF9"
          operator: EQ
        },
        {
          name: "title"
          value: "another"
          operator: CONTAINS
        }
      ]
    }
  ) {
    results {
      id
      name
    }
  }
}
この記事を改善するための提案がある場合は、 お知らせください!