第一次将组件放置在页面上时,如何更改AEM创建的节点的名称?

时间:2019-02-09 01:03:31

标签: aem cq5 jcr

我试图弄清楚是否有可能在我第一次在页面上放置组件时自定义AEM创建的节点的名称。

定义了我的组件的cq:Component节点被命名为“ knowledge-center-question”,当我将其删除时,AEM使用其默认命名逻辑在页面的节点树中创建一个名为“ knowledge_center_que”的节点。我希望节点名称在删除时为“ question”(但我不想重命名组件本身)。

考虑到AEM中所有内容的可定制性,这种事情似乎必须可行,但我一直在努力寻找答案。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

您需要编写一个自定义的Sling后处理器。在页面中放置了组件之后,将调用Sling后处理器。示例代码:

@Component(service = SlingPostProcessor.class, immediate = true, name = "com.aem.CustomPostProcessor")
public class CustomPostProcessor implements SlingPostProcessor {
  @Override
 public void process(SlingHttpServletRequest request, List<Modification> modifications) throws Exception {

    if (accepts(request)) {
        final Resource resource = request.getResourceResolver().getResource(request.getResource().getPath());
        // Your logic
        modifications.add(Modification.onCreated(resource.getPath()));
    }
   }

   protected boolean accepts(SlingHttpServletRequest request) {
    return "/my/resource/type".equals(request.getResource().getResourceType());
    }

   }