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