Как включить ресурс пользовательского компонента в шаблон руля AEM Social Communities?

В AEM 6.2 я хочу сделать это в руле.

<sly data-sly-resource="${'title' @ resourceType='myproject/components/content/common/title'}"/>

В частности, я перекрыл qnaforum.hbs, и мне нужно включить его туда. Официальная документация ( ссылка) говорит, что правильный способ сделать это:

{{include this.id path="title" resourceType="myproject/components/content/common/title"}}

Когда сделано так, есть три проблемы:

  1. Компонент появляется, но затем исчезает со страницы.
  2. Я получаю предупреждение "Принудительный тип ресурса не поддерживается при слинге, в том числе на стороне клиента"
  3. Сбой (404) GET-запроса к http://localhost:4502/content/myproject/qna-index-page/jcr:content/qna-parsys/qna/title.html в консоли браузера (как будто он пытается найти средство визуализации для ресурса заголовка по этому пути).

В том же файле qnaforum.hbs Adobe использует тот же самый компонент include для своих подписок, и, похоже, он работает нормально.

{{include this.id path="subscriptions" resourceType="/libs/social/subscriptions/components/hbs/subscriptions"}}

Включает ли этот тип работу только для компонентов социальных сообществ? Если так, как я могу включить пользовательский ресурс в шаблон руля?

1 ответ

Я помог кому-то еще, кто сталкивался с подобной проблемой. Я прилагаю фрагмент кода, который вызвал проблему, с которой вы столкнулись (исчезновение списка QnA), и исправление для этого.

Наложенный компонент QnAForum выглядел следующим образом

{{include this.id path="qnaforum-top" resourceType="custom/components/modules/qnaforum-top"}}
{{#if-wcm-mode mode="EDIT" }}
    <div class="scf-includeClientLib">{{includeClientLib js="cq.social.commons.widgets, cq.social.toggle"}}</div>
{{/if-wcm-mode}}
<div data-module="qna-index" class="scf scf-forum scf-qna " data-component-id="{{id}}" data-scf-component="social/qna/components/hbs/qnaforum">
    {{!-- Other QnA code --}}
</div>

Но код должен быть таким

{{#if-wcm-mode mode="EDIT" }}
    <div class="scf-includeClientLib">{{includeClientLib js="cq.social.commons.widgets, cq.social.toggle"}}</div>
{{/if-wcm-mode}}
<div data-module="qna-index" class="scf scf-forum scf-qna " data-component-id="{{id}}" data-scf-component="social/qna/components/hbs/qnaforum">
 {{!-- moving line1 from previous code snippet inside this parent div}}
 {{include this.id path="qnaforum-top" resourceType="custom/components/modules/qnaforum-top"}}
 {{!-- rest of QnA Code }}
</div>

Я сделал следующее изменение: переместил строку 1 в первом фрагменте кода в строку 5.

Консоль JS говорит, что отсутствует HTML, но он включается, хотя. Причиной ошибки консоли является способ работы include. Мы пытаемся извлечь html, и если мы не можем получить HTML, мы просим слинг разрешить компонент.

Другие вопросы по тегам