0

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

4

2 回答 2

0

如果我理解正确,要么您已经实现了自己的激活页面的工作流程,要么您将遵循PreprocessorMateusz Chromiński 概述的方法。

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

于 2016-11-17T21:56:47.917 回答
0

我不确定你的意思

自定义复制模块


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

@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中的示例实现

于 2016-11-17T21:50:48.403 回答