1

我在 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 页面

4

1 回答 1

0

您可以通过加入来实现这一点:

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,但没有帮助)。

于 2021-06-28T13:39:18.077 回答