我正在使用 AEM 6.2 并创建了一个自定义复制模块。我在 jcr:content 下的页面子节点中有一些属性,其值是同一网站中其他页面的路径字段。当我激活一个页面时,我也需要激活属性中引用的页面。比如我的页面路径是“/content/project/family/subfamily/TestPage” 我需要在“/content/project/family/subfamily/TestPage/abc123/jcr”下的节点属性“pathVal”中激活一个页面路径:内容”。我该怎么做呢?
问问题
1145 次
2 回答
0
如果我理解正确,要么您已经实现了自己的激活页面的工作流程,要么您将遵循Preprocessor
Mateusz 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 回答