Sto gestendo un forum di discussione politica e di notizie su Discourse. Il problema che riscontro è che l’ordinamento predefinito di Discourse crea un caos totale per il mio caso d’uso, poiché l’età dell’argomento è molto importante. Per un forum come il mio, un ordinamento stile Reddit avrebbe più senso; tuttavia, a quanto ho capito, non esiste un modo diretto per ottenerlo.
Mi chiedo se sia possibile (abusare di) bumped_at per realizzare un ordinamento stile Reddit facendo qualcosa del genere:
def topic_hotness(created_at, like_count)
/**
Questa funzione traduce created_at e like_count
in una data bumped_at utilizzando una formula matematica
simile a quella usata da Reddit. Considera bumped_at
come la data fino alla quale l'argomento deve rimanere nella top 10,
data la sua data di creazione e il numero di like.
*/
end
add_model_callback(Topic, :before_save) do
self.bumped_at = topic_hotness(self.created_at, self.like_count)
end
Funzionerà? E quali funzionalità potrebbe rompere, richiedendo interventi correttivi? Ho visto da qualche parte nel codice di Discourse che viene lanciata un’eccezione se bumped_at è in futuro. A seconda della formula, questo schema potrebbe generare date bumped_at future. Che ne pensate?
Purtroppo non c’è nulla di paragonabile alla qualità di Discourse, quindi Discourse è l’unica opzione disponibile. In effetti, Discourse fa quasi tutto ciò che serve per questo caso d’uso; manca solo l’ordinamento della homepage. Ho visto richieste simili in passato (sebbene solo poche), quindi forse questo aiuterà più persone in futuro.
Ma siamo strettamente impegnati nell’ordinamento cronologico delle conversazioni e offriamo solo una sottile patina di threading. Potresti dare un’occhiata a il plugin Solved, forse?
Haha. Posso dirlo perché sto ricevendo un’ottima risposta dalla mia community. I cloni di Reddit che esistono non valgono nemmeno la pena di essere provati.
Non sono sicuro di capire come il plugin Solved sia correlato a questo problema. Influenza la data di “bump”?
Anche questo ha i suoi problemi: la timeline deve essere a scorrimento infinito per mantenere l’utente coinvolto. La maggior parte dei miei utenti se ne andrà prima di navigare nelle categorie.
Penso che il prossimo passo sia sperimentare nell’ambiente di sviluppo per vedere quali problemi incontrerò se sovrascrivo bumped_at e capire se posso accettarli come compromessi. Non ho ancora analizzato il codice, ma sembra che il marcatore dell’ultima visita impazzirà, quindi dovrò disattivarlo. Inoltre, penso che la sezione “nuovi o aggiornati” verrà compromessa, quindi potrebbe essere necessario anche lì qualche sovrascrittura o disattivazione.
Condividerò la mia esperienza in questa discussione, nel caso qualcuno altro sia interessato. Fatemi sapere se vi vengono in mente altri problemi che potrebbe causare.