AEM / CQ5 - livecopy - 如何获取给定页面路径的实时复制页面列表(如果有)(在本例中为蓝图)

时间:2017-07-19 11:08:47

标签: cq5 aem

我想获取任何给定蓝色打印页面的实时复印页面列表。所以,如果我给出了一个页面路径,我应该能够列出所有的实时副本(如果有的话)。这可以通过任何API实现吗?

2 个答案:

答案 0 :(得分:3)

资源(页面)的实时副本可以由官方API

获取

您只需使用2 HOUR PARKING 7-6\+12即可获得实时关系。

根据您使用的AEM版本以及BluePrint设置的复杂程度以及LiveCopy继承(和取消)的深度,此API可能会对性能产生影响。

  • 对于AEM 6.0 SP3之前的版本,它会很慢并且不会完全优化。
  • AEM 6.1 SP1以及最新版本,此API针对性能进行了优化。

实际上,它应该返回通过CQ蓝图管理器屏幕可见的相同数据。

答案 1 :(得分:0)

需要执行以下步骤

  • 向pom.xml添加依赖项

    <dependency>
         <groupId>com.day.cq.wcm</groupId>
         <artifactId>cq-msm-api</artifactId>
         <version>5.7.2</version>
         <scope>provided</scope>
    </dependency>       
    
  • 添加两个引用

    @Reference
    private ResourceResolverFactory resolverFactory;
    
    @Reference
    LiveRelationshipManager liveRelManager;
    
  • 在需要liveCopy列表的位置添加代码。

     List<LiveCopy> liveCopyList = new ArrayList();
        try {
            ResourceResolver resourceResolver = resolverFactory.getAdministrativeResourceResolver(null);
            String givenPageOrBlueprint = "/content/we-retail/ca/en/experience/climbing-in-the-massif-du-mont-blanc";
            Resource res = resourceResolver.getResource(givenPageOrBlueprint);
            RangeIterator rangeIterator = liveRelManager.getLiveRelationships(res,"",null);
            while (rangeIterator.hasNext())
            {
                LiveRelationship liveCopy =(LiveRelationship) rangeIterator.next();
                liveCopyList.add(liveCopy.getLiveCopy());
    
            }
    
        } catch (Exception e) {
            e.printStackTrace();
        }