This would allow filtering for topics that have an Event attached via the Events plugin, using the
/filterroute 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-eventsroute 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.