Discourse Gamification Plugin im Header

Hallo, ich versuche etwas zu tun. Ich möchte die Benutzerpunkte aus dem Discourse Gamification Plugin oben auf der Website anzeigen. Wenn ein Benutzer namens Adam zum Beispiel 700 Punkte hat, wie kann ich das im Kopfbereich anzeigen? Wo sollte ich den Code platzieren?

Ich meine, ich möchte eigentlich, dass der Benutzer seine eigenen Punkte sieht.
Mit freundlichen Grüßen!

Diese Anfrage ist ausgezeichnet; ich bin ebenfalls neugierig auf die Antwort.
Ich glaube, wenn jeder Benutzer seine Beitragspunkte unter seinem Namensschild sehen könnte, würde dies das Engagement der Community erheblich steigern.

1 „Gefällt mir“

Gib mir zumindest ein HTML-Beispiel für Benutzerbewertungen

Vielleicht das?

„Ich möchte die Cheer Points von den Benutzerkarten oben auf der Homepage verschieben. Der Benutzer sollte seine Punktzahl sehen können. Diese Punktzahlen stammen von der Rangliste.“

Dies unterstützt direkt unter der Kopfzeile und auch die Themenroute

Aber Sie müssen die Komponente möglicherweise selbst erstellen.

Ich möchte die Cheer Points von den Benutzerkarten oben auf der Homepage anzeigen. Der Benutzer sollte seinen Punktestand sehen können. Diese Punktestände werden von der Rangliste übernommen.

Wäre die Platzierung für diesen Banner-/Header-Artikel nach Monat, Quartal, Tag, Woche, Jahr oder für alle Zeiten?

Hier ist die aktuelle Header-API:

Aber Sie möchten wahrscheinlich nur eine Komponente an einen Auslass anhängen

before-header-panel sieht gut aus.

1 „Gefällt mir“

Das Bild zeigt den Bildschirm eines Smartphones mit geöffneter Taschenrechner-App, auf dem die Zahl „100“ und Symbole für Sprache und Suche angezeigt werden. (Untertitel von KI)

Nein, Sir. Der Nutzer sollte nur seine Punktzahl in der Kopfzeile sehen. Ich muss den Abschnitt, der der Profilkarte hinzugefügt wird, zur Kopfzeile hinzufügen. Diese Punktzahl wird von der Bestenliste bezogen, die die für Aufgaben erzielten Punkte widerspiegelt.

Er basiert auf der Gesamtzahl der gesammelten Punkte aller Zeiten.

Jeder Benutzer sollte seinen Punktestand im Kopfbereich der Homepage sehen. Wenn es einen Code oder eine Methode dafür gibt, lassen Sie es mich bitte wissen. Ich kämpfe seit 14 Stunden und streite mich mit meiner Katze! :smiley:

Es gibt viele Beispiele für Komponenten. Schauen Sie sich die Codebasen von Theme component an, um Beispiele für .gjs Glimmer-Komponenten zu sehen und wie sie an Plugin-Outlets angehängt werden.

@merefield bezog sich darauf, wie Sie diese Komponente erstellen könnten. Die Sache ist, dass dies keine Funktion ist, daher muss sie als Theme Component erstellt werden.

1 „Gefällt mir“

Es tut mir leid. Ich dachte, Sie hätten mich nicht verstanden, weil mein Englisch schlecht war. Ich habe mich schlecht gefühlt.

2 „Gefällt mir“

3a
Die Arbeit ist erledigt

4 „Gefällt mir“

Können Sie mir bitte mitteilen, wie Sie das erreicht haben?

Ich habe eine neue Komponente erstellt. Ich habe die API für Punkte verwendet. Ich habe den Benutzerbereich auf die Startseite verschoben.

Es ist eine temporäre, aber nützliche Methode. Vielleicht möchten sie sie verbessern, ich hinterlasse den Code hier

Test-Website: 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("Benutzer nicht angemeldet");
            return;
        }

        fetch(`/u/${currentUser.username}.json`)
            .then(response => response.json())
            .then(data => {
                console.log("Gamification-Daten:", data);
                let score = data?.user?.gamification_score ?? 0;

                // Wenn die Punktzahlbox bereits vorhanden ist, fügen Sie sie nicht erneut hinzu
                if (document.querySelector("#gamification-score")) return;

                // Finde den .contents-Container des Headers
                let headerContents = document.querySelector(".d-header> .wrap .contents");
                if (headerContents) {
                    // Erstelle die Punktzahlbox
                    let scoreContainer = document.createElement("a");
                    scoreContainer.id = "gamification-score";
                    scoreContainer.classList.add("gamification-box");
                    scoreContainer.href = "website";
                    scoreContainer.target = "_blank"; // In einem neuen Tab öffnen

                    // Gold-Symbol
                    let icon = document.createElement("span");
                    icon.innerText = "T";
                    icon.classList.add("gold-icon");

                    // Punktzahltext
                    let scoreText = document.createElement("span");
                    scoreText.innerText = `${score}`;
                    scoreText.classList.add("gold-text");

                    // Füge Symbol und Text zur Box hinzu
                    scoreContainer.appendChild(icon);
                    scoreContainer.appendChild(scoreText);

                    // Füge die Box zum Header hinzu
                    headerContents.appendChild(scoreContainer);
                }
            })
            .catch(error => console.error("Fehler beim Abrufen der Gamification-Punktzahl:", error));
    });
});
4 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.