GraphQLの「includeVariations」は、AEMaaCS でフィルターを使用して空を返します

AEMaaCS では、追加のフィルター(includeVariations:true など)が適用されると、GraphQL クエリの _path パラメーターが空の結果を返します。 これは、特定のフィルターを使用してコンテンツフラグメントのバリエーションを取得する場合に発生します。 この問題を修正するには、ハイブリッドフィルタリングを有効にし、クエリフィルターを変更します。

説明 description

環境

  • 製品: Adobe Experience Manager(AEM)as a Cloud Service - Sites
  • インスタンス: 開発

問題/症状

  • includeVariations:true を使用すると、正しい結果が返されます。
  • フィルター(_path など)を追加すると、空のクエリが出力されます。
  • フィルターを使用してコンテンツフラグメントのバリエーションを取得する際に発生します

解決策 resolution

この問題を解決するには、次の手順に従います。

  1. cfGlobalVersion=1 プロパティを /content/dam に追加して、ハイブリッドフィルタリングを有効にします。 クエリのパフォーマンスを向上し、パスベースのフィルタリングの問題を修正します。 詳しくは、AEM GraphQL ハイブリッドフィルタリングの使用 ​ ドキュメントを参照してください。

  2. 実稼動環境に適用する前に、より低い環境でテストします。

  3. クエリフィルターを変更します 式の STARTS_WITH の代わりに、_pathEQUALS 演算子を使用します。

    code language-none
    [
                {
                    value: "/content/dam/content-fragments/sites/example-path/",
                     _operator: STARTS_WITH
                 }
            ]
    

    注意 :この回避策は、ハイブリッドフィルタリングが有効になっている場合は機能しません。

  4. 複数のバリエーションが必要な場合は、次に示すように、エイリアスを使用して各バリエーションを明示的にクエリします。

    code language-none
    query($path: String!) {
           standard: pageByPath(_path: $path, variation: "standard") {
             item {       _path
               title       _variation
             }
           }
           premier: pageByPath(_path: $path, variation: "premier") {
             item {       _path
               title       _variation
             }
           }
         }
    
  5. クエリデザインを最適化するには、特定のバリエーションが 1 つだけ必要な場合は、includeVariations: true に依存するのではなく、バリエーションパラメーターを使用してクエリ内で直接バリエーションを指定します。

  6. 関連するコンテンツモデルが欠落している無効なコンテンツフラグメントを確認します。

  7. 無効なフラグメントをクリーンアップするか、適切なモデルに関連付けて有効にします。

  8. ハイブリッドフィルタリングを有効にするか変更を加えた後、オーサーインスタンスとパブリッシュインスタンスの両方でログを確認し、設定が正しく適用されていることを確認します。

  9. 必要なフラグメントが 1 つだけの場合は、リストクエリは慎重に使用します。ターゲットクエリを優先します(例:pageByPath)。

関連資料

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f