이 가이드[" Discourse 테마 개발 입문자 가이드 를 읽은 후, 게시물 페이지의 “topic-above-post-stream” 플러그인 아웃렛에 post-avatar 위젯을 마운트해 보았지만 페이지에 표시되지 않았습니다.
아래는 제가 추가한 코드입니다.
<script type="text/x-handlebars" data-template-name="/connectors/topic-above-post-stream/post-page">
<div class="post-detail">
{{mount-widget widget="post-avatar"}}
</div>
</script>
무엇을 놓치고 있는 건가요?
위젯이 표시되는 데 필요한 속성이 누락된 것 같습니다… 예를 들어, 이 컨텍스트에서 위젯은 어떤 사용자의 아바타를 표시해야 하는지 어떻게 알 수 있을까요?
여기서 원본 위젯을 살펴보면:
});
createWidget("post-avatar-user-info", {
tagName: "div.post-avatar-user-info",
html(attrs) {
return this.attach("poster-name", attrs);
},
});
createWidget("post-avatar", {
tagName: "div.topic-avatar",
settings: {
size: "large",
displayPosterName: false,
},
html(attrs) {
let body;
let hideFromAnonUser =
다음과 같은 항목을 기대합니다:
template
username
name
url
따라서 원하는 데이터를 플러그인 아웃렛(plugin outlet)으로 가져온 다음, 위젯으로 전달해야 합니다… 예를 들어 다음과 같이요:
{{mount-widget widget="post-avatar" args=(hash username=this.username)}}
그렇지만… 구체적으로 무엇을 달성하고 싶으신가요? 단순히 아바타를 표시하고 싶다면, 아바타 헬퍼를 사용하는 것이 더 나은 방법일 수 있습니다… 그러면 다음과 같이 작성할 수 있습니다:
{{avatar user imageSize="large"}}
이 경우에도 어떤 사용자를 표시할지 위젯이 알 수 있도록 user가 존재하는지 확인해야 합니다.
안녕하세요 @awesomerobot
답변 주셔서 감사합니다.
각 게시물의 게시물 페이지에서 텍스트 위에 사용자 아바타를 표시하려고 합니다. 그러나 필요한 사용자 데이터를 “topic-above-post-stream” 플러그인 아웃렛에 전달하지 못했습니다. 그 결과, common/head_tag.html 파일에 아래 코드를 추가한 후 “topic-above-post-stream” 플러그인 아웃렛에 쓰레기통 아이콘이 표시됩니다.
<script type="text/x-handlebars" data-template-name="/connectors/topic-above-post-stream/custom-post-page">
<div class="post-detail header">
{{mount-widget widget="post-avatar" args=(hash username=this.username)}}
</div>
</script>