Discourseのカレンダーとイベント

:discourse2: 概要 Discourse Calendar and Events は、Discourse サイトに動的でインタラクティブなカレンダーおよびイベント機能を追加します。
:open_book: インストールガイド このプラグインは Discourse コアにバンドルされています。プラグインを個別にインストールする必要はありません。

カレンダーとイベントの有効化

カレンダーとイベントプラグインは、admin/plugins ページからアクセスできるトグルスイッチまたは設定から有効化できます。

機能

予想通り、Discourse Calendar and Events は、Discourse サイトにカレンダー機能とイベント機能の両方を追加します。これにより、重要な行事やタイムラインを追跡するための個別のトピックカレンダーを作成したり、カテゴリにカレンダーを表示したり、休暇や欠勤、病欠などを示すための祝日カレンダーを追加したり、インタラクティブなイベントトピックを作成したり、また、今後のすべてのイベントの簡単なアクセス可能なカレンダー概要を表示したりすることができます。

カレンダー

複数のトピックに独自のカレンダーを作成でき、より高い可視性を持たせたいものは、カテゴリのトピックリストの上部に表示できます。

カレンダーの作成と使用方法の詳細は、以下のリンクから確認できます。

イベント

イベント機能により、メンバーがコミュニティの活動への参加を登録するためのインタラクティブな要素をトピックに挿入できます。これらはすべて、専用のサイト全体のカレンダーでまとめられており、ナビゲーションメニューに簡単にアクセスできるリンクを追加するオプションがあります。この機能の作成と使用方法の詳細は、以下のリンクから確認できます。

:exclamation: これは Pavilion の Events プラグイン(複数形に注意)と混同しないでください。

カレンダー設定

名前 説明
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 開始時間が指定されていないイベントは、この時間から開始されます。フォーマットは HH:mm です。午前6時の場合、06:00 と入力します。
all day event end time 終了時間が指定されていないイベントは、この時間で終了します。フォーマットは HH:mm です。午後6時の場合、18:00 と入力します。
calendar categories カテゴリの上部にカレンダーを表示します。必須設定は categoryId と postId です。例: categoryId=6;postId=453[1] その他の有効な設定: tzPicker[2]、weekends[3] および defaultView[4]
calendar categories 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 カテゴリに基づいてサイドバーカレンダーのタイトルをマッピングします。デフォルトは “Upcoming events” です。

イベント設定

