C’est une méthode temporaire mais utile. Peut-être veulent-ils l’améliorer, je laisse le code ici
Site Web de test : 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("L'utilisateur n'est pas connecté");
return;
}
fetch(`/u/${currentUser.username}.json`)
.then(response => response.json())
.then(data => {
console.log("Données de gamification :", data);
let score = data?.user?.gamification_score ?? 0;
// Si la boîte de score existe déjà, ne pas l'ajouter à nouveau
if (document.querySelector("#gamification-score")) return;
// Trouver le conteneur .contents de l'en-tête
let headerContents = document.querySelector(".d-header> .wrap .contents");
if (headerContents) {
// Créer le conteneur de score
let scoreContainer = document.createElement("a");
scoreContainer.id = "gamification-score";
scoreContainer.classList.add("gamification-box");
scoreContainer.href = "website";
scoreContainer.target = "_blank"; // Ouvrir dans un nouvel onglet
// Icône dorée
let icon = document.createElement("span");
icon.innerText = "T";
icon.classList.add("gold-icon");
// Texte du score
let scoreText = document.createElement("span");
scoreText.innerText = `${score}`;
scoreText.classList.add("gold-text");
// Ajouter l'icône et le texte à la boîte
scoreContainer.appendChild(icon);
scoreContainer.appendChild(scoreText);
// Ajouter la boîte à l'en-tête
headerContents.appendChild(scoreContainer);
}
})
.catch(error => console.error("Erreur lors de la récupération du score de gamification :", error));
});
});