Ich nehme Änderungen in der Discourse-Anwendung vor, bei denen ich Themen nach Anzahl der Antworten anzeigen möchte. Ich habe eine Rails-Abfrage erstellt, kann aber den Ansichtsteil nicht finden. Wo muss ich diesen Bereich anzeigen und den Geltungsbereich hinzufügen?
Wenn Sie das Verhalten von Discourse ändern möchten, müssen Sie sich Entwicklung von Discourse-Plugins – Teil 1 – Erstellen eines einfachen Plugins oder vielleicht Leitfaden für Anfänger zur Entwicklung von Discourse-Themes ansehen.
Ich möchte kein neues Plugin erstellen, ich möchte nur die Kategorie- und Themenabfragen von der Backend-Seite ändern und sie in der Ansicht anzeigen lassen, aber ich kann nicht herausfinden, wo die Liste der Themenlinks angezeigt wird.
Es gibt eine Kategorieeinstellung, die dafür funktionieren könnte:
Wenn Sie den Code ändern müssen, sollten Sie Ihre Änderungen in einem Plugin vornehmen. Änderungen am Kerncode werden Ihnen in Zukunft Probleme bereiten.
Okay Simon, danke schön. Ich glaube, das wird mir helfen.
Ich möchte die Links auf der rechten Seite der Themen für eine bestimmte Kategorie nach der höchsten Anzahl von Themen sortieren. Dazu muss ich doch das Backend ändern, oder?
Ich glaube nicht, dass Sie den Code dafür ändern müssen, aber Sie müssen möglicherweise einen Befehl von der Rails-Konsole Ihrer Website ausführen, damit die Themen in der neuen Reihenfolge auf der Homepage Ihrer Website angezeigt werden.
Wenn Sie für die Website-Einstellung desktop category page style (Desktop-Stil der Kategorieseite) „Kategorien mit hervorgehobenen Themen“ auswählen, sollte die Reihenfolge, in der die hervorgehobenen Themen angezeigt werden, durch den Wert der Einstellung „Topic List Sort By“ (Themenliste sortieren nach) jeder Kategorie bestimmt werden. Leider wird eine Änderung am Wert der Einstellung „Topic List Sort By“ einer Kategorie nicht sofort auf der Homepage der Website angezeigt. Ich bin mir nicht sicher, wo Discourse die hervorgehobenen Themen zwischenspeichert, die auf der Homepage angezeigt werden, oder welche Aktion von Discourse verwendet wird, um den Cache zu leeren.
Beim Testen auf meiner eigenen Website sehe ich, dass der Cache durch Ausführen des Folgenden von der Rails-Konsole aus geleert werden kann:
# Weisen Sie die Kategorie, für die Sie die Ergebnisse korrigieren möchten, einer Variablen zu, z. B.:
c = Category.find(42)
# Führen Sie dann aus
CategoryFeaturedTopic.feature_topics_for(c)
Nachdem Sie dies ausgeführt haben, sollten die Themen auf der Homepage in der von Ihnen für die Einstellung „Topic List Sort By“ der Kategorie ausgewählten Reihenfolge angezeigt werden. Ich glaube nicht, dass die Ausführung dieses Befehls Probleme verursachen kann, aber seien Sie immer vorsichtig, wenn Sie Befehle von der Rails-Konsole ausführen.
Ich bin sicher, dass es einen einfacheren Weg gibt, dies zu tun. Möglicherweise müssen Sie nur bis zu 24 Stunden warten, bis Discourse den Cache für die alte Liste der hervorgehobenen Themen leert. Ich sehe nicht, wo im Code der Cache geleert wird. Der relevante Code scheint hier zu sein: discourse/app/models/category_featured_topic.rb at main · discourse/discourse · GitHub.
Ich habe diese Abfrage ausgeführt, aber das Hauptproblem ist, wo diese hervorgehobenen Themen auf der Homepage angezeigt werden, in welcher .html-Datei der Code zum Anzeigen dieser Daten in der Benutzeroberfläche vorhanden ist.
Ich habe bereits Abfragen für die Daten erstellt, die ich sortieren muss, aber das Problem ist, wo ich die Abfrage in welches Modell einfügen soll.

