创建和管理日历

:bookmark: 本指南介绍如何使用 Discourse 的 Calendar (and Event) 插件创建和管理日历。

:person_raising_hand: 所需用户级别:所有用户

Discourse 中的日历是一项强大功能,可让您在社区内组织和显示活动。本指南将引导您完成创建日历、添加活动以及有效管理日历的整个过程。

摘要

  • 启用 Calendar 插件
  • 在主题或类别中创建日历
  • 向日历添加活动
  • 管理日历选项和设置
  • 使用节假日日历功能

启用 Calendar 插件

在创建日历之前,请确保您的 Discourse 实例已启用“Calendar (and Event)”插件。有关启用插件及其相关设置的更多详细信息,请参阅 Discourse Calendar and Event 插件文档

创建日历

主题日历

要在主题中嵌入日历:

  1. 创建新主题或编辑现有主题的第一个帖子

  2. 在单独的行上添加以下代码:

    [calendar]
    [/calendar]
    
  3. 发布或更新帖子


:information_source: 在 Discourse 日历中,星期一被视为一周的第一天,无论查看者的区域设置如何。目前此设置不可配置。

类别日历

要创建全类别日历:

  1. 转到 /admin/site_settings/category/discourse_calendar?filter=plugin=discourse-calendar

  2. 在“calendar categories”设置中,添加格式如下的条目:

    categoryId=123;postId=4949;tzPicker;defaultView=month
    
    • 123 替换为您的类别 ID(在查看类别时的 URL 中找到)
    • 4949 替换为类别描述的帖子 ID(通过在“关于类别”主题 URL 后面附加 .json 来找到)
  3. 将类别 ID 添加到“events calendar categories”设置中

  4. 可以选择设置“discourse post event allowed on groups”来控制哪些组可以添加活动

向日历添加项目

主题日历

要向主题日历添加活动:

  1. 回复包含日历的主题

  2. 使用撰写器中的“插入日期/时间”功能(在 \u003ckbd\u003e+\u003c/kbd\u003e 菜单中)添加日期或日期范围

  3. 在日期上方添加描述

  4. 提交回复

    刷新主题后,活动将显示在日历中。

类别日历

要向类别日历添加活动:

  1. 在类别中创建新主题

  2. 点击齿轮按钮并选择“创建活动”

  3. 填写活动详细信息并发布

    活动将显示在类别日历中。

日历选项

您可以使用各种选项自定义日历:

选项 示例 描述
隐藏周末 weekends="false" 隐藏星期六和星期日
隐藏特定日期 hiddenDays="1,2" 隐藏星期一和星期二(0-6 代表星期日-星期六)
设置默认视图 defaultView="basicWeek" 选项:monthbasicWeeklistNextYear
忽略时区 fullDay="true" 将所有活动视为全天活动

示例用法:

[calendar weekends="false" hiddenDays="1,2" defaultView="basicWeek" fullDay="true"]
[/calendar]

删除日历项目

日历项目可以通过以下方式删除:

  • 可以使用“delete expired event posts after”设置自动删除过期的日历项目
  • 使用主题计时器自动删除帖子
  • 根据需要手动删除帖子

节假日日历

