Plugin di Gamification di Discourse nell'intestazione

Ciao, sto cercando di fare una cosa. Voglio visualizzare i punti utente dal plugin Discourse Gamification in cima al sito. Ad esempio, se un utente di nome Adam ha 700 punti, come posso mostrarlo nella sezione dell’intestazione? Dove dovrei posizionare il codice?

Voglio dire, quello che voglio veramente è che l’utente veda i propri punti.
Cordiali saluti!

Questa richiesta è eccellente; sono anche curioso di conoscere la risposta.
Credo che se ogni utente potesse vedere i propri punti di contributo sotto il proprio tag, ciò migliorerebbe notevolmente il coinvolgimento della community.

1 Mi Piace

almeno dammi un esempio html per le valutazioni degli utenti

Forse questo?

“Voglio spostare i Punti Cheer dalle schede utente alla parte superiore della homepage. L’utente dovrebbe essere in grado di vedere il proprio punteggio. Questi punteggi vengono presi dalla classifica.”

Questo supporta appena sotto l’intestazione e anche il percorso dell’argomento

Ma potresti dover costruire tu stesso il componente.

Voglio spostare i Punti Cheer dalle schede utente in cima alla homepage. L’utente dovrebbe essere in grado di vedere il proprio punteggio. Questi punteggi vengono presi dalla classifica.

Il posizionamento di questo elemento banner/intestazione sarebbe per mese, trimestre, giorno, settimana, anno o tutto il tempo?

Ecco l’API dell’intestazione corrente:

Ma probabilmente vorrai solo collegare un componente a un punto di estensione (outlet)

before-header-panel sembra una buona opzione.

1 Mi Piace

Lo schermo di uno smartphone con un'app calcolatrice aperta, che mostra il numero "100" e le icone per voce e ricerca. (Sottotitolato da AI)

No, signore. L’utente dovrebbe vedere solo il suo punteggio nell’intestazione. Devo aggiungere la sezione che viene aggiunta alla scheda del profilo all’intestazione. Questo punteggio viene ottenuto dalla classifica, che riflette i punti guadagnati dall’attività

sarà basato sul totale dei punti guadagnati nel tempo.

Ogni utente dovrebbe vedere il proprio punteggio nella sezione dell’intestazione sulla homepage. Se c’è un codice o un metodo per farlo, per favore fatemelo sapere. Sto lottando da 14 ore e sto litigando con il mio gatto! :smiley:

Ci sono tantissimi esempi di Componenti. Guarda le codebase di Theme component per vedere esempi di Componenti Glimmer .gjs e nota come sono collegati ai Plugin Outlets.

@merefield si riferiva a come potresti costruire questo componente. La questione è che questa non è una funzionalità, quindi dovrà essere creata come un componente del tema.

1 Mi Piace

Mi dispiace. Pensavo non mi capissi perché il mio inglese era scarso. Mi sentivo male.

2 Mi Piace

3a
il lavoro è fatto

4 Mi Piace

Ti dispiace condividere come hai realizzato questo?

Ho creato un nuovo componente. Ho usato l’API per i punti. Ho spostato la sezione utente nella home page.

È un metodo temporaneo ma utile. Forse vogliono migliorarlo, lascio il codice qui

Sito web di prova: 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("Utente non collegato");
            return;
        }

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

                // Se la casella del punteggio esiste già, non aggiungerla di nuovo
                if (document.querySelector("#gamification-score")) return;

                // Trova il contenitore .contents dell'header
                let headerContents = document.querySelector(".d-header>.wrap .contents");
                if (headerContents) {
                    // Crea la casella del punteggio
                    let scoreContainer = document.createElement("a");
                    scoreContainer.id = "gamification-score";
                    scoreContainer.classList.add("gamification-box");
                    scoreContainer.href = "website";
                    scoreContainer.target = "_blank"; // Apri in una nuova scheda

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

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

                    // Aggiungi icona e testo alla casella
                    scoreContainer.appendChild(icon);
                    scoreContainer.appendChild(scoreText);

                    // Aggiungi la casella all'header
                    headerContents.appendChild(scoreContainer);
                }
            })
            .catch(error => console.error("Errore nel recupero del punteggio gamification:", error));
    });
});
4 Mi Piace

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