Installazioni multiple del portfolio utente

Ciao! Intendo usare la mia istanza di Discourse per un GDR. Il componente tema portfolio utente sarebbe perfetto per mostrare le cose che gli utenti hanno inviato. Nello specifico, vorrei poter vedere un elenco dei personaggi di un utente, le proposte di lore e le scene del GDR nel profilo.

L’unico problema è che questo componente tema supporta solo 1 categoria alla volta. Ho provato a impostare la categoria a 0 per tutte le categorie e poi ad aggiungere più tag, ma questo ha reso la pagina del portfolio vuota. Quindi, vorrei modificare e installare più istanze di questo componente tema per avere più pagine del portfolio per questi elementi separati.

Ho provato a scaricare il componente tema e a modificare i file (ad esempio, cambiando le istanze di portfolio in portfolio_2) e poi ho installato la nuova copia oltre all’originale, ma nessuna delle due funziona.

Quando entrambe sono abilitate…

  1. Viene mostrata solo un’istanza del pulsante portfolio sulla scheda utente (portfolio_2)
  2. Viene mostrata solo un’istanza del pulsante portfolio nel profilo dell’utente (portfolio_2)
  3. La pagina portfolio_2 è vuota nel profilo dell’utente

È possibile farlo funzionare, o dovrei rinunciare?

Questa funzionalità è nata in Topic List Previews. Potresti provare anche quella.

In TLP puoi anche specificare l’inclusione del portfolio per tag.

il che ti permetterebbe di scegliere argomenti tra più categorie.

1 Mi Piace

Grazie, questo è un ottimo posto dove guardare. Penso che preferirei che il pulsante portfolio fosse nel menu orizzontale del profilo (accanto a riepilogo, attività, ecc.), ma il problema più grande che ho è che se ci sono più tag, voglio essere in grado di filtrare per tag, cioè gli utenti farebbero clic sui pulsanti per visualizzare solo “personaggi” o “scene” nel portfolio alla volta.

Potrei finire per provare a mettere insieme qualcosa per questo scopo da entrambi questi componenti del tema, ma prima darò un’occhiata più approfondita. Se qualcuno ha ulteriori idee, per favore condivida!

1 Mi Piace

Va bene, ma logicamente è nel posto migliore per il caso generale: è un filtro di tutte le attività proprio come gli altri “tagli”.

Ma certo, guarda la fonte e fai del tuo peggio! :computer: :rocket:

Sono 100% d’accordo che questo sia un buon posto per un caso d’uso generale. Il mio caso d’uso particolare è per una community incentrata sul gioco di ruolo in cui gli utenti cercano regolarmente queste informazioni, quindi voglio che i pulsanti di tracciamento del personaggio e della scena siano accessibili con il minor numero di clic possibile e molto visibili. Non voglio assolutamente criticare la tua soluzione!

1 Mi Piace

Oh non preoccuparti. Non l’ho interpretata così.

Sì, vedo l’utilità nel tuo caso. È ora di una soluzione su misura!

1 Mi Piace

Ok, quindi ho preso una direzione diversa dal provare a usare i plugin del portfolio. Non sono sicuro se dovrei pubblicare questo qui o in un nuovo thread - se è così, per favore fatemelo sapere!

Qualcuno può dare un’occhiata a questo e dirmi cosa sto facendo di sbagliato (e, si spera, perché / come risolverlo)? Ho passato ore e ore a leggere tutorial, scrivere e apportare modifiche a questo, ma sono molto un principiante e sono arrivato a un punto in cui non so più cosa provare.

L’obiettivo: visualizzare un elenco di argomenti di una categoria specifica nella pagina di riepilogo di un utente.
In questo caso d’uso, è per un forum di giochi di ruolo in cui gli utenti creeranno personaggi per pubblicare storie. Voglio che questo plugin mostri quali personaggi un utente ha creato in modo che nessuno debba scavare troppo a fondo per trovarli. Tutti i fogli dei personaggi saranno archiviati nello stesso forum. Quindi, immagino di dover solo creare un elenco di argomenti che recuperi gli argomenti dall’utente corretto e dal forum corretto.

Ho usato quanto segue come riferimento:

https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949

Ecco il mio tentativo. Finora, l’intestazione dell’elenco degli argomenti (argomento/risposte/attività) viene visualizzata nel posto giusto, ma non viene popolata con gli argomenti.

<script type="text/discourse-plugin" version="0.8">
  const ajax = require('discourse/lib/ajax').ajax;
  const Topic = require('discourse/models/topic').default;
  const User = require('discourse/models/user').default;
  // Necessari ajax, Topic e User

  api.registerConnectorClass('above-user-summary-stats', 'character-list', {
    // above-user-summary-stats è l'outlet del plugin, character-list è il nome del componente personalizzato

    setupComponents(args, component) {

        const store = getOwner(this).lookup("service:store");

        return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
        // righe prese da summary() nel modello user.js; sto cercando di trovare il nome utente del profilo utente che stiamo visualizzando in modo da poter accedere al json degli argomenti che hanno creato

            let characterList = [];
            // array vuoto in cui inserire gli argomenti

            result.topic_list.topics.forEach.category_id(4)(function(topic){
            // argomenti solo dalla categoria specifica che vogliamo

            // più o meno qui il tutorial di Kris aveva alcune righe per associare gli utenti all'argomento. L'ho ignorato perché non ho bisogno che gli utenti oltre all'autore originale vengano visualizzati con l'argomento. È importante?
            //topic.posters.forEach(function(poster){
                //poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
              //});

                characterList.push(Topic.create(topic));
                // aggiungi argomenti all'elenco degli argomenti

            });

            component.set('characterList', characterList);
            // Imposta il nostro componente con gli argomenti dall'array

        }); // fine ajax


    } // fine setupComponents

  });
</script>

<script type="text/x-handlebars" data-template-name="/connectors/above-user-summary-stats/character-list">

      <div class="custom-character-list-wrapper">
        {{topic-list topics=characterList showPosters=false}}
      </div>

</script>