作为跟进,我想说明一下如何通过 Discourse 的开箱即用功能来最好地满足您的需求。这可能不完全符合您的设想,但我认为它值得作为讨论的起点。
首先,我做了一些假设,这些假设可能有效,也可能无效。请告诉我我哪里说错了:
- 将会有很多课程(几十个,可能上百个)
- 课程的设置将定期进行,分批进行,在每个学期开始时(每年 2-4 次)
- 课程将有生命周期
- 管理课程的人需要能够自己进行一些设置
- 管理课程的人在管理 Discourse 网站方面经验有限或没有经验。
- 管理课程的人实际上只需要看到他们自己的课程。他们可能偶尔想看看别人的课程作为例子,但不需要持续参与其中。
- ^ 同上,对于选修课程的人
- 有一个非常小的团队负责管理整个系统
- 课程实际上不需要子类别;使用标签来组织课程内的内容就足够了
鉴于这些假设接近实际情况,以下是我的建议,首先是高层次的:
- 创建少量顶级类别:一个用于“当前课程”,一个用于“过去课程”,一个用于“即将到来的课程”,以及一个或多个用于关于整个系统本身的更一般的内容(例如,如何使用网站)。
- 将主页样式设置为“带类别的框”,以便突出显示它们。
- 为每个课程使用子类别。
- 在“即将到来的课程”中创建它们。
- 在学期开始时将它们移至“当前课程”。
- 课程结束后,将其从“当前课程”移至“过去课程”。
- 使用群组控制对课程的访问(下文有更多详细信息)。
访问控制:
- 对于每个课程,创建一个以下群组集,例如:foo_interested、foo_enrolled、foo_admin。
- 创建两个额外的群组:“browse_courses”和“browse_past_courses”。
- 将“即将到来的课程”和“当前课程”中的类别设置为只能由特定课程的群组成员以及“browse_courses”群组的成员访问。
- 将“过去课程”中的类别设置为只能由特定课程的群组成员以及“browse_past_courses”群组的成员访问。
群组和课程的用户体验
- 在“即将到来的课程”的顶级类别中置顶一个主题,解释如何浏览课程,并提供一个简单的入口供人们加入“browse_courses”群组。
- ^ 同上,用于“当前课程”。
- ^ 同上,用于“过去课程”。
对于个别课程,在类别中置顶一个主题,解释如何加入课程:
- 加入“foo_interested”和/或“foo_enrolled”群组。
- 将课程添加到您的侧边栏。
管理工作最初会有些繁琐,因为对于每个新课程,拥有适当权限的人都需要:
- 创建类别。
- 创建群组。
- 创建置顶主题。
- 将人员添加到 _admins 群组。
- 向他们提供管理自己课程所需的文档。
其中一些可以通过轻量级工具进行自动化。根据主要管理团队是谁,可能需要从一些带外工具开始,这些工具直接调用 API。或者,您可能需要一个更基于 UI 的东西,它作为主题组件或插件内置到 Discourse 中。但我建议从精简开始,首先专注于定义一个可行的流程,然后围绕该流程设计工具。
类别扩展可能是一个令人担忧的问题。当类别数量过多(数百或数千)时,Discourse 在性能和用户体验方面确实存在一些粗糙之处。可以访问更多类别的用户将感受到这种影响,而访问权限有限的用户则不会。这也是限制对类别访问的部分原因,如我所述。
非常期待听到您对以上内容的任何反馈或疑问。