Comment puis-je récupérer la liste des tags du sujet actuellement ouvert ?

Bonjour !

J’essaie de créer un composant de thème qui ajoute un bouton personnalisé aux sujets tagués. Par exemple : les sujets tagués avec event-tag auront un bouton à côté de la catégorie nommé Event qui pointera vers la page des événements.

J’ai trouvé où j’aimerais ajouter le bouton (via le plugin-outlet topic-category) grâce à ce guide : Developing Discourse Themes & Theme Components

et j’ai actuellement ceci :

<script type="text/x-handlebars" data-template-name="/connectors/topic-category/foobar2">
    <div style="height: 25px; width: 25px;background: red">
      <a href="<events_URL>" target="_blank">Lien</a>
    </div>
  </script>

Ma question est donc : comment puis-je vérifier la liste des tags du sujet pour voir si le script ci-dessus doit ajouter un bouton ou non ?

D’accord, un peu de progrès :

J’ai découvert que si j’utilise modifyClass comme ceci :

<script type="text/discourse-plugin" version="0.8">
    api.modifyClass("component:topic-category", {
      didInsertElement: function() {
        this._super();
        console.log("Bienvenue sur la page des sujets !")
      }
    });
    </script>

Je peux accéder à la page du sujet et obtenir une réponse disant “bienvenue”, mais je ne sais toujours pas comment extraire les balises de la page actuelle pour savoir si je dois afficher le bouton ou non…

Ah, j’ai trouvé la solution.

J’ai continué à relire ceci : Developing Discourse Themes & Theme Components

et j’ai découvert qu’en faisant simplement console.log(this), il était possible de déverser toutes les données de la page, y compris les tags. Je pense que je peux continuer à partir de maintenant en extrayant les données des tags sur la page et en vérifiant si elles sont dans les paramètres ou non. Une fois que j’aurai peaufiné cela et que je penserai qu’il est prêt pour le public, je le publierai dans la catégorie des composants de thème. Je pensais juste partager mes découvertes au cas où d’autres apprendraient à créer des composants de thème !

Juste pour information, le code pour obtenir la liste des tags dans ce contexte serait :

<script type="text/discourse-plugin" version="1.4.0">
    api.modifyClass("component:topic-category", {
      pluginId: "returnTags",
      didInsertElement: function() {
        this._super();
        console.log(this.topic.tags)
      }
    });
</script> 

Retourne :

:information_source: (pluginId est requis pour éviter un avertissement)