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>