# Adicionar evento: filtro à linguagem de consulta do filtro de tópicos (extensão do plugin Discourse Events)

**URL:** <https://meta.discourse.org/t/add-event-filter-to-the-topic-filter-query-language-discourse-events-plugin-extension/415803>\
**Category:** Feature\
**Tags:** events, topic-filter\
**Created:** [Outubro 26, 2026, 9:08pm UTC](https://meta.discourse.org/t/add-event-filter-to-the-topic-filter-query-language-discourse-events-plugin-extension/415803 "2026-10-26T21:08:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)\
**Post date:** [Outubro 26, 2026, 9:08pm UTC](https://meta.discourse.org/t/add-event-filter-to-the-topic-filter-query-language-discourse-events-plugin-extension/415803/1 "2026-10-26T21:08:54Z")

</div>

> ℹ Isso permitiria filtrar tópicos que possuem um Evento anexado via o plugin Events, usando a rota `/filter` e o plugin Custom Topic Lists.

## O problema

O [plugin Discourse Events](https://meta.discourse.org/t/discourse-calendar-and-event/97376) 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](https://meta.discourse.org/t/filtering-topic-lists-in-discourse/375558).

As soluções alternativas existentes têm todas desvantagens:

- A rota `/upcoming-events` exibe 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](https://meta.discourse.org/t/events-calendar-on-custom-lists/415039) 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](https://meta.discourse.org/t/filtering-topic-lists-in-discourse/375558) (`status:solved` / `status:unsolved`) e pelo [plugin Assign](https://meta.discourse.org/t/using-query-strings-to-filter-topic-views/248224) (`?assigned=username`).

#### Sintaxe de exemplo:

```plaintext
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:

> [@sam](#):
>
> - O recurso suporta extensões de plugins para filtros personalizados

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](https://meta.discourse.org/t/filtered-topic-lists/321031) — 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:

```plaintext
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.

* * *

## Tópicos Relacionados

- [Filtering topic lists in Discourse](https://meta.discourse.org/t/filtering-topic-lists-in-discourse/375558)
- [Events Calendar on Custom Lists](https://meta.discourse.org/t/events-calendar-on-custom-lists/415039)
- [The /upcoming-events url should include a topic list](https://meta.discourse.org/t/the-upcoming-events-url-should-include-a-topic-list/272063)
