Chargement des sujets dans une nouvelle sortie de plugin que j'ai ajoutée

Je pense que j’ai réussi à faire fonctionner cela. Objectif : charger certains sujets à un emplacement spécifié dans un nouveau modèle (cela fonctionne probablement aussi pour l’ajout à des modèles existants, mais je ne l’ai pas testé) :

  1. Insérez votre point d’extension personnalisé dans votre modèle (mon point d’extension personnalisé s’appelle « great-topics », par exemple) :

{{plugin-outlet name="great-topics"}}

  1. Ajoutez le code Handlebars (c’est-à-dire votre composant) dans un connecteur :

[your-plugin]/assets/javascripts/discourse/connectors/great-topics/new-component.hbs

<div>Je suis dans le point d'extension ! Chargez les sujets :</div>
{{topic-list topics=featuredTopics showPosters=true}}
  1. Ajoutez le code JavaScript pour le composant qui se trouve dans votre nouveau connecteur :

[your-plugin]/assets/javascripts/discourse/connectors/great-topics/new-component.js.es6
[ce code est adapté de la publication Meta suivante qui contient du code chargeant des sujets avec le tag « featured » : https://meta.discourse.org/t/how-to-add-a-featured-topic-list-to-your-discourse-homepage/132949]

const ajax = require('discourse/lib/ajax').ajax;
const Topic = require('discourse/models/topic').default;

setupComponent(args, component) {
 ajax("/tag/featured.json").then(function (result) {
                
   let featuredTopics = [];
   // Créez un tableau vide, nous y ajouterons les sujets

   var featuredUsers = result.users;
   // Récupérez les utilisateurs pertinents

   result.topic_list.topics.slice(0, 4).forEach(function (topic) {
   // Nous extrayons les sujets commençant à 0 et se terminant à 4
   // Cela signifie que nous en afficherons 3 au total. Augmentez 4 pour en voir plus.

     topic.posters.forEach(function (poster) {
        poster.user = $.grep(featuredUsers, function (e) { return e.id == poster.user_id; })[0];
                        });
         // Associez les utilisateurs à notre sujet

      featuredTopics.push(Topic.create(topic));
        // Ajoutez nos sujets au tableau featuredTopics
     });
   }) // fin de result.topic.topic_list...
                    
component.set('featuredTopics', featuredTopics);  // c'est ici que les sujets sont ajoutés au composant
 
component.set("loadingTopics", false); //mon code ci-dessus n'a pas de chargeur. mais ceci est présent si vous en voulez un. Il faut l'ajouter au fichier hbs en plus. Voir la publication liée sur Meta ci-dessus

  }); // fin de ajax 


 }// fin de setup component


Cela fonctionne pour moi, du moins, pour charger des sujets avec le tag « featured » dans le point d’extension de mon nouveau modèle.

Pour voir cela fonctionner, il faudra redémarrer le serveur.

1 « J'aime »