节假日日历是一项特殊功能,用于管理站点员工的休假:

  1. 创建一个在第一个帖子中包含日历的主题

  2. 将“holiday calendar topic id”设置为该主题的 ID

  3. 回复此主题将被视为发布用户的休假时间

  4. 休假条目会自动随机着色

  5. 休假用户姓名旁边的用户卡片和 @提及 会显示一个表情符号(默认::date:

  6. 可以选择通过启用“calendar automatic holidays enabled”来包含用户本地特有的节假日

常见问题解答

问:为什么有些活动似乎跨越了多天?
答:日历始终以 UTC 时间显示。使用“all day event start time”和“all day event end time”设置来调整时区差异。

问:我可以控制节假日日历条目的颜色吗?
答:目前,无法控制节假日日历条目的颜色,也无法在常规日历中获得带颜色的条目。

问:如何以列表视图显示过去的活动?
答:目前在使用 defaultView=listNextYear 时存在一个错误,会导致初始视图为空。作为一种变通方法,用户需要切换到月视图,然后返回一个月,再返回列表视图才能看到过去的活动。

附加资源

11 个赞

我很难理解如何创建一个日历以在类别中显示,以及如何在其中填充日历。对于主题,这相当直接,但类别的情况更为晦涩。有人能举个例子吗?

创建分类日历

主题日历(topic calendar)与分类日历(category calendar)的区别在于,前者使用来自特定主题回复的 ![add date|35x37](upload://rXT5BfnRxU4OVSGnwrIWTjqFlYb.png “添加日期”),并在主题本身中显示日历,而后者则使用已配置分类中的任意主题的 ![create event|29x28](upload://mFtdlH6k8fKKfYPZIOrAWUaEf5Q.png “创建事件”),并在分类中显示事件日历。

1. 启用日历插件

/admin/site_settings/category/discourse_calendar?filter=plugin%3Adiscourse-calendarcalendar categories 中:
您需要类似这样的设置:categoryId=123;postId=4949;tzPicker;defaultView=month

  • categoryId 很容易找到:点击 #category 时的 URL 中的数字。

  • postId 可以这样找到:转到分类描述(“关于分类”的置顶主题),然后在 URL 末尾添加 .jsonpostId 位于 JSON 文件的开头。

  • 查看 discourse-calendar 文档中可用选项

  • 将分类(在本例中为编号 123)添加到 events calendar categories

您可能希望设置 discourse post event allowed on groups 以包含您希望能够添加事件的组。

2. 创建事件

您可以在分类 123 中创建一个新主题,然后(从齿轮按钮)点击 create event

然后,该事件将出现在分类日历上。

:tada:

2 个赞

有什么办法可以显示过去一年的活动,而不是即将举行的活动吗?我们想在期刊部分使用该插件,并在第一篇文章中列出过去的所有条目。

使用下面的代码片段时,活动列表最初是空的。只有当返回到月视图,后退一个月,然后再返回到列表视图时,它才起作用。

[calendar defaultView=listNextYear fullDay=true]
[/calendar]

请看错误演示:
CleanShot 2024-05-07 at 14.08.49 2

6 个赞

我也对这个功能感兴趣。

我想知道是否也有一些数据浏览器脚本可以配合日历搜索。

3 个赞

当我的社区中的某个人发布日历事件,然后管理员编辑该事件时,为什么原始发布者无法再进行编辑?

这对数百人有影响,是个大问题。

请明确,目前只有“主题”日历从星期一开始,而“类别”日历则从星期日开始。

希望能够对此进行管理员配置,因为现在每个日历的显示方式都不同……

3 个赞

嗯。那很有道理,因为我之前没有意识到——

为了让假期在假期日历中可见,值得一提的是,回复必须包含一个时间戳,您需要从编辑器菜单中添加该时间戳。
另外,正如之前所述,帖子的 ID 是通过在帖子 URL 末尾添加 .json 来找到的。我认为这应该添加到这里的文档中,因为如果类别在其 URL 中有 ID,那么主题 URL ID 会让人们感到困惑,因为它的数字可能接近但与真实主题 ID 不相似。

不过,感谢您提供这份指南,内容很多,因为有很多很棒的功能,开发人员做得很好!

啊,AI重写添加了一些“事件”术语。理想情况下,应避免在文档的“日历”部分使用此术语,以免与插件的附加“事件”功能产生歧义。

1 个赞

我想问一下,在我启用插件后,我的 discourse 没有日历和齿轮按钮,是不是有什么问题?

1 个赞

齿轮图标在不久前已更改为。我认为插入日期已移入该更多菜单(我认为它现在也使用图标)。

这绝对是一个非常好的观点。看起来这份文档需要更新(而且可能还有其他主题仍然引用齿轮图标)。

1 个赞

感谢您的回复,然后我才意识到另一个与此相关的错误。我有这个图标,但它更大,并且在错误的位置,正如您所看到的,它挡住了。在手机上是正常的,但在桌面上却不是。顺便说一句,不是日历,而是列表中的事件。我该怎么办 :pleading_face:

安全模式(safe mode)是否可以修复加号图标的位置?

您期望哪个日历按钮?

那个现在是

我有一个插入按钮,然后我该如何发布日历?我尝试了代码 [calendar],它有效,但日期/时间是否包含在日历中?

对于大按钮,我尝试了安全模式,但它仍然是这样。重建应用程序不起作用,我能希望下一个版本更新能解决这个问题吗?:relieved_face: 或者有什么我可以做的,除了重新做整个事情 :rofl: