Aem 显示CQ页面的旧版本
出于审计目的,我需要创建一个工具,让作者可以查看CQ页面的旧版本。我使用以下代码(在使用cq:Page作为资源类型的SlingServlet中使用)通过JCR VersionManager获得了可用的版本: 版本的路径指向,例如,Aem 显示CQ页面的旧版本,aem,Aem,出于审计目的,我需要创建一个工具,让作者可以查看CQ页面的旧版本。我使用以下代码(在使用cq:Page作为资源类型的SlingServlet中使用)通过JCR VersionManager获得了可用的版本: 版本的路径指向,例如,/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0,在这里我可以看到一个名为jcr:frozenNode的子节点,它似乎代表这个特定版本的jcr:content
/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0
,在这里我可以看到一个名为jcr:frozenNode
的子节点,它似乎代表这个特定版本的jcr:content节点
如何让CQ在此版本中呈现页面?我希望url带有一些参数或选择器,但我没有找到任何文档。我试图用Timewarp对其进行反向工程,但那里的URL似乎仍然是原始的,魔法隐藏在某个地方。我也与adobe支持部门联系过这一点,除了Timewarp之外,似乎没有实现这一点的内置功能。尽管如此,我还是做了一些实验,找到了一个可行的解决办法。虽然对于模板中有许多固定组件的复杂布局来说可能并不容易,但幸运的是,在我们的例子中,我们主要有一个parsys。 因此,我的解决方案如下:通过url中的两个选择器加载旧版本:
versionhistory.jsp
的呈现脚本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" />
<cq:include path="/jcr:system/jcr:versionStorage/d6/23/4f/d6234f36-3360-4024-bee2-411020ac63ae/1.0/jcr:frozenNode/par" resourceType="foundation/components/parsys" />