Discourse Calendar (and Event)

:discourse2: Summary Discourse Calendar and Event adds dynamic and interactive calendar and event features to your Discourse site.
:open_book: Install Guide This plugin is bundled with Discourse core. There is no need to install the plugin separately.

Enabling Calendar (and Event)

The Calendar plugin can be enabled either by the toggle or from its settings, both accessible from your admin/plugins page:

/admin/plugins

Features

Somewhat unsurprisingly, Discourse Calendar (and Event) adds both the calendar and event features to your Discourse site. With these, you can create individual topic calendars to track important occasions or timelines, display calendars in categories, add a holiday calendar to mark vacations, absences, or sick days, create interactive event topics, as well as show an easy-access calendar summary of all of your upcoming events.

Calendars

Bespoke calendars can be created in multiple topics, and ones you wish to give higher visibility to can be displayed above a category’s topic list.

You can find more detailed information on how to create and use calendars in:

Events

The Event feature allows interactive elements to be inserted into topics which your members can use to sign up to attend or participate in your community’s activities. These are all summarised in a dedicated site-wide calendar, with the option to add an easy-access link to your navigation menu. You can find more information on how to create and use this feature in:

:exclamation: This should not be confused with Pavilion’s Events plugin (note the plural)

Calendar Settings

Name Description
calendar enabled Enable the discourse-calendar plugin. This will add support for a [calendar][/calendar] tag in the first post of a topic.
holiday calendar topic id Topic ID of staffs holiday / absence calendar.
holiday status emoji Defines the emoji used for the holiday status.
delete expired event posts after Posts with expired events will be automatically deleted after (n) hours. Set to -1 to disable deletion.
all day event start time Events that do not have a start time specified will start at this time. Format is HH:mm. For 6:00 am, enter 06:00
all day event end time Events that do not have a end time specified will end at this time. Format is HH:mm. For 6:00 pm, enter 18:00
calendar categories Display a calendar at the top of a category. Mandatory settings are categoryId and postId. eg: categoryId=6;postId=453[1] Other valid settings: tzPicker[2], weekends[3] and defaultView[4].
calendar categories outlet Allows to change which outlet should show the category calendar.
working days Set working days. You can display the availability of a group using the timezones tag in a post, eg: [timezones group=admins][timezones]
working day start hour Start time of the working day hours.
working day end hour End time of the working day hours.
close to working day hours extension Set extension time in working day hours to highlight the timezones.
calendar automatic holidays enabled Automatically set holiday status based on a users region (note: you can disable specific automatic holidays in plugin settings)
map events title Maps title of the sidebar calendar based on category. Defaults to “Upcoming events”

Event Settings

Name Description
discourse post event enabled Enables the Event features. Note: also needs calendar enabled to be enabled.
discourse post event allowed on groups Groups that are allowed to create events.
displayed invitees limit Limits the numbers of invitees displayed on an event.
display post event date on topic title Displays the date of the event after the topic title.
use local event date Use local date after topic title instead of relative time.
discourse post event edit notifications time extension Extends (in minutes) the period after the end of an event when going invitees are still being notified from edit in the original post.
discourse post event allowed custom fields Allows to let each event to set the value of custom fields.
events calendar categories Display an events calendar at the top of a category.
sort categories by event start date enabled Enable the sorting of category topics by event start date.
disable resorting on categories enabled Allow categories to disable the ability for users to sort on the event category.
sidebar show upcoming events Show upcoming events link in the sidebar under ‘More’. Requires post event enabled
map events to color Assigns an event color to a specified tag or category

:information_source: :curling_stone: The discourse-post-event/events.json endpoint now has an added parameter to switch between simple and detailed response. To get the detailed response you can add ?include_details=true:

/discourse-post-event/events.json?include_details=true

Integrations with Other Plugins

You can use a component from this plugin with Right Sidebar Blocks. You’ll want to ensure the desired route is enabled in the Right Sidebar Blocks component. The block name will be upcoming-events-list. Historically, there were additional settings required in the Calendar plugin itself, but this has been streamlined.

This is how the sidebar calendar will appear by default.

If you don’t want the time, you can add an empty timeFormat value in the component’s block setting.

:discourse2: Hosted by us? This plugin is available on our Business and Enterprise tiers Calendar | Discourse - Civilized Discussion


  1. categoryId is the category the calendar will be displayed on top of.
    postId is the post in which you put the calendar in with [calendar][/calendar] ↩︎

  2. it can display a time zone picker on the upper right of the calendar. False by default, you can enable it with tzPicker=true ↩︎

  3. it can hide Saturdays and Sundays from the calendar. True by default. You can set it to false with weekends=false. ↩︎

  4. defaultView will set the calendar’s view (day, week, etc;). It can be set as:

    defaultView=agendaDay
    defaultView=agendaWeek
    defaultView=month (default)
    defaultView=listNextYear ↩︎

