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

  • 本文关键字:一页 浏览 导航 AEM 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 中不存在这样的东西。

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

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

两种方法——

  1. 在应用的基本页面中,添加呈现 json 的 jsplistChildren.jsp
  2. 创建具有选择器listChildren和扩展json的基于资源类型的 servlet。资源类型是页面的资源类型myapp/page/testpage

在正在呈现的页面的父页面上调用此终结点,因此您可以获得所有同级页面路径和当前页面路径的列表。可以使此终结点可捕获,以避免多次发布命中。

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

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

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

我创建了一个组件名称"下一个上一个分页",并使用了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

相关内容

  • 没有找到相关文章

最新更新