如果该组件存在于该页面中,则仅选择 AEM 中模板的特定页面

问题描述

我在 AEM 中有一个模板,我必须在其中选择该组件存在于页面中的模板的所有页面

当前查询

SELECT * FROM [cq:PageContent] AS page
WHERE  ISDESCENDANTNODE(page,'/content')
AND [cq:template]="/conf/we-retail/settings/wcm/templates/experience-page"

这将返回所有页面,但我必须返回选择性页面。 例如,当前模板中存在2个文本组件,其中一个文本组件在P1页面上被解锁和修改。 现在该组件已在页面 p1 上创建。

我必须在结果中返回那个 P1 页面

解决方法

您可以通过连接实现这一点:

SELECT page.*
FROM [nt:unstructured] AS component
INNER JOIN [cq:PageContent] AS page
ON ISDESCENDANTNODE(component,page)
WHERE component.[sling:resourceType] = 'your/text/node/resource/type/here'
AND ISDESCENDANTNODE(page,'/content')
AND page.[cq:template]="/conf/we-retail/settings/wcm/templates/experience-page"

但是,除非您拥有所有正确的索引,否则这可能是一个缓慢的查询。 此外,对于包含此组件的多个实例的页面,它会返回重复条目(我尝试使用 SELECT DISTINCT,但没有帮助)。