L’algoritmo integrato di Ordinamento per Popolarità (Hot sorting) è molto semplice e potrebbe non essere adatto a diversi casi d’uso. Dalla mia comprensione di base della codebase di Discourse, attualmente non ci sono impostazioni del sito visibili all’utente né un punto di iniezione di plugin appropriato per personalizzare l’algoritmo di ordinamento per popolarità. C’è un evento topic_hot_scores_updated ma viene chiamato dopo che i punteggi sono stati aggiornati, il che serve allo scopo di notifica senza la possibilità di sovrascrivere i punteggi di popolarità integrati. Ci sono due impostazioni del sito hot_topics_gravity e hot_topics_recent_days ma hanno hidden: true impostato e non sono visibili nell’interfaccia di amministrazione.
Stiamo considerando di scrivere un plugin per sostituire l’algoritmo di punteggio di popolarità integrato. Quale approccio sarebbe migliore in termini di compatibilità e facilità di aggiornamento di Discourse in futuro? Alcune delle mie idee sono elencate di seguito:
- Fare monkey-patch di
TopicHotScoree aggiornare il database secondo il nostro algoritmo personalizzato. - Creare una tabella separata per memorizzare i punteggi di popolarità degli argomenti ed eseguire un processo in background separato per aggiornarli. Aggiungere un altro percorso (invece di /hot) per il nostro elenco personalizzato di argomenti popolari.
- O forse la codebase di Discourse potrebbe essere migliorata per supportare tale caso d’uso?