显示较旧版本的CQ页面

时间:2014-11-25 12:11:05

标签: cq5 aem

出于审计目的,我得到了创建工具的要求,作者可以在其中查看旧版本的CQ页面。我设法使用以下代码获取JCR VersionManager的可用版本(在SlingServlet中使用cq:Page作为resourceType):

Session session = request.getResourceResolver().adaptTo(Session.class);
VersionManager vm = session.getWorkspace().getVersionManager();
VersionHistory versionHistory = vm.getVersionHistory(request.getResource().getPath());
VersionIterator vIt = versionHistory.getAllVersions();
while (vIt.hasNext()) {
    Version version = vIt.nextVersion();
    String no = version.getName();
    Calendar createdDate = version.getCreated();
    // do something with it
}

版本的路径指向例如/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0我可以看到一个名为jcr:frozenNode的子节点,它似乎代表了这个特定版本的jcr:content节点。

如何告诉CQ在此版本中呈现页面?我希望有一个参数或选择器的网址,但我没有找到任何文档。我尝试使用Timewarp对其进行逆向工程,但是URL似乎仍然是原始的,魔法隐藏在某个地方。

1 个答案:

答案 0 :(得分:1)

我也与adobe支持有关,并且在时间扭曲旁边似乎没有内置功能来实现这一目标。不过我做了一些实验,发现了一个可行的解决方法。虽然模板中有许多固定组件的复杂布局可能并不容易,但幸运的是我们主要有一个解析器。 所以我的解决方案如下:我通过url中的两个选择器加载旧版本:

  1. 我称之为“versionhistory”,用于在页面组件上使用另一个名为versionhistory.jsp的呈现脚本。
  2. 包含实际版本/节点名称(将“。”替换为“_”以不添加更多选择器
  3. 在我的versionhistory.jsp中,我只为parsys组件添加正确的路径(从问题中获取示例路径),并包含与默认脚本中相同的布局元素,例如page.jsp

    <cq:include path="/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0/jcr:frozenNode/par" resourceType="foundation/components/parsys" />
    
相关问题