Installations multiples du portefeuille utilisateur

Bonjour ! J’ai l’intention d’utiliser mon instance Discourse pour un JdR. Le composant de thème de portfolio utilisateur serait parfait pour montrer ce que les utilisateurs ont soumis. Plus précisément, je veux pouvoir voir une liste des personnages, des soumissions de lore et des scènes de JdR d’un utilisateur dans le profil.

Le seul problème est que ce composant de thème ne prend en charge qu’une seule catégorie à la fois. J’ai essayé de définir la catégorie sur 0 pour toutes les catégories, puis d’ajouter plusieurs tags, mais cela a rendu la page de portfolio vierge. Je souhaite donc modifier et installer plusieurs instances de ce composant de thème afin d’avoir plusieurs pages de portfolio pour ces éléments distincts.

J’ai essayé de télécharger le composant de thème et de modifier les fichiers (par exemple, en remplaçant “portfolio” par “portfolio_2”), puis j’ai installé la nouvelle copie en plus de l’original, mais aucune des deux ne fonctionne.

Lorsque les deux sont activés…

  1. Une seule instance du bouton de portfolio est affichée sur la carte utilisateur (portfolio_2)
  2. Une seule instance du bouton de portfolio est affichée dans le profil de l’utilisateur (portfolio_2)
  3. La page portfolio_2 est vierge dans le profil de l’utilisateur

Est-il possible de faire fonctionner cela, ou dois-je abandonner ?

Cette fonctionnalité est née dans Topic List Previews. Vous pourriez aussi essayer cela.

Dans TLP, vous pouvez également spécifier l’inclusion de portefeuilles par tag.

ce qui vous permettrait de choisir des sujets dans plusieurs catégories.

1 « J'aime »

Merci, c’est un excellent endroit à consulter. Je pense que je préférerais que le bouton portfolio soit dans le menu horizontal du profil (à côté de résumé, activité, etc.), mais le problème le plus important que j’ai est que s’il y a plusieurs tags, je veux pouvoir filtrer par tag, c’est-à-dire que les utilisateurs cliqueraient sur des boutons pour voir uniquement des « personnages » ou des « scènes » dans le portfolio à la fois.

Je pourrais finir par essayer de bricoler quelque chose à cet effet à partir de ces deux composants de thème, mais je vais d’abord explorer un peu plus. Si quelqu’un a d’autres idées, n’hésitez pas à les partager !

1 « J'aime »

C’est bien, mais logiquement, il est à la meilleure place dans le cas général : c’est un filtre de toute l’activité, tout comme les autres « coupes ».

Mais bien sûr, regardez la source et faites de votre mieux ! :computer: :rocket:

Je suis à 100 % d’accord pour dire que c’est un bon endroit pour un cas d’utilisation général. Mon cas d’utilisation particulier concerne une communauté axée sur le jeu de rôle où les utilisateurs recherchent ces informations régulièrement, je veux donc que les boutons de suivi des personnages et des scènes soient accessibles avec le moins de clics possible et très visibles. Je n’ai pas l’intention de critiquer votre solution !

1 « J'aime »

Ne vous inquiétez pas. Je ne l’ai pas pris comme ça.

Oui, je vois l’utilité dans votre cas. Il est temps pour une solution sur mesure !

1 « J'aime »

D’accord, j’ai donc pris une direction différente de celle de l’utilisation des plugins de portfolio. Je ne suis pas sûr de devoir poster ceci ici ou dans un nouveau fil de discussion - si c’est le cas, faites-le moi savoir !

Quelqu’un peut-il jeter un œil à ceci et me dire ce que je fais de mal (et, espérons-le, pourquoi / comment le réparer) ? J’ai passé des heures et des heures à lire des tutoriels, à écrire et à modifier ceci, mais je suis très débutant et j’en suis arrivé à un point où je ne sais plus quoi essayer ensuite.

L’objectif : afficher une liste de sujets d’une catégorie spécifique sur la page de résumé d’un utilisateur.
Dans ce cas d’utilisation, il s’agit d’un forum RPG où les utilisateurs créeront des personnages pour poster des histoires. Je veux que ce plugin affiche les personnages qu’un utilisateur a créés afin que personne n’ait à chercher trop loin. Toutes les fiches de personnages seront stockées dans le même forum. Donc, je pense qu’il suffit de créer une liste de sujets qui récupère les sujets de l’utilisateur et du forum corrects.

J’ai utilisé les éléments suivants comme référence :

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

Voici ma tentative. Jusqu’à présent, l’en-tête de la liste des sujets (sujet/réponses/activité) s’affiche au bon endroit, mais il ne se remplit pas avec des sujets.

<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;
  // Besoin de ajax, Topic et User

  api.registerConnectorClass('above-user-summary-stats', 'character-list', {
    // above-user-summary-stats est le point de sortie du plugin, character-list est le nom du composant personnalisé

    setupComponents(args, component) {

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

        return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
        // lignes tirées de summary() dans le modèle user.js ; essayant de trouver le nom d'utilisateur du profil de l'utilisateur que nous visualisons afin de pouvoir accéder au json des sujets qu'il a créés

            let characterList = [];
            // tableau vide pour ajouter des sujets

            result.topic_list.topics.forEach.category_id(4)(function(topic){
            // sujets uniquement de la catégorie spécifique que nous voulons

            // vers ici, le tutoriel de Kris avait quelques lignes pour associer des utilisateurs au sujet. Je l'ai ignoré car je n'ai pas besoin que les utilisateurs autres que l'auteur original soient affichés avec le sujet. Est-ce important ?
            //topic.posters.forEach(function(poster){
                //poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
              //});

                characterList.push(Topic.create(topic));
                // ajouter des sujets à la liste des sujets

            });

            component.set('characterList', characterList);
            // Configurer notre composant avec les sujets du tableau

        }); // fin ajax


    } // fin 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>