Last edited by @tobiaseigen 2025-07-16T21:10:06Z

Check documentPerform check on document:
98 лайков
How to use the calendar plugin?
Events Plugin :calendar:
Discourse Calendar - How to?
Calendar plugin, nothing is displayed
Discourse 2.2.0.beta3 Release Notes
How to use the calendar plugin?
Ability to mark any post as unread
Discourse Calendar dislpay link text rather than link url
Is there a room booking plugin?
Db:migrate fails on discourse-calendar
Inserting date/time into new topic's title field (ie, right here > !)
📅 Event List Widget (Layouts Plugin)
I am looking for a webhook or event api
Please better document the Discourse Calendar plugin
Vacation autoresponder for users who are away?
Moderator/Admin Off Duty Button
Go from a Wordpress + Discourse structure to a Discourse site only?
Plugin to gather approvals / signatures on an initiative?
Creating sub-communities in a discourse server
Plugin to show upcoming events on hosted discourse
Add recurrent items within a date-range
Use Case Question - Room/Equipment Booking
Best practices for communicating to user base
Integrate with Discourse-calendar
My Wiki of useful Meta (and other) links
Quotes in event name clears attendees
Calendar in Discourse
Show Cakeday dates on the Calendar plugin
Agenda de colegio
What are your favorite plugins for your community?
Display a category as a calendar by scheduled Topic-timer dates
Why you should use Discourse internally for your company/team instead of Slack (4 years use case)
SEO applied to Discourse Official Plugins
Newbie question: Is there a comprehensive guide to configuring and administering Discourse instance?
Events Plugin :calendar:
When "closing" event it moves it to today's date & time
How to display different calendar views?
Discourse calendar and event iCal integration?
Can the auto-responder fire on @mentions?
Event/Calendar Plugin - Cannot select a user for bulk-invite
Bulk Invite via modal only allowing one user (and not displaying correctly)
Event Creation
500 Error when posting, moment.tz runtime error
Best practice for a topic for a recurring event
How to get "back" btn
Event Chat Channels Now Available
📅 New Calendar Feature: End Date for Recurring Events
🌍 New Calendar Feature: Show Local Time
What livestream/webinar platforms do you use?
Custom Wizard Plugin :mage:
ICS → Discourse Importer
How have you built a local community around Discourse?
Events Plugin :calendar:
What happens next?
Bundling more popular plugins with Discourse core
Easily create Events categories using the Events and Calendar plugin
Calendar subscription URLs for external calendar apps
Listing event invitees with email addresses
Discourse Daily Challenges
Help us test Horizon, our newest theme
Horizon: High Context Topic Cards
Easily create Events categories using the Events and Calendar plugin
Besoin de renseignement pour informer une annulation d'événement
It is very difficult to make events all day in the events modal (and 00:00 is confusing)
Upcoming Events Extra Buttons and Enhancements
Category Calendar with defaultView="listNextYear" not showing events
Calendar Core - Needs any special theme?
Creating and managing calendars
Sorting Categories by Title
Creating and managing events
Category Calendar with defaultView="listNextYear" not showing events
The "Save Changes" button is very low on my user preferences interface page
Group Timezones
Available hours / work hours flair
Could use help, setting up new community
Feature request: wrap calendar items when there's just one per day
Right Sidebar Blocks
Custom Discourse instance for a writers club
Unread messages blue numbers appearing in Latest lately (when they shouldn't)?
Database migration chokes on huge value of a "calendar-details" item in table "post_custom_fields"
"Out of office" user indicator
Database migration chokes on huge value of a "calendar-details" item in table "post_custom_fields"
Events Plugin :calendar:
Events Plugin :calendar:
Calendar plugin features to make it really useful for us
Topic List Previews (TLP)
"Out of office" user indicator
Can discourse display topic replies in reverse order?
Discourse Livestream
New to Discourse, have some questions :)
Expired events with end times are being removed from upcoming-events even with setting set to -1
Setup Continuous Integration using GitHub Actions
Add color to events based on event category or tag?
Is there any way to change the starting date of the Calendar?
Add color to events based on event category or tag?

Этот плагин выглядит многообещающе, но в нём отсутствуют некоторые функции, из-за чего мы не можем перейти с плагина Pavilion.

  • Отображение событий, не являющихся «весь день», с указанием времени начала в календаре. В настоящее время все события выглядят как события на весь день.

  • Кнопка «Добавить событие» в редакторе рядом с селектором тегов (не скрытая в шестерёнке).

  • Ограничение категорий, в которых могут создаваться события, и указание, являются ли события обязательными в определённой категории.

