问题描述
我在 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
,但没有帮助)。