名前 説明
discourse post event enabled イベント機能を有効にします。注意: 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 「More」の下にサイドバーに今後のイベントへのリンクを表示します。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 を使用し、raw フィールドに [event][/event] BBCode を含めることで、イベントを作成できます。API リクエストの設定方法は以下の通りです。

  • raw パラメータを使用して POST /posts.json を使用
  • イベント構文: [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 Calendar and Events を使用したカレンダーイベント
  • イベント用に自動的に作成される付随する チャット チャンネル

ライブストリームイベントの前提条件

ライブストリームイベントを使用するには、discourse post event enabled および calendar enabled の他に、chat enabled が必要です。これは、ライブストリームがイベントに付随するチャットチャンネルを作成するためです。

ライブストリームを使用したいが、他の場所ではチャットを使用したくない場合...
  • chat allowed groups をデフォルト構成に設定するか、trust_level_0 を含めて、新規ユーザーがライブストリームチャットに参加できるようにします
  • ユーザー間DMを防止するために、direct message enabled groups 設定からグループを削除します
  • 他のチャットチャンネルを作成しないでください

ライブストリームイベントの作成

ライブストリームイベントを作成するには:

  1. 新しいトピックを開きます。
  2. コンポーザーツールバーの + アイコンを選択し、Create Event をクリックします(イベントがまだトピックに追加されていない場合)。
  3. イベントビデオへのリンク(例: YouTube URL)を場所/URLフィールドに貼り付けます。
  4. “livestream” をオンにします

その後、イベントとライブストリームが作成され、右側に付随するチャットチャンネルが表示されます。

ユーザーがイベントで Going をクリックすると、自動的にチャットチャンネルに参加し、会話に参加できます!

Zoom ウェビナーのライブストリーミング

ライブストリームを使用して、Discourse 内で直接 Zoom ウェビナーをホストできます。これにより、メンバーはコミュニティを離れずにイベントを視聴し、付随するチャットチャンネルに参加できます。

Zoom ウェビナーの前提条件

ライブストリームの前提条件に加えて、以下の設定を構成する必要があります。

  • livestream zoom enabled をオンにします
  • livestream zoom sdk key 設定に Zoom Meeting SDK キーを入力します
  • livestream zoom sdk secret 設定に Zoom Meeting SDK シークレットを入力します

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 権限を有効にします。

  5. Discourse で、Admin → All site settings に移動し、ステップ3の値を livestream zoom sdk keylivestream zoom sdk secret に入力します。

Zoom ウェビナーが Discourse で正しく動作するには:

  • ウェビナーは登録やパスコードを必要としないでください

  • すべての議論を単一の Discourse チャットチャンネルで行い、ウェビナー終了後も会話を継続できるようにするために、Zoom の組み込みウェビナーチャットを無効にしてください

Zoom ウェビナーのライブストリームイベントの作成

Zoom ウェビナーのライブストリームイベントを作成するには:

  1. 新しいトピックを開き、+ アイコンを選択し、Create Event をクリックします。
  2. Zoom ウェビナーのリンク(例: https://zoom.us/``...) を URL/Location フィールドに貼り付けます。
  3. Livestream をオンにします。
  4. イベント名、開始時間、終了時間、およびその他のイベント詳細を必要に応じて設定します。
  5. トピックを投稿します。

他のライブストリームイベントと同様に、このイベントは付随する Discourse チャットチャンネルとともに作成され、メンバーは “Going” と RSVP した後に自動的に参加します。

メンバーの体験

メンバーは以下のようにウェビナーを体験します。

イベント前

イベント開始の30分前から Join Zoom ボタンが表示されます。それ以外の時間帯には、ボタンが無効化され、利用可能になるタイミングを示すメッセージが表示されます。

イベント中

メンバーが Join Zoom をクリックすると、ウェビナーがトピックページにロードされます(または、ホストがまだイベントを開始していない場合、メンバーはホストが開始するまで待機する必要があります)。

ウェビナーに参加する際にオーディオは自動的に接続されません。参加者は Zoom ツールバーのオーディオアイコンをクリックまたはタップして接続する必要があります。これは Zoom SDK の制限であり、変更できません。

モバイルでは、ウェビナーはフルスクリーンの Zoom ビューで開きます(イベントトピックURLの末尾に /zoom を追加することでデスクトップでもアクセス可能)で、イベント中にチャットオーバーレイパネルを開くためにタップできるフローティング Chat ボタンがあります。

イベント後

Join Zoom ボタンはイベント終了時間の10分後に非表示になります。チャットチャンネルは、あなたが閉じるまで参加者にアクセス可能です。

他のプラグインとの統合

このプラグインのコンポーネントを Right Sidebar Blocks と一緒に使用できます。Right Sidebar Blocks コンポーネントで必要なルートが有効になっていることを確認してください。ブロック名は upcoming-events-list です。以前はカレンダープラグイン自体で追加の設定が必要でしたが、これは簡素化されました。

サイドバーカレンダーはデフォルトでこのように表示されます。

時間を表示したくない場合は、コンポーネントのブロック設定で空の timeFormat 値を追加できます。

:discourse2: 私たちがホストしていますか?このプラグインは、Business および Enterprise ティアで利用可能です Calendar | Discourse - Civilized Discussion


  1. categoryId はカレンダーが表示されるカテゴリです。
    postId は [calendar][/calendar] でカレンダーを配置する投稿です。 ↩︎

  2. カレンダーの右上にタイムゾーンピッカーを表示できます。デフォルトは false ですが、tzPicker=true で有効にできます。 ↩︎

  3. カレンダーから土曜日と日曜日非表示にできます。デフォルトは true です。weekends=false で 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
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
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
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?
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