GraphQL“includeVariations”在AEMaaCS中使用过滤器返回空

在AEMaaCS中,当应用附加筛选器(例如,includeVariations:true)时,GraphQL查询中的_path参数返回空结果。 获取具有特定过滤器的内容片段变体时,会发生这种情况。 要解决此问题,请启用混合筛选并修改查询筛选器。

描述 description

环境

  • 产品: Adobe Experience Manager (AEM) as a Cloud Service — 站点
  • 实例: 开发

问题/症状

  • 使用includeVariations:true返回正确的结果。
  • 添加筛选器(例如_path)会导致空查询输出。
  • 通过过滤器获取内容片段变量时发生

解决方法 resolution

要解决此问题,请执行以下步骤:

  1. 通过将cfGlobalVersion=1属性添加到/content/dam启用混合筛选。 它提高了查询性能并修复了基于路径的过滤问题。 有关更多详细信息,请参阅使用AEM GraphQL混合筛选文档。

  2. 在应用于生产环境之前,请在较低的环境中测试该扩展。

  3. 修改查询过滤器。 在表达式中为STARTS_WITH使用_path运算符,而不是EQUALS

    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. 要优化查询设计,如果只需要一个特定变体,请使用变体参数直接在查询中指定它,而不是依赖于includeVariations: true

  6. 检查关联内容模型缺失的无效内容片段。

  7. 清理无效片段,或将它们与相应的模型关联以使其有效。

  8. 在启用混合筛选或进行更改后,请验证创作实例和发布实例上的日志,以确认设置应用正确。

  9. 在只需要一个片段时谨慎使用列表查询;首选定向查询(例如,pageByPath)。

相关阅读

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