Der eingebaute Hot-Sortieralgorithmus (Algorithm) ist sehr einfach und möglicherweise nicht für verschiedene Anwendungsfälle geeignet. Nach meinem grundlegenden Verständnis des Discourse-Codebestands gibt es derzeit keine für den Benutzer sichtbare Site-Einstellung oder einen geeigneten Plugin-Injektionspunkt zur Anpassung des Hot-Sortieralgorithmus. Es gibt ein topic_hot_scores_updated-Ereignis, das jedoch aufgerufen wird, nachdem die Ergebnisse aktualisiert wurden, was dem Zweck der Benachrichtigung dient, ohne die Möglichkeit, die integrierten Hot-Ergebnisse zu überschreiben. Es gibt zwei Site-Einstellungen, hot_topics_gravity und hot_topics_recent_days, aber diese sind auf hidden: true gesetzt und im Admin-UI nicht sichtbar.
Wir erwägen, ein Plugin zu schreiben, um den integrierten Hot-Score-Algorithmus zu ersetzen. Welcher Ansatz wäre in Bezug auf Kompatibilität und einfache Aktualisierung von Discourse in Zukunft besser? Einige meiner Ideen sind unten aufgeführt:
- Monkey-Patch
TopicHotScoreund Aktualisierung der Datenbank gemäß unserem benutzerdefinierten Algorithmus. - Erstellen einer separaten Tabelle zum Speichern der Hot-Scores von Themen und Ausführen eines separaten Hintergrundjobs zur Aktualisierung dieser. Hinzufügen einer weiteren Route (anstelle von /hot) für unsere benutzerdefinierte Auflistung heißer Themen.
- Oder vielleicht könnte der Discourse-Code verbessert werden, um einen solchen Anwendungsfall zu unterstützen?