本指南介绍如何使用日历(和事件)插件在 Discourse 中创建和管理日历。
所需用户级别:所有用户
日历是 Discourse 中的一项强大功能,可让您在社区内组织和显示事件。本指南将引导您完成创建日历、添加事件以及有效管理日历的过程。
摘要
- 启用日历插件
- 在主题或类别中创建日历
- 向日历添加事件
- 管理日历选项和设置
- 使用节假日日历功能
启用日历插件
在创建日历之前,请确保您的 Discourse 实例上已启用“日历(和事件)”插件。有关启用插件及其相关设置的更多详细信息,请参阅 Discourse 日历和事件插件文档。
创建日历
主题日历
要在主题中嵌入日历:
-
创建一个新主题或编辑现有主题的第一个帖子
-
在单独的行中添加以下代码:
[calendar] [/calendar] -
发布或更新帖子
无论查看者的区域设置如何,Discourse 日历中星期一都被视为一周的第一天。目前无法配置此项。
类别日历
要创建全类别的日历:
-
访问
/admin/site_settings/category/discourse_calendar?filter=plugin=discourse-calendar -
在“日历类别”(calendar categories)设置中,添加一个具有以下格式的条目:
categoryId=123;tzPicker;defaultView=month- 将
123替换为您的类别 ID(在查看类别时,可在 URL 中找到)
- 将
-
将类别 ID 添加到“事件日历类别”(events calendar categories)设置中
-
(可选)设置“允许在群组上创建 Discourse 事件帖子”(discourse post event allowed on groups)以控制哪些群组可以添加事件
向日历添加条目
主题日历
要向主题日历添加事件:
- 回复包含日历的主题
- 使用编辑器 \text{<kbd>+</kbd>} 菜单中的“插入日期/时间”(Insert date / time)功能添加日期或日期范围
- 在日期上方添加描述
- 提交回复
重新加载主题后,事件将显示在日历中。
类别日历
要向类别日历添加事件:
- 在该类别中创建一个新主题
- 点击齿轮按钮并选择“创建事件”(Create event)
- 填写事件详细信息并发布
事件将显示在类别日历上。
日历选项
您可以使用各种选项来自定义日历:
| 选项 | 示例 | 描述 |
|---|---|---|
| 隐藏周末 | weekends="false" |
隐藏星期六和星期日 |
| 隐藏特定日期 | hiddenDays="1,2" |
隐藏星期一和星期二(使用 0-6 代表星期日-星期六) |
| 设置默认视图 | defaultView="basicWeek" |
选项:month、basicWeek、listNextYear |
| 忽略时区 | fullDay="true" |
将所有事件视为全天事件 |
使用示例:
[calendar weekends="false" hiddenDays="1,2" defaultView="basicWeek" fullDay="true"]
[/calendar]
删除日历条目
日历条目可以通过以下方式删除:
- 可以使用“删除过期事件帖子时间”(delete expired event posts after)设置自动删除过期的日历条目
- 使用主题计时器自动删除回复
- 根据需要手动删除帖子
节假日日历
节假日日历是一项特殊功能,用于管理网站员工的休假:
- 创建一个在第一个帖子中包含日历的主题
- 将“节假日日历主题 ID”(holiday calendar topic id)设置为该主题的 ID
- 对该主题的回复将被视为发帖用户的休假时间
- 休假条目会自动随机着色
- 一个表情符号(默认:
)将出现在休假用户的用户名和 @提及 的旁边 - (可选)启用“日历自动节假日”(calendar automatic holidays enabled)以包含特定于区域设置的节假日
常见问题解答
问:为什么有些事件似乎跨越了多天?
答:日历始终以 UTC 为准。使用“全天事件开始时间”(all day event start time)和“全天事件结束时间”(all day event end time)设置来调整时区差异。
问:我能控制节假日日历条目的颜色吗?
答:目前,无法控制节假日日历条目的颜色,也无法在常规日历中获得彩色条目。
问:如何在列表视图中显示过去的事件?
答:当使用 defaultView=listNextYear 时,当前存在一个错误,导致初始视图为空。作为一种变通方法,用户需要切换到月视图,返回上一个月,然后再返回列表视图才能看到过去的事件。



