Discourse 群组侧边栏菜单

:information_source: 摘要 为选定群组创建自定义侧边栏菜单
:eyeglasses: 预览 加入此 主题创作者群组,然后在此处 预览
:hammer_and_wrench: 代码仓库 https://github.com/Lillinator/discourse-group-sidebar-menus
:question: 安装指南 如何安装主题或主题组件

安装此主题组件

:woman_technologist:t2: 概述

此 Discourse 主题组件使论坛管理员能够创建仅对选定群组成员可见的自定义侧边栏菜单。

主要功能:

  • 基于群组的菜单可见性 - 菜单部分仅对授权用户在侧边栏中渲染
  • 基于对象的配置 - 提供易于使用的设置界面以创建菜单
  • 多个部分 - 可为不同群组创建无限数量的菜单部分(在合理范围内)
  • 管理员快速编辑链接 - 菜单标题中的铅笔图标可将管理员直接链接到组件设置

:briefcase: 一些使用场景

  • 仅限员工的资源和快捷链接
  • 分类版主快捷方式
  • 自定义群组门户(项目团队、学习小组、读书俱乐部、VIP 成员)
  • 链接到母公司或合作伙伴网站的资源

:gear: 设置

菜单部分 (menu_sections)

打开对象设置编辑器以配置自定义群组菜单部分。

部分属性

属性 描述
菜单标题 显示为侧边栏部分标题的标题
允许群组 被允许查看此菜单部分的群组(每部分最多 20 个群组)
菜单链接 在此部分中显示的链接集合(每部分最多 20 个链接)

链接属性

属性 描述
图标 FontAwesome 图标名称(例如 circle-infostaruser-group)。可能需要添加到 Admin > 所有站点设置 > svg 图标子集
文本 链接的显示标签
URL 链接目标 - 支持相对路径(/faq/my/preferences)和绝对 URL(https://example.com

:wrench: 安装与配置

  1. 按照 Installing a theme or theme component 安装主题组件。
  2. 进入 对象设置编辑器
  3. 点击 + new_menu_section 按钮以设置第一个自定义菜单部分
  4. 菜单标题 字段中为新菜单输入标题,然后选择您希望拥有访问权限的群组。
  5. 点击 + new_menu_section 添加另一个部分,或保存更改。
管理员配置截图及示例设置

全新安装 - 进入 对象设置编辑器

包含 2 个自定义菜单和 3 个用户的示例场景,其中一人为管理员:

  • @Catra 喜爱猫咪,是 pink 群组的成员,该群组将有权访问 猫菜单 :grinning_cat:
  • @HelloKitty 喜欢狗狗,是 purple 群组的成员,该群组将有权访问 狗菜单 :dog_face:
  • @Lillypurple 群组的成员,因为她养了一只狗,而狗更棒。不过,她也是论坛管理员,管理员将有权访问 猫菜单,因为猫咪需要更多监督 :dog_face: :cat_with_wry_smile:

创建新的自定义菜单 - 在我们的示例中,创建 猫菜单 并添加允许访问的群组 - pinkadmins。然后点击 + menu_link 按钮以设置新菜单的链接。

添加菜单链接 - 1. FontAwesome 图标名称,2. 链接显示文本,3. URL(相对或绝对)。点击 + menu_link 按钮可向此菜单添加另一个链接。

创建另一个名为 狗菜单 的自定义菜单部分,仅授予 purple 群组访问权限并配置链接:

结果侧边栏菜单访问权限截图

用户 @Catra 拥有猫菜单!:grinning_cat:

用户 @HelloKitty 拥有狗菜单!:dog_face:

管理员用户 @Lilly 拥有两个菜单并可编辑它们!:smiling_cat_with_heart_eyes:

配置示例

菜单标题:"猫咪相关"
允许群组:team-cat
链接:
  - 图标:link
    文本:猫咪视频和照片
    URL: /t/cat-videos-and-photos/123
  - 图标:magnifying-glass
    文本:猫咪百科
    URL: https://en.wikipedia.org/wiki/Cat

:light_bulb: 重要说明

管理员访问权限

管理员必须将自己添加到群组 才能查看为这些群组配置的菜单。仅凭管理员身份并不能授予访问所有自定义菜单的权限。这是有意为之!此外,属于菜单允许群组的管理员将在部分标题中看到铅笔图标,点击可链接到组件设置。

群组配置

  • 不支持 everyone 群组 - 请使用原生侧边栏页脚 UI 为所有用户(包括匿名访客)创建全局自定义菜单。
  • 每个菜单部分最多 20 个群组。如果需要更多,请创建具有不同群组分配的重复部分。
  • 属于多个群组的用户将看到他们有权访问的所有菜单部分。

测试与组织

使用测试账户验证不同群组组合的正确访问权限。随着复杂度增加,请跟踪您的菜单配置以避免混淆;对于拥有众多群组的大型论坛,建议使用访问矩阵或类似文档。

安全考虑

此组件仅提供 UI 级别的访问控制。它控制菜单可见性,而非资源访问权限 - 此组件仅控制侧边栏中渲染的内容,而非谁可以访问实际资源。

始终依赖 Discourse 内置的权限系统来保护实际资源:

  • 正确配置分类权限
  • 设置主题可见性限制
  • 使用基于群组的内容访问控制
  • 确保私有资源需要身份验证

管理员最佳实践:
分别配置链接分类的安全权限和群组成员资格 - 例如:指向私有分类的菜单链接必须正确配置该分类的权限。管理员负责确保外部资源链接对选定群组具有适当的授权。


这是与 @Moin 合作的成果 - 她的输入、灵感和反馈至关重要。


查看我的其他 Discourse 内容
13 个赞

我似乎在仓库上遇到了 404 错误。

编辑:现在一切正常!

2 个赞

哈哈,再试一次。忘了把它设为公开了!:laughing:

6 个赞

太棒了!我期待这个功能已经有一段时间了。我已经为自己构建了一个很棒的有用自定义侧边栏菜单集合——用于版主、管理员任务和参考、Discourse 文档、我们经常在论坛中引用的外部内容的链接等等。一个菜单包含用于各种定期会议的链接,它只是使用了 tag 链接,例如 /tag/comm-mgt-monthly,这可以帮助我快速跳转到当前和以前的议程和会议记录。

我曾多次希望有一种方法可以导出我的自定义侧边栏菜单配置,以便团队中的其他人可以导入——这是一个远优于现有配置的方法!

还有图标!太棒了!据我所知,做到这一点的唯一方法是添加自定义 CSS。这个新解决方案很优雅。

而且是可持续的!所有管理员都可以编辑配置文件,因此不再只依赖于我。感谢 @Lilly@Moin

1 个赞

您好 @Lilly@Moin

感谢您构建此组件。

我曾在我的自托管站点上使用 https://meta.discourse.org/t/group-sidebar-menu-sections-deprecated/273505,在我的最新更新中,我收到警告,提示旧的主题组件已被弃用,应安装此组件。

我已经安装了该组件并创建了我的自定义群组菜单,但我就是看不到如何移动群组菜单。(我肯定忽略了显而易见的东西。:see_no_evil_monkey:)在您的截图中,您的 Cat MenuDog Menu 出现在侧边栏导航中 Topics 部分的上方,但我的自定义群组菜单出现在我的侧边栏导航的最底部。我该如何将其移到 Topics 上方?

1 个赞

这并不明显。Lilly 使用 Discourse Sidebar Menu Reordercat-menu 放在了顶部。

3 个赞

非常感谢!配置起来非常简单。

3 个赞