AEM-在节点属性中激活页面引用以及页面

时间:2016-11-17 19:53:49

标签: cq5 aem

我正在使用AEM 6.2并创建了一个自定义复制模块。我在jcr:content下的页面子节点中有一些属性,其值是同一网站中其他页面的路径字段。 当我激活页面时,我还需要激活属性中引用的页面。 例如,我的页面路径是“/ content / project / family / subfamily / TestPage” 我需要在节点属性“pathVal”下激活页面路径 “/内容/项目/家庭/亚科/ TestPage / ABC123 / JCR:内容”。  我该怎么做?

2 个答案:

答案 0 :(得分:0)

我不确定你的意思

  

自定义复制模块

编写复制Preprocessor(请参阅docs)可能是一种方法。复制过程使用白板模式收集该接口的所有实现,然后循环调用它们中的每一个。

@Component
@Service
public class ReferencedPagePreprocessor implements Preprocessor {

    @Reference
    private Replicator replicator;

    @Reference
    private ResourceResolverFactory resolverFactory;

    public void preprocess(ReplicationAction action, ReplicationOptions options)  {
        // some extra filtering to avoid the calculation if it's not the expected page type

        String resourcePath = action.getPath();
        ResourceResolver resolver = getResolver();
        Resource resource = resolver.resolve(resourcePath);
        String referencedResourcePath = resource.adaptTo(ValueMap.class).get("pathVal", String.class);

        replicator.replicate(resolver.adaptTo(Session.class), ReplicationActionType.ACTIVATE, referencedResourcePath);
    }

    private ResourceResolver getResolver() {
        ...
    }
}

另请参阅ACS AEM Commons

中的示例实现

答案 1 :(得分:0)

如果我理解正确,您已经实施了自己的工作流程来激活页面,或者您会按照MateuszChromiński所概述的Preprocessor方法进行操作。

如果您编写了自己的工作流程来调用Replicator API,您可以有效地添加逻辑以获取引用的路径,并使用Replicator API

对其进行激活