Single source of truth for Birkly CMS documentation

Template functions registered by the Events plugin when active — upcoming lists, .ics links, calendar subscribe, RSVP / ticket checkout.

In short: Use {upcoming_events}, {event_ics_url}, {events_calendar_feed_url}, {event_register_url}, and {event_ticket_checkout_url} when Events is installed. List pages can also use normal {for each entry in 'events' …} loops. Detail pages resolve one event from the URL — see Detail pages.

Video (follow-along): optional (P3) — events registration flow

Beginner

Upcoming events helper

{for each event in upcoming_events 10}
  <a href="event.html?collection=events&slug={event.slug}">
    <h3>{event.title}</h3>
    <p>{event.start} · {event.venue}</p>
  </a>
{endfor}

Or a standard collection loop:

{for each entry in 'events' with status = published ordered by newest}
  <a href="event.html?collection=events&slug={slug}">{title}</a>
{endfor}

Add one date to a calendar (.ics)

<a href="{event_ics_url events id 0}">Add to calendar</a>

Arguments: collection slug, entry id, occurrence index (0 for single dates).

Subscribe (iCal)

<a href="{events_calendar_feed_url}">Subscribe (iCal)</a>
Advanced Users

For developers & AI

FunctionSignatureReturns
upcoming_eventslimit?Upcoming occurrence list
event_ics_urlcollection, entry_id, occurrence_index?.ics URL
events_calendar_feed_urlnoneWhole-calendar feed
event_register_urlevent_idFree RSVP URL
event_ticket_checkout_urlevent_id, ticket_typePaid ticket (via Commerce)

Recurring series expand in events_index.json. Pass the correct occurrence / series_index for per-date .ics.

Page patterns: Storefront and events patterns. Extensions model: Plugin language extensions.