Questo permetterebbe di filtrare gli argomenti che hanno un Evento associato tramite il plugin Events, utilizzando la rotta
/filtere il plugin Custom Topic Lists.
Il problema
Il plugin Discourse Events crea argomenti evento ricchi di dettagli, ma al momento non c’è modo di isolarli dagli argomenti non-evento utilizzando il linguaggio di query del filtro argomenti.
Le soluzioni alternative esistenti presentano tutti dei difetti:
- La rotta
/upcoming-eventsmostra gli eventi come un calendario, non come un elenco di argomenti filtrabile - anche se forse dovrebbe farlo!!! - Il componente tematico Events Calendar on Custom Lists ha un’impostazione client-side “Mostra solo argomenti con eventi”, ma opera dopo che l’elenco è stato caricato — non è un vero filtro lato server, non funziona bene con la paginazione e può comportarsi in modo incoerente
- Gli approcci basati su convenzioni (categorie dedicate, tag obbligatori) richiedono una rigorosa disciplina nella gestione dei contenuti
Soluzione proposta
Il plugin Events dovrebbe estendere il DSL del filtro argomenti con un filtro event:, seguendo lo stesso schema già utilizzato dal plugin Solved (status:solved / status:unsolved) e dal plugin Assign (?assigned=username).
Sintassi di esempio:
event:yes # Argomenti con un evento associato
event:no # Argomenti senza evento (tramite -event:yes)
-category:announcements event:yes # Eventi fuori dalla categoria annunci
tag:meetup event:yes order:created # Argomenti con tag meetup che hanno eventi, ordinati per i più recenti
Potrebbe essere considerata anche una variante status:events per coerenza con lo spazio dei nomi esistente status:, ma event: risulta più naturale per il caso d’uso principale.
Perché questo è il livello giusto
La documentazione dei filtri afferma esplicitamente:
Il plugin Events archivia già dati strutturati sugli eventi (data di inizio, data di fine, stato, RSVP) in tabelle dedicate. Un filtro lato server può interrogarli in modo efficiente — qualcosa che un componente client-side semplicemente non può fare.
Esempio di caso d’uso
Come community manager, desidero un URL condivisibile — linkabile nella mia barra laterale, incorporabile tramite Custom Topic Lists e utilizzabile nel componente tematico Filtered Topic Lists — che mostri in modo affidabile tutti gli argomenti in qualsiasi categoria che hanno un evento associato, ordinati per data dell’evento.
Attualmente, non riesco a costruire quella query con sicurezza. Con un filtro event:, potrei:
event:yes order:created
…e ottenere un elenco di argomenti pulito, paginato e consapevole delle autorizzazioni di tutti gli eventi sul mio sito.