안녕하세요, 무언가를 시도하고 있습니다. Discourse Gamification 플러그인의 사용자 포인트를 사이트 상단에 표시하고 싶습니다. 예를 들어, Adam이라는 사용자가 700점을 가졌을 때, 이 정보를 헤더 섹션에 어떻게 표시할 수 있을까요? 코드를 어디에 배치해야 하나요?
즉, 사용자가 자신의 포인트를 직접 확인할 수 있도록 하고 싶습니다.
감사합니다!
안녕하세요, 무언가를 시도하고 있습니다. Discourse Gamification 플러그인의 사용자 포인트를 사이트 상단에 표시하고 싶습니다. 예를 들어, Adam이라는 사용자가 700점을 가졌을 때, 이 정보를 헤더 섹션에 어떻게 표시할 수 있을까요? 코드를 어디에 배치해야 하나요?
즉, 사용자가 자신의 포인트를 직접 확인할 수 있도록 하고 싶습니다.
감사합니다!
최소 사용자 평점을 위한 HTML 예시를 하나만이라도 주세요
아마 이거일까요?
이것은 헤더 바로 아래와 Topic Route도 지원합니다
하지만 컴포넌트를 직접 만들어야 할 수도 있습니다.
홈페이지 상단에 Cheer Points를 배치하고 싶습니다. 사용자는 자신의 점수를 확인할 수 있어야 하며, 이 점수는 리더보드에서 가져온 것입니다.
이 배너/헤더 항목의 순위는 월, 분기, 일, 주, 연도, 또는 전체 기간 중 어떤 기준으로 설정할까요?
현재 Header API는 다음과 같습니다:
하지만 아마도 outlet에 Component를 연결하는 것만 필요할 것입니다.
before-header-panel이 좋은 선택지로 보입니다.

아니요, 사장님. 사용자는 헤더에서 점수만 확인해야 합니다. 프로필 카드에 추가되는 섹션을 헤더에 추가해야 합니다. 이 점수는 태스크를 통해 획득한 포인트를 반영하는 리더보드에서 가져온 값입니다.
이는 전 기간 동안 획득한 총 점수를 기반으로 할 것입니다.
각 사용자는 홈페이지의 헤더 섹션에서 자신의 점수를 확인해야 합니다. 이를 위한 코드나 방법이 있다면 알려주세요. 14시간째 씨름 중인데, 고양이까지 저랑 싸우고 있어요! ![]()
컴포넌트에 대한 예제가 많이 있습니다. .gjs 글리머 컴포넌트의 예제를 보려면 #customization:theme-component의 코드베이스를 살펴보세요. 그리고 플러그인 아웃렛에 어떻게 연결되는지 주목해 보세요.
@merefield은 이 컴포넌트를 어떻게 구축할 수 있는지에 대해 언급했습니다. 문제는 이것이 기능이 아니므로 테마 컴포넌트로 만들어야 한다는 점입니다.
미안해. 내 영어가 부족해서 네가 나를 이해하지 못한다고 생각했어. 그래서 좀 속상했어.

작업이 완료되었습니다
이걸 어떻게 해냈는지 공유해 주시겠어요?
새로운 컴포넌트를 만들었습니다. 포인트를 위해 API를 사용했고, 사용자 섹션을 홈 페이지로 이동했습니다.
일시적이지만 유용한 방법입니다. 개선하려는 것일 수도 있으니, 여기 코드를 남겨두겠습니다.
테스트 웹사이트: https://trgala.com
Js
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("0.8", (api) => {
api.onPageChange(() => {
const currentUser = api.getCurrentUser();
if (!currentUser) {
console.warn("사용자가 로그인되지 않았습니다");
return;
}
fetch(`/u/${currentUser.username}.json`)
.then(response => response.json())
.then(data => {
console.log("게임화 데이터:", data);
let score = data?.user?.gamification_score ?? 0;
// 이미 점수 상자가 있으면 다시 추가하지 않음
if (document.querySelector("#gamification-score")) return;
// 헤더의 .contents 컨테이너 찾기
let headerContents = document.querySelector(".d-header>.wrap .contents");
if (headerContents) {
// 점수 상자 생성
let scoreContainer = document.createElement("a");
scoreContainer.id = "gamification-score";
scoreContainer.classList.add("gamification-box");
scoreContainer.href = "website";
scoreContainer.target = "_blank"; // 새 탭에서 열기
// 금색 아이콘
let icon = document.createElement("span");
icon.innerText = "T";
icon.classList.add("gold-icon");
// 점수 텍스트
let scoreText = document.createElement("span");
scoreText.innerText = `${score}`;
scoreText.classList.add("gold-text");
// 아이콘과 텍스트를 상자에 추가
scoreContainer.appendChild(icon);
scoreContainer.appendChild(scoreText);
// 상자를 헤더에 추가
headerContents.appendChild(scoreContainer);
}
})
.catch(error => console.error("게임화 점수 가져오기 오류:", error));
});
});