디스코어(Discourse)의 작동 방식에 대해 더 배우려고 노력하고 있지만, 이 글 을 읽은 후에도 여전히 혼란스럽습니다. jQuery를 사용하여 게시물 페이지의 관리자 사용명에 동적 제목을 추가하려고 시도하고 있지만 작동하지 않습니다.
하지만 예를 들어 body 태그를 대상으로 하고 클래스를 추가하면 작동합니다.
그래서 누군가 왜 작동하지 않는지 설명해 주실 수 있을까요?
참고로 코드는 헤더 탭에 삽입되어 있습니다.
<script>
$(".names span.admin a").attr('title', 'Community Admin');
</script>
플러그인 아웃렛(Plugin Outlet)에 주입해야 하는 건가요?
이 경우 jQuery가 Ember 및 위젯 렌더링 파이프라인과 잘 작동하지 않기 때문일 가능성이 높습니다.
이 스크립트에서는 이 이벤트가 언제 발화되는지, 그리고 화면을 그리는 동안 JavaScript 앱이 어디까지 진행되었는지에 대해 통제할 수 없습니다.
다만, 이를 위한 JavaScript API 메서드가 있습니다. 자세한 내용은 다음을 참고하세요:
decorateWidget()
그리고 해당 특정 위젯은 다음과 같습니다:
className: attrs.extraClasses,
attributes: { href, "data-group-card": attrs.primaryGroupName },
},
attrs.title
);
}
return titleContents;
},
});
export default createWidget("poster-name", {
tagName: "div.names.trigger-user-card",
settings: {
showNameAndGroup: true,
showGlyph: true,
},
// TODO: Allow extensibility
posterGlyph(attrs) {
if (attrs.moderator || attrs.groupModerator) {
하지만 그 코딩 경로로 들어가기 전에, 한 발짝 뒤로 물러나서 질문을 드리겠습니다. 단순히 제목이 표시되기를 원하나요?
예를 들어 Jeff의 게시물에:
그의 제목은 "co-founder"입니다.
새로운 그룹을 만들고, 관리자(Admins)를 추가한 다음, 관리 => 멤버십으로 이동하여 기본 제목(Default Title)을 편집하면 됩니다.
이제 그들은 계정 설정의 환경 설정(Preferences)에서 이 제목을 선택할 수 있습니다(또는 대신 그들을 위해 설정해 줄 수도 있습니다).
이 기능을 사용하여 특수 아바타 flair도 표시할 수 있습니다(위 스크린 클립에서도 데모되었습니다).
물론 이렇게 "고정"된 형태가 원치 않으시다면 코딩 경로를 살펴봐야 하지만, 동의하시겠지만 이 방법은 훨씬 적은 노력을 요합니다.
도와주셔서 감사합니다. 제가 찾고 있는 실제 포럼 제목은 아니지만, 제가 만든 이 작은 왕관 아이콘(관리자에게만 표시됨)에 마우스를 올렸을 때 제목을 표시하는 방법입니다:
참고로, 이 아이콘의 CSS 코드는 다음과 같습니다:
.names span.admin a::after {
content: "";
width: 17px;
height: 14px;
margin-left: 5px;
background-image: url(https://www.dropbox.com/s/0oi0y3ex3rtfvk5/cd-crown.svg?raw=1);
background-repeat: none;
display: inline-block;
position: relative;
좋네요.
위젯 경로를 고려해 볼 수도 있겠네요.
다음 API 메서드도 고려해 보세요:
api.reopenWidget("poster-name", {
html() {
<<여기에 코드를 넣되, 기존 코드를 템플릿으로 사용하는 것을 고려해 보세요>>
}
}
다음 링크를 참고해 보시는 것을 추천합니다: A tour of how the Widget (Virtual DOM) code in Discourse works
Discourse는 자동 마법 같은 웹 앱이기 때문에 이 तरह의 작업을 하는 데는 훨씬 더 많은 노력이 필요합니다. 하지만 올바르게 구현하면 매우 견고한 솔루션을 얻을 수 있습니다.
정말 감사합니다. 한번 살펴보고 해결하면 결과를 공유할게요. 처음에는 커스터마이징 관련해서 Discourse가 워낙 복잡해 보였거든요. WordPress가 어려운 줄 알았는데 . 하지만 이 플러그인, 템플릿 같은 것들에 익숙해지면 분명히 쉬워질 거라고 생각해요.
실제로, 부스, 더 쉬운 해결책이 있을 수도 있습니다:
일반적인 모더레이터 방패를 교체하는 이 API 메서드를 고려해 보세요:
api.replaceIcon('shield-alt', 'crown');
그리고 여기서 툴팁의 텍스트를 변경하세요:
이 시점에서, 당신의 원래 CSS는 잠재적으로 불필요할 수 있습니다(다만 아이콘 색상은 변경할 수 있음)
하지만 이렇게 하면 модератор(모더레이터)의 방패 아이콘도 제거되겠죠? 저는 그걸 원하지 않아요. 게시글 페이지에서 관리자(Admin)에게는 아무 아이콘도 없으니까, 왕관 아이콘과 호버 텍스트는 관리자만 표시되도록 추가해야 해요.
아, 그래. 나는 내 사이트에서 관리자(MOD)와 어드민(ADMIN) 역할을 동시에 맡고 있어서 그런 데 너무 익숙해 있거든. 이 두 역할을 분리하면(즉, 어드민은 절대 관리자가 아닌 경우) 그 방식이 안 돼. 어드민에게도 관리자 권한을 부여해야 해.
그래서 다른 옵션들을 탐색해 보길 권해.
이렇게 시도해 보세요:
api.reopenWidget("poster-name", {
posterGlyph(attrs) {
if (attrs.moderator || attrs.groupModerator) {
return iconNode("shield-alt", {
title: I18n.t("user.moderator_tooltip"),
});
};
if (attrs.admin) {
return iconNode("crown", {
title: I18n.t("user.admin_tooltip"),
});
}
}
})
그리고
이렇게 하면 제 환경에서는 잘 작동합니다:
이 경우 첫 번째 사용자는 관리자(admin)이자 модератор(mod)이고, 두 번째 사용자는 관리자만입니다. 이 로직을 더 다듬을 수 있습니다. if 문 순서를 바꿔서 왕관(crown) 아이콘이 우선하도록 만들 수 있습니다.
해결책처럼 들리지만, 말씀드린 대로 저는 Discourse 커스터마이징 초보입니다. 아직 API 메서드를 사용해 본 적이 없어서, 정확히 어디에 코드를 붙여넣어야 하는지 설명해 주실 수 있을까요?
좋아요, 이제 이것은 테마 컴포넌트입니다:
A simple Theme Component that places a crown icon by admins name in Post stream
(Installing a theme or theme component )
관리자 역할이 우선합니다 - 기본적으로 관리자 역할과 동시에 모더레이터 역할도 가진 사용자에게는 왕관이 표시됩니다.
이제 직원 유형별로 아이콘을 구성할 수 있습니다.
아이콘 이름이 svg 아이콘 서브셋 설정에 추가되었는지 확인하세요 (추가하지 않으면 표시되지 않음):
여기서 제목 텍스트를 사용자 지정할 수 있습니다:
모더레이터도 마찬가지입니다.
TC를 업데이트하여 이제 사용자 카드의 스태프 아이콘도 변경되도록 했습니다. (헬퍼를 수정했기 때문에 다른 곳에서도 변경될 수 있습니다.)
아이콘은 관리자 및 중재자 모두에 대해 설정할 수 있으며, 관리자의 기본값은 왕관, 중재자의 기본값은 바닐라 방패입니다.
TC 이름을 변경했습니다.
아이콘이 변환되지 않는 곳이 있을 수 있습니다. 앞으로 더 많은 부분을 발견하게 될 것입니다.
AEW745
(Dev_Scripter)
5월 7, 2022, 12:22오전
16
정말 감사합니다! 이 덕분에 제가 포럼에서 하려던 작업을 성공적으로 수행할 수 있었습니다. 이름 옆에 아이콘이 표시되지 않는 문제를 겪고 있는 다른 사용자들을 위해 이 댓글을 고정(Pin)하는 것이 좋을 것 같습니다. 저는 이 기능을 사용하여 관리자(Admin)의 경우 공개적으로 표시되는 보호자(Moderator) 프로필의 방패 아이콘을 표시했습니다. 이제 보호자 권한 없이도 방패 아이콘을 사용할 수 있으며, 관리자 권한만 있는 경우에도 올바른 관리자 툴팁이 표시됩니다. 이런 멋진 컴포넌트를 포럼 사용자들을 위해 만들어 주셔서 정말 감사합니다!
수정: 프로필에는 공개적으로 표시되지 않습니다. 현재는 게시물에서만 작동하고 있습니다.
감사합니다. 포크, 확장, PR 자유롭게 해주세요!