Желательные улучшения:

  • Метаданные события в теме отображаются/вводятся только в верхней части темы (а не там, где находится курсор).
  • Возможность ограничить группы пользователей, которые могут создавать события в категории (например, только группа «EventPlanners» может создавать события в категории «Обсуждение», но все пользователи могут создавать темы, не являющиеся событиями, или редактировать темы, если тема установлена как Wiki).
  • Изменение URL /upcoming-events на /calendar.
13 лайков

2 сообщения были перенесены в новую тему: Статус праздника применяется неверно

Здравствуйте,
Спасибо за эту работу.

У меня есть два вопроса по UX:

  • Можно ли разместить кнопку «Добавить событие» рядом с кнопкой «Добавить место» в редакторе темы? Как это было в случае с плагином pavilion?
    image

  • Есть ли возможность добавить пункт «Календарь» в верхнее меню? Я не могу найти его в настройках.

Выглядит отлично! Есть несколько мыслей и вопросов:

Правильно ли я понимаю, что для создания календаря нужно просто создать новую тему и вставить в неё следующее:

Название календаря

[calendar]
[/calendar]

А чтобы добавить записи в календарь, достаточно сделать новый пост в той же теме с чем-то вроде следующего (нажав на иконку вставить время/дату в опциях поста):

Название события/записи

[date-range from=2024-04-18 to=2024-04-19 timezone="Europe/London"]

Это добавляет запись в календарь, что здорово, однако:

  • Можно ли добавлять записи в календарь так, чтобы у каждой из них была своя отдельная тема? (Я вижу, что можно создавать события в новых темах, но, похоже, нет способа добавить эти события в календарь).
  • Можно ли отображать «Ближайшие события» из конкретного календаря в письмах с дайджестом? Или, возможно, в левой колонке, причём каждая запись будет ссылаться на отдельную тему для этого события?

Если это пока невозможно, есть ли у вас планы добавить такую функцию?

1 лайк

@vinothkannans, не могли бы вы помочь с ревью этого PR?

1 лайк

Планируется ли добавить URL-канал, на который пользователи смогут подписываться? Уверен, что это будет сложно реализовать для всех событий, а не только для тех, на которые они подтвердили участие.

Во-вторых, было бы здорово добавить дополнительный уровень, который распознавал бы приватные события (или, возможно, это просто отдельный URL-канал для каждой группы).

6 лайков

Однако для URL /upcoming-events нет RSS-канала — это было бы отличным дополнением!

3 лайка

А как насчет синхронизации через CalDAV?

6 лайков

Для меня это тоже было бы поводом переключиться, действительно.

Это требует более тщательной доработки, так как упоминается вставка события в редактор и добавление деталей события не так, как показано на изображении. Разве событие было опцией?

Я установил плагин, и тег календаря работает в первом сообщении темы. Но я не вижу никаких опций событий или календаря в меню с шестерёнкой:

Не могли бы вы объяснить, что нужно сделать, чтобы опция события появилась в меню с шестерёнкой?

Вам нужно включить раздел событий плагина discourse post event enabled

2 лайка

Спасибо. Я как-то упустил эту настройку.

3 лайка

Как сделать так, чтобы создание события отображалось в теме категории, где ответы являются событиями?

Я вижу, что функция создания события работает при создании новых тем. Однако я хочу иметь календарь внутри темы, где ответы добавляют события. Это частично работает с помощью вставки даты, но не так хорошо, как функция создания события, которая предлагает больше опций.

1 лайк

В настоящее время пользователи могут выбрать регион в настройках своего профиля.

Я хотел бы дать возможность указывать регион при регистрации, добавив это поле в форму регистрации. Это возможно?

2 лайка

Отображается ли удалённый ответ в календаре?

Я не могу найти никаких настроек для изменения первого дня недели на понедельник. Если такой настройки нет, это легко реализовать? :thinking:

Другая проблема заключается в том, что ввод времени и даты сломан. Если это событие на весь день, должна быть возможность выбрать это до того, как поля ввода времени исказят даты, и даты, кажется, случайно меняются при редактировании.

Также заметил, что можно ввести 00:00 и во времени, и в дате (что иногда работает, а иногда нет), что приводит к ошибке в календаре. Это, в свою очередь, вызывает конфликт с черновиками, приводя к повторяющейся ошибке 422, пока страница не будет откатана к более ранней версии, а затем снова отредактирована и т. д.

3 лайка

Пожалуйста, ознакомьтесь здесь

1 лайк

Такой настройки нет, и поэтому я не пользуюсь этим. И я готов поспорить, что команда исправит эту ошибку, если это будет простая трюковая правка.

1 лайк