События Discourse

:discourse2: Краткое описание Discourse Events добавляет динамические и интерактивные функции календаря и событий на ваш сайт Discourse.
:open_book: Руководство по установке Этот плагин входит в ядро Discourse. Отдельная установка плагина не требуется.

Включение событий

Плагин Events можно включить с помощью переключателя или из его настроек, оба доступны на странице admin/plugins:

:discourse2: У нас хостинг? Этот плаген доступен на наших тарифных планах Business и Enterprise https://www.discourse.org/plugins/calendar.html

Функции

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

Календари

Специальные календари могут быть созданы в нескольких темах, а те, которым вы хотите придать более высокую видимость, могут отображаться над списком тем категории.

Более подробную информацию о том, как создавать и использовать календари, можно найти здесь:

События

Функция Events позволяет вставлять интерактивные элементы в темы, которые ваши участники могут использовать для регистрации на участие или для участия в деятельности вашего сообщества. Все это сводится в отдельный общесайтовый календарь с возможностью добавить удобную ссылку в меню навигации. Больше информации о том, как создавать и использовать эту функцию, можно найти здесь:

:exclamation: Не следует путать с плагин Events от Pavilion (обратите внимание на множественное число)

Настройки календаря

Название Описание
calendar enabled Включить плагин discourse-calendar. Это добавит поддержку тега [calendar][/calendar] в первом посте темы.
holiday calendar topic id ID темы календаря отпусков/отсутствий сотрудников.
holiday status emoji Определяет эмодзи, используемый для статуса отпуска.
delete expired event posts after Посты с истекшими событиями будут автоматически удалены через (n) часов. Установите -1, чтобы отключить удаление.
all day event start time События, для которых не указано время начала, начнутся в это время. Формат: ЧЧ:мм. Для 6:00 утра введите 06:00
all day event end time События, для которых не указано время окончания, закончатся в это время. Формат: ЧЧ:мм. Для 6:00 вечера введите 18:00
calendar categories Отображать календарь вверху категории. Обязательные настройки: categoryId и postId. Пример: categoryId=6;postId=453[1] Другие допустимые настройки: tzPicker[2], weekends[3] и defaultView[4].
calendar categories outlet Позволяет изменить, какой outlet должен отображать календарь категории.
working days Установить рабочие дни. Вы можете отображать доступность группы с помощью тега timezones в посте, например: [timezones group=admins][timezones]
working day start hour Время начала рабочих часов.
working day end hour Время окончания рабочих часов.
close to working day hours extension Установить время расширения в рабочих часах для выделения часовых поясов.
calendar automatic holidays enabled Автоматически устанавливать статус отпуска на основе региона пользователя (примечание: вы можете отключить конкретные автоматические праздники в настройках плагина)
map events title Маппинг заголовка календаря в боковой панели на основе категории. По умолчанию “Предстоящие события”

Настройки событий

Название Описание
discourse post event enabled Включает функции Events. Примечание: также необходимо, чтобы calendar enabled было включено.
discourse post event allowed on groups Группы, которым разрешено создавать события.
displayed invitees limit Ограничивает количество приглашенных, отображаемых на событии.
display post event date on topic title Отображает дату события после заголовка темы.
use local event date Использовать локальную дату после заголовка темы вместо относительного времени.
discourse post event edit notifications time extension Расширяет (в минутах) период после окончания события, в течение которого приглашенные с статусом going все еще получают уведомления об изменении в исходном посте.
discourse post event allowed custom fields Позволяет каждому событию устанавливать значение пользовательских полей.
events calendar categories Отображать календарь событий вверху категории.
sort categories by event start date enabled Включает сортировку тем категории по дате начала события.
disable resorting on categories enabled Позволяет категориям отключить возможность для пользователей сортировать по категории событий.
sidebar show upcoming events Показывать ссылку на предстоящие события в боковой панели под “Еще”. Требуется post event enabled
map events to color Назначает цвет события указанному тегу или категории

:information_source: :curling_stone: В эндпоинт discourse-post-event/events.json добавлен параметр для переключения между простым и подробным ответом. Чтобы получить подробный ответ, вы можете добавить ?include_details=true:

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

Создание событий через API

Вы можете создавать события через POST /posts.json с использованием BBCode [event][/event] в поле raw. Вот подробности о том, как настроить ваш запрос API:

  • Используйте POST /posts.json с параметром raw
  • Синтаксис события: [event start="2024-05-10 20:00" status="public" timezone="America/Vancouver" end="2024-05-10 21:30" allowedGroups="trust_level_0"]\n[/event]
  • Буквальный символ новой строки \n обязателен между открывающим и закрывающим тегами
  • Двойные кавычки должны быть экранированы при использовании JSON (\")
  • Учетная запись пользователя API должна иметь разрешение на создание событий (администратор или группа с правами на создание событий)
  • Установите категорию с помощью параметра category, передав id категории в качестве значения.

События с прямым эфиром

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

Событие с прямым эфиром включает:

  • Видеопоток (например, с использованием YouTube)
  • Календарное событие с использованием Discourse Events
  • Сопутствующий чат канал, автоматически созданный для события

Требования к событиям с прямым эфиром

Для использования событий с прямым эфиром у вас должен быть включен chat enabled, поскольку прямой эфир создает чат-канал, сопровождающий ваше событие, в дополнение к discourse post event enabled и calendar enabled.

Если вы хотите использовать прямой эфир, но не хотите чат в других местах...
  • Установите chat allowed groups в конфигурацию по умолчанию или включите trust_level_0, чтобы позволить совершенно новым пользователям участвовать в чате прямого эфира
  • Удалите группы из настройки direct message enabled groups, чтобы предотвратить личные сообщения между пользователями
  • Не создавайте другие чат-каналы

Создание события с прямым эфиром

Чтобы создать событие с прямым эфиром:

  1. Откройте новую тему.
  2. Выберите значок + на панели инструментов композера и нажмите Создать событие (если событие еще не было добавлено к вашей теме).
  3. Вставьте ссылку на видео события (например, URL YouTube) в поле местоположения/URL.
  4. Включите переключатель “прямой эфир”

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

Как только любой пользователь нажмет Участвую на событии, он автоматически присоединится к чат-каналу, что позволит ему участвовать в разговоре!

Прямые трансляции веб-семинаров Zoom

Вы можете использовать прямой эфир для проведения веб-семинаров Zoom непосредственно в Discourse, чтобы участники могли смотреть событие и участвовать в сопутствующем чат-канале, не покидая ваше сообщество.

Требования к веб-семинарам Zoom

В дополнение к требованиям к прямому эфиру, вам также необходимо настроить следующие параметры:

  • Включите livestream zoom enabled
  • Введите ключ Zoom Meeting SDK в настройку livestream zoom sdk key
  • Введите секрет Zoom Meeting SDK в настройку livestream zoom sdk secret

Для получения ключа и секрета Zoom Meeting SDK:

  1. Перейдите на marketplace.zoom.us, нажмите Develop (Разработка), а затем Build app (Создать приложение).

  2. Когда вас спросят, какой тип приложения вы создаете, выберите General App (Общее приложение) и нажмите Create (Создать).

  3. На странице App Credentials (Удостоверения приложения) приложения скопируйте Client ID (Ключ SDK) и Client Secret (Секрет SDK).

  4. В разделе Embed (Встраивание) включите разрешение Meeting SDK (SDK совещаний).

  5. В вашем Discourse перейдите в Админ → Все настройки сайта и введите значения из шага 3 в livestream zoom sdk key и livestream zoom sdk secret.

Для того чтобы веб-семинар Zoom работал правильно в Discourse:

  • Для участия в веб-семинаре не должно требоваться регистрация или пароль.

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

Создание события прямого эфира для веб-семинара Zoom

Чтобы создать событие прямого эфира для вашего веб-семинара Zoom:

  1. Откройте новую тему, выберите значок + и нажмите Создать событие.
  2. Вставьте ссылку на ваш веб-семинар Zoom (например, https://zoom.us/``...) в поле URL/Местоположение.
  3. Включите Прямой эфир.
  4. Установите название события, время начала, время окончания и другие детали события по желанию.
  5. Опубликуйте тему.

Как и другие события с прямым эфиром, это событие будет создано с сопутствующим чат-каналом Discourse, к которому участники автоматически присоединяются после подтверждения участия “Участвую”.

Опыт участника

Вот как ваши участники будут переживать веб-семинар:

Перед событием

Кнопка Присоединиться к Zoom отображается за 30 минут до начала события. Вне этого окна кнопка отключена с сообщением о том, когда она станет доступной.

Во время события

Как только участники нажимают Присоединиться к Zoom, веб-семинар загрузится на страницу темы (или, если хост еще не начал событие, участнику придется подождать, пока он это сделает, чтобы увидеть видео).

Аудио не подключается автоматически при присоединении к веб-семинару; участникам необходимо нажать или коснуться значка аудио на панели инструментов Zoom, чтобы подключиться. Это ограничение Zoom SDK, и его нельзя изменить.

На мобильных устройствах веб-семинар открывается в полноэкранном виде Zoom (который также доступен на настольных компьютерах, добавив /zoom в конец URL темы события) с плавающей кнопкой Чат, на которую можно нажать, чтобы открыть панель наложения чата во время события.

После события

Кнопка Присоединиться к Zoom скрывается через 10 минут после времени окончания события. Чат-канал остается доступным для участников, пока вы не закроете его.

Интеграции с другими плагинами

Вы можете использовать компонент из этого плагина с Right Sidebar Blocks. Вам нужно убедиться, что желаемый маршрут включен в компоненте Right Sidebar Blocks. Имя блока будет upcoming-events-list. Исторически в самом плагине Calendar требовались дополнительные настройки, но это было упрощено.

Вот как по умолчанию будет выглядеть календарь в боковой панели.

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


  1. categoryId — это категория, над которой будет отображаться календарь.
    postId — это пост, в котором вы разместили календарь с помощью [calendar][/calendar] ↩︎

  2. может отображать выбор часового пояса в правом верхнем углу календаря. По умолчанию false, можно включить с помощью tzPicker=true ↩︎

  3. может скрывать субботы и воскресенья из календаря. По умолчанию true. Можно установить false с помощью weekends=false. ↩︎

  4. defaultView устанавливает вид календаря (день, неделя и т.д.). Может быть установлено как:

    defaultView=agendaDay
    defaultView=agendaWeek
    defaultView=month (по умолчанию)
    defaultView=listNextYear ↩︎

101 лайк
How to use the calendar plugin?
Discourse Calendar - How to?
Calendar plugin, nothing is displayed
Discourse 2.2.0.beta3 Release Notes
How to use the calendar plugin?
Discourse Calendar dislpay link text rather than link url
Ability to mark any post as unread
Is there a room booking plugin?
📅 Event List Widget (Layouts Plugin)
I am looking for a webhook or event api
Inserting date/time into new topic's title field (ie, right here > !)
Db:migrate fails on discourse-calendar
Moderator/Admin Off Duty Button
Go from a Wordpress + Discourse structure to a Discourse site only?
Creating sub-communities in a discourse server
Vacation autoresponder for users who are away?
Please better document the Discourse Calendar plugin
Plugin to gather approvals / signatures on an initiative?
Plugin to show upcoming events on hosted discourse
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?
SEO applied to Discourse Official Plugins
Add color to events based on event category or tag?
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)
Newbie question: Is there a comprehensive guide to configuring and administering Discourse instance?
Angus' 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?
Angus' Events Plugin :calendar:
What happens next?
Bundling more popular plugins with Discourse core
Calendar subscription URLs for external calendar apps
Listing event invitees with email addresses
Discourse Daily Challenges
Upcoming Events Extra Buttons and Enhancements
Horizon: High Context Topic Cards
Besoin de renseignement pour informer une annulation d'événement
Current Projects - May 2026
It's easier than ever to create events in Discourse!
Easily create Events categories using the Calendar and Events plugin
Discourse Calendar & Events: Webhook triggers & Automations Plugin
Discourse Calendar - How to?
Angus' Events Plugin :calendar:
Topic List Previews (TLP)
New Topic button text does not change to New Event in sidebar in events category in Horizon Theme
Current Projects - June 2026
Event Duplicator: duplicate calendar events/topics into a new time period
It is very difficult to make events all day in the events modal (and 00:00 is confusing)
Questions about the Zoom Livestream integration
Help us test Horizon, our newest theme
Discourse Calendar is now Discourse Events!
Category Calendar with defaultView="listNextYear" not showing events
Zoom webinar livestream in the Events plugin
Calendar Core - Needs any special theme?
Current Projects - August 2026
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
Easily create Events categories using the Calendar and Events plugin
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"
Angus' Events Plugin :calendar:
Angus' Events Plugin :calendar:
Calendar plugin features to make it really useful for us
"Out of office" user indicator
Can discourse display topic replies in reverse order?