Как я могу изменить имя узла, который AEM создает, когда компонент впервые помещается на страницу? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь выяснить, возможно ли настроить имя узла, создаваемого AEM при первом добавлении компонента на страницу.

Узел cq: Component, в котором определен мой компонент, называется«Knowledge-Center-Question», и когда я его отбрасываю, AEM создает узел с именем «Knowledge_center_que» в дереве узлов страницы, используя его логику именования по умолчанию.Я бы предпочел, чтобы имя узла было «вопросом», когда оно отбрасывается (но я бы не стал переименовывать сам компонент).

Похоже, что такого рода вещи должны быть возможны, учитывая то, насколько настраиваемым является всев AEM, но я изо всех сил пытаюсь найти ответ.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Взгляните на :nameHints, который можно отправить в качестве аргументов POST для SlingPostServlet: https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html#algorithm-for-node-name-creation

0 голосов
/ 09 февраля 2019

Вам необходимо написать собственный пост-процессор 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());
    }

   }
...