Isso permitiria filtrar tópicos que possuem um Evento anexado via o plugin Events, usando a rota
/filtere o plugin Custom Topic Lists.
O problema
O plugin Discourse Events cria tópicos de eventos ricos em detalhes, mas atualmente não há uma maneira de isolá-los de tópicos sem eventos usando a linguagem de consulta do filtro de tópicos.
As soluções alternativas existentes têm todas desvantagens:
- A rota
/upcoming-eventsexibe os eventos como um calendário, e não como uma lista de tópicos filtrável - embora talvez deveria!!! - O componente de tema Calendário de Eventos em Listas Personalizadas tem uma configuração no lado do cliente “Mostrar apenas tópicos com eventos”, mas ela opera após o carregamento da lista — não é um verdadeiro filtro no lado do servidor, não funciona bem com paginação e pode se comportar de forma inconsistente
- Abordagens baseadas em convenções (categorias dedicadas, tags obrigatórias) exigem rigorosa disciplina na gestão de conteúdo
Solução proposta
O plugin Events deve estender o DSL do filtro de tópicos com um filtro event:, seguindo o mesmo padrão já utilizado pelo plugin Solved (status:solved / status:unsolved) e pelo plugin Assign (?assigned=username).
Sintaxe de exemplo:
event:yes # Tópicos com um evento anexado
event:no # Tópicos sem evento (via -event:yes)
-category:announcements event:yes # Eventos fora de anúncios
tag:meetup event:yes order:created # Tópicos marcados como meetup que possuem eventos, ordenados pelos mais recentes
Uma variante status:events também poderia ser considerada para consistência com o namespace existente status:, mas event: soa mais natural para o caso de uso principal.
Por que esta é a camada certa
A documentação dos filtros declara explicitamente:
O plugin Events já armazena dados estruturados de eventos (data de início, data de término, status, RSVPs) em tabelas dedicadas. Um filtro no lado do servidor pode consultar isso eficientemente — algo que um componente no lado do cliente simplesmente não consegue fazer.
Exemplo de caso de uso
Como gerente de comunidade, quero uma URL compartilhável — linkável na minha barra lateral, incorporável via Custom Topic Lists e utilizável no componente de tema Filtered Topic Lists — que mostre de forma confiável todos os tópicos em qualquer categoria que possuam um evento anexado, ordenados pela data do evento.
Hoje, não consigo construir essa consulta com confiança. Com um filtro event:, eu poderia:
event:yes order:created
…e obter uma lista de tópicos limpa, paginada e consciente de permissões de todos os eventos no meu site.