Add event: filter to the topic filter query language (Discourse Events plugin extension)

:information_source: This would allow filtering for topics that have an Event attached via the Events plugin, using the /filter route and the Custom Topic Lists plugin.

The problem

The Discourse Events plugin creates rich event topics, but there’s currently no way to isolate them from non-event topics using the topic filter query language.

The existing workarounds all have downsides:

  • The /upcoming-events route shows events as a calendar, not a filterable topic list - although it perhaps should!!!
  • The Events Calendar on Custom Lists theme component has a client-side “Only show topics with events” setting, but it operates after the list loads — it’s not a true server-side filter, doesn’t play well with pagination, and can behave inconsistently
  • Convention-based approaches (dedicated categories, required tags) require strict content management discipline

Proposed solution

The Events plugin should extend the topic filter DSL with an event: filter, following the same pattern already used by the Solved plugin (status:solved / status:unsolved) and the Assign plugin (?assigned=username).

Example syntax:

event:yes                          # Topics with an event attached
event:no                           # Topics without an event (via -event:yes)
-category:announcements event:yes  # Events outside of announcements
tag:meetup event:yes order:created # Tagged meetup topics that have events, sorted by newest

A status:events variant could also be considered for consistency with the existing status: namespace, but event: reads more naturally for the primary use case.

Why this is the right layer

The filter documentation explicitly states:

The Events plugin already stores structured event data (start date, end date, status, RSVPs) in dedicated tables. A server-side filter can query this efficiently — something a client-side component simply can’t do.

Use case example

As a community manager, I want a shareable URL — linkable in my sidebar, embeddable via Custom Topic Lists, and usable in the Filtered Topic Lists theme component — that reliably shows all topics across any category that have an event attached, sorted by event date.

Today, I can’t construct that query with confidence. With an event: filter, I could:

event:yes order:created

…and get a clean, paginated, permission-aware topic list of all events on my site.


Related Topics