使用查询查找第一级页面

时间:2014-10-10 15:46:06

标签: cq5 aem

我想使用查询获取当前路径下的所有页面,因为我需要对它们进行排序,以便使用查询。我使用下面的标准,它给了我以下层次结构的页面,但也深入到它包含孩子。

        path=/content/geometrixx/en/toolbar
        type=cq:Page
        orderby=@jcr:content/cq:lastModified

我显示的结果如下:

/content/geometrixx/en/toolbar/newsletter  (crxde,  html,  json)
/content/geometrixx/en/toolbar/sitemap  (crxde,  html,  json)
/content/geometrixx/en/toolbar/account  (crxde,  html,  json)
/content/geometrixx/en/toolbar/account/register  (crxde,  html,  json)
/content/geometrixx/en/toolbar/account/register/thank_you  (crxde,  html,  json) 

在帐户页面中,我不需要结果集中的子页面。请提供适合此类查询的任何条件。

由于

2 个答案:

答案 0 :(得分:2)

您可以使用PathPredicateEvaluator

展示属性

示例查询将是

type=cq:Page
path=/content/geometrixx/en/toolbar
path.flat=true
orderby=@jcr:content/cq:lastModified
orderby.sort=desc

它将转换为以下XPath查询

/jcr:root/content/geometrixx/en/toolbar/element(*, cq:Page)
order by jcr:content/@cq:lastModified descending

要了解有关各种可用属性的更多信息,请参阅PredicateEvaluator的实现类。

答案 1 :(得分:0)

如果您正在使用XPath查询,则只需删除双正斜杠即可。例如。使用QueryBuilder调试器,您的谓词给出XPath /jcr:root/content/geometrixx/en/toolbar//element(*, cq:Page)

如果您将其更改为:

/jcr:root/content/geometrixx/en/toolbar/element(*, cq:Page)

即。在“元素”之前删除第二个正斜杠,它将只搜索直接的子元素。您可以在CRX资源管理器上预览:

http://localhost:4502/crx/explorer/ui/search.jsp?Path=&Query=%2fjcr%3aroot%2fcontent%2fgeometrixx%2fen%2ftoolbar%2felement(*%2c%20cq%3aPage)