こんにちは。何かを試しています。Discourse Gamificationプラグインのユーザーポイントをサイトの上部に表示したいです。例えば、Adamというユーザーが700ポイント持っている場合、これをヘッダーセクションにどのように表示できますか?コードはどこに配置すべきですか?
つまり、ユーザー自身のポイントを見えるようにしたいのです。
よろしくお願いします!
こんにちは。何かを試しています。Discourse Gamificationプラグインのユーザーポイントをサイトの上部に表示したいです。例えば、Adamというユーザーが700ポイント持っている場合、これをヘッダーセクションにどのように表示できますか?コードはどこに配置すべきですか?
つまり、ユーザー自身のポイントを見えるようにしたいのです。
よろしくお願いします!
このリクエストは非常に素晴らしいです。私も回答を知りたいと思っています。
各ユーザーが自分の名前タグの下に貢献ポイントを見ることができれば、コミュニティのエンゲージメントが大幅に向上すると信じています。
ユーザー評価のHTML例を少なくとも1つ教えてください
もしかしてこれですか?
これはヘッダーのすぐ下やトピックルートもサポートしています。
ただし、コンポーネントは自分で構築する必要があるかもしれません。
Cheer Points をユーザーカードからホームページの上部に移動したいです。ユーザーは自分のスコアを確認できる必要があります。これらのスコアはリーダーボードから取得されます。
このバナー/ヘッダー項目の配置は、月別、四半期別、日別、週別、年別、または全期間のいずれになりますか?
現在のヘッダーAPIはこちらです。
しかし、おそらくコンポーネントをアウトレットにアタッチしたいだけでしょう。
before-header-panel が良さそうです。

いいえ、お客様。ユーザーはヘッダーで自分のスコアのみを確認できる必要があります。プロファイルカードに追加されるセクションをヘッダーに追加する必要があります。このスコアは、タスクから獲得したポイントを反映するリーダーボードから取得されます。
それは、すべての時間の合計ポイントに基づいて行われます。
各ユーザーは、ホームページのヘッダーセクションで自分のスコアを確認できるはずです。これを行うためのコードや方法があれば教えてください。14時間も苦労していて、猫と格闘しています!![]()
コンポーネントの例がたくさんあります。Theme component のコードベースを見て、.gjs グリマーコンポーネントの例を確認し、それらがプラグインアウトレットにどのようにアタッチされているかに注目してください。
@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));
});
});
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.