Themen in einem neu hinzugefügten Plugin-Ausgabe laden

Ich glaube, ich habe das zum Laufen gebracht. Ziel: Bestimmte Themen an einer festgelegten Stelle in einer neuen Vorlage laden (funktioniert wahrscheinlich auch beim Hinzufügen zu bestehenden Vorlagen, habe das aber noch nicht getestet):

  1. Fügen Sie Ihren erfundenen Plugin-Auslass in Ihre Vorlage ein (mein erfundener Plugin-Auslass heißt „great-topics“, wie folgt):

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

  1. Fügen Sie den Handlebars-Code (also Ihre Komponente) in einen Connector ein:

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

<div>Ich bin im Plugin-Auslass! Lade die Themen:</div>
{{topic-list topics=featuredTopics showPosters=true}}
  1. Fügen Sie den JavaScript-Code für die Komponente hinzu, die sich in Ihrem neuen Connector befindet:

[your-plugin]/assets/javascripts/discourse/connectors/great-topics/new-component.js.es6
[dieser Code wurde aus dem folgenden Meta-Beitrag adaptiert, der Code enthält, der Themen mit dem Tag „featured“ lädt: 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 = [];
   // Leeres Array erstellen, wir werden Themen darin ablegen

   var featuredUsers = result.users;
   // Die relevanten Benutzer abrufen

   result.topic_list.topics.slice(0, 4).forEach(function (topic) {
   // Wir extrahieren die Themen beginnend bei 0 und endend bei 4
   // Das bedeutet, wir zeigen insgesamt 3 an. Erhöhen Sie 4, um mehr anzuzeigen.

     topic.posters.forEach(function (poster) {
        poster.user = $.grep(featuredUsers, function (e) { return e.id == poster.user_id; })[0];
                        });
         // Benutzer mit unserem Thema verknüpfen

      featuredTopics.push(Topic.create(topic));
        // Unsere Themen in das featuredTopics-Array schieben
     });
   }) // Ende result.topic.topic_list...
                    
component.set('featuredTopics', featuredTopics);  //Hier werden die Themen zur Komponente hinzugefügt
 
component.set("loadingTopics", false); //Mein obiger Code hat keinen Lader. Aber dieser ist vorhanden, falls Sie einen Lader wünschen. Dafür muss zusätzlich zur hbs-Datei noch etwas hinzugefügt werden. Siehe den oben verlinkten Beitrag auf Meta

  }); // Ende ajax 


 }// Ende setup component


Das funktioniert bei mir zumindest, um Themen mit dem Tag „featured“ im Plugin-Auslass meiner neuen Vorlage zu laden.

Um dies zu testen, muss der Server neu gestartet werden.

1 „Gefällt mir“