如何在aem中的下一页/上一页上导航/浏览?

时间:2018-10-02 20:04:29

标签: java aem

我正在使用 AEM 6.3 开发页面。现在,我有一种情况要开发一个页面,其中包含2个链接,分别浏览到下一页和上一页以及当前页面。假设我在项目站点 / content / project / en 下有3个页面。

  • A页
  • 页面B
  • 页面C

假设,如果我位于页面B 上,那么我的下一页应该是页面C ,上一页应该是页面A 。这两个链接(下一个/上一个)应该将我重定向到页面A 页面B

可能有很多方法可以做到这一点,但是我要记住的是,我将发出ajax get请求,该请求将以键/值格式返回下一页和上一页。为此,我将使用sling servlet对象获取页面路径,并使用查询生成器在该路径上进行查询以获取下一页和上一页。如果页面数量非常有限,则此方法效果很好,但如果页面增加,则将很耗时。

我想要一个简单的解决方案来实现这一目标。还是aem中有任何插件可以做到这一点?我还尝试使用 currentPage.nextSibling()来做到这一点,但是aem中没有这样的东西。

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案是创建一个端点-

  • 可以在页面上调用
  • 将页面路径(使用page.listChildren())作为JSON数组返回

两种方法-

  1. 在应用的基本页面中,添加呈现json的jsp listChildren.jsp
  2. 使用选择器listChildren和扩展名json创建一个基于resourceType的servlet。 ResourceType是页面的resourceType myapp/page/testpage

在要呈现的页面的父页面上调用此终结点,这样您就可以获得所有同级页面路径和当前页面路径的列表。您可以将此端点设置为可捕获的,从而避免多次发布。

一旦获得JSON,请在JS中使用它来获取当前页面路径的索引(使用find(‘path/to/current/page))。一旦有了索引,就可以使用index-1和index + 1来获取上一页和下一页的路径。

注意-如果您在网站网址中使用短路径,请确保JSON也返回短路径

答案 1 :(得分:0)

作为新要求的补充,应将下一个/上一个链接上的页面与当前页面相对应的创建日期排序。所以我想出了以下解决方案。

我已经创建了一个组件名称“ Next Previous Pagination”,并使用了HTL语言的 WCMUsePojo 模型。该模型负责获取当前页面的下一页和上一页。以下是用于获取下一页和上一页的jcr查询。

对于下一页,

select page.* from [cq:Page] AS page WHERE 
ISDESCENDANTNODE(page,'/content/project/myCurrentPage') 
AND page.[jcr:content/jcr:created] >= CAST('${createdDateOfCurrentPage}' AS 
DATE) AND NAME(page) <>'${currentPageName}' ORDER BY page. 
[jcr:content/jcr:created] asc Limit 1

对于上一页,

select page.* from [cq:Page] AS page WHERE 
ISDESCENDANTNODE(page,'/content/project/myCurrentPage') 
AND page.[jcr:content/jcr:created] <= CAST('${createdDateOfCurrentPage}' AS 
DATE) AND NAME(page) <>'${currentPageName}' ORDER BY page. 
[jcr:content/jcr:created] desc Limit 1