| 摘要 | 为选定群组创建自定义侧边栏菜单 | |
| 预览 | 加入此 主题创作者群组,然后在此 进行预览 | |
| 代码仓库 | https://github.com/Lillinator/discourse-group-sidebar-menus | |
| 安装指南 | 如何安装主题或主题组件 | |
| 刚接触 Discourse 主题? | Discourse 主题使用入门指南 |
安装此主题组件
概述
此 Discourse 主题组件使论坛管理员能够创建仅对选定群组成员可见的自定义侧边栏菜单。
主要功能:
- 基于群组的菜单可见性 - 菜单部分仅对授权用户在侧边栏中渲染
- 基于对象的配置 - 提供易于使用的设置界面以创建菜单
- 多个部分 - 可为不同群组创建无限数量的菜单部分(在合理范围内)
- 管理员快速编辑链接 - 菜单标题中的铅笔图标可直接链接到组件设置
一些使用场景
- 仅限员工的资源和快捷链接
- 分类版主快捷方式
- 自定义群组门户(项目团队、学习小组、读书俱乐部、VIP 成员)
- 指向母公司或合作伙伴网站资源的链接
设置
菜单部分 (menu_sections)
打开对象设置编辑器以配置自定义群组菜单部分。
部分属性
| 属性 | 描述 |
|---|---|
| 菜单标题 | 显示为侧边栏部分标题的文本 |
| 允许群组 | 有权查看此菜单部分的群组(每部分最多 20 个群组) |
| 菜单链接 | 在此部分中显示的链接集合(每部分最多 20 个链接) |
链接属性
| 属性 | 描述 |
|---|---|
| 图标 | FontAwesome 图标名称(例如 circle-info、star、user-group)。可能需要添加到 Admin > 所有站点设置 > svg 图标子集 |
| 文本 | 链接的显示标签 |
| URL | 链接目标 - 支持相对路径(/faq、/my/preferences)和绝对 URL(https://example.com) |
安装与配置
- 按照 Installing a theme or theme component 安装主题组件。
- 进入
对象设置编辑器 - 点击
+ new_menu_section按钮以设置第一个自定义菜单部分 - 在
菜单标题字段中为新菜单输入标题,然后选择希望其拥有访问权限的群组。 - 点击
+ new_menu_section添加另一个部分,或保存更改。
管理员配置截图及示例设置
全新安装 - 进入 对象设置编辑器。
包含 2 个自定义菜单和 3 个用户(其中一个是管理员)的示例场景:
@Catra喜爱猫咪,是pink群组的成员,该群组将有权访问猫菜单@HelloKitty喜欢狗狗,是purple群组的成员,该群组将有权访问狗菜单@Lilly是purple群组的成员,因为她养狗且认为狗更棒。不过,她也是论坛管理员,管理员将有权访问猫菜单,因为猫咪需要更多监督![]()
创建新的自定义菜单 - 以我们的示例为例,创建 猫菜单 并添加有权访问该菜单的群组 - pink 和 admins。然后点击 + menu_link 按钮以设置新菜单的链接。
添加菜单链接 - 1. FontAwesome 图标名称,2. 链接显示文本,3. URL(相对或绝对)。点击 + menu_link 按钮可为此菜单添加另一个链接。
创建另一个名为 狗菜单 的自定义菜单部分,仅授予 purple 群组访问权限并配置链接:
配置示例
菜单标题:"猫咪相关"
允许群组:team-cat
链接:
- 图标:link
文本:猫咪视频和照片
URL: /t/cat-videos-and-photos/123
- 图标:magnifying-glass
文本:猫咪百科
URL: https://en.wikipedia.org/wiki/Cat
重要说明
管理员访问权限
管理员必须将自己添加到相关群组 才能查看为这些群组配置的菜单。仅凭管理员身份并不会自动授予访问所有自定义菜单的权限。这是有意为之!此外,属于菜单允许群组的管理员将在部分标题中看到铅笔图标,点击可链接到组件设置。
群组配置
- 不支持
everyone群组 - 请使用原生侧边栏页脚 UI 为所有用户(包括匿名访客)创建全局自定义菜单。 - 每个菜单部分最多支持 20 个群组。如果需要更多,可创建具有不同群组分配的重复制部分。
- 属于多个群组的用户将看到其有权访问的所有菜单部分。
测试与组织
使用测试账户验证不同群组组合的访问权限是否正确。随着复杂度增加,请记录您的菜单配置以避免混淆;对于拥有众多群组的大型论坛,建议采用访问矩阵或类似文档。
安全注意事项
此组件仅提供界面级别的访问控制。它控制菜单的可见性,而非资源访问权限 - 此组件仅控制侧边栏中渲染的内容,而非谁可以访问实际资源。
请务必依赖 Discourse 内置的权限系统来保护实际资源:
- 正确配置分类权限
- 设置主题可见性限制
- 使用基于群组的访问控制来管理内容
- 确保私有资源需要身份验证
管理员最佳实践:
分别配置链接分类的安全权限和群组成员资格 - 例如:指向私有分类的菜单链接必须正确配置该分类的权限。管理员有责任确保指向外部资源的链接已为选定群组获得适当授权。
这是一个与 @Moin 合作的项目 - 她的意见、灵感和反馈非常有价值。
查看我的其他 Discourse 相关内容







