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 > All site settings > svg icon subset
文本 链接的显示标签
URL 链接目标 - 支持相对路径(/faq/my/preferences)和绝对 URL(https://example.com

:wrench: 安装和配置

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

全新安装 - 进入 Objects setting editor(对象设置编辑器)。

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

  • @Catra 喜欢猫,是 pink(粉色)群组的成员,该群组将有权访问 Cat Menu(猫菜单) :grinning_cat:
  • @HelloKitty 喜欢狗,是 purple(紫色)群组的成员,该群组将有权访问 Dog Menu(狗菜单) :dog_face:
  • @Lillypurple(紫色)群组的成员,因为她养了一只狗,而且狗更好。不过,她也是论坛管理员,管理员将有权访问 Cat Menu(猫菜单),因为猫需要更多的监管 :dog_face: :cat_with_wry_smile:

创建一个新的自定义菜单 - 在我们的示例中,创建 Cat menu(猫菜单)并添加允许访问它的群组 - pink(粉色)和 admins(管理员)。然后点击 + menu_link 按钮以设置新菜单的链接。

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

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

结果侧边栏菜单访问的截图

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

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

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

配置示例

Menu Title: "Cat Stuff"
Allowed Groups: team-cat
Links:
  - Icon: link
    Text: Cat videos & photos
    URL: /t/cat-videos-and-photos/123
  - Icon: magnifying-glass
    Text: Cat wiki
    URL: https://en.wikipedia.org/wiki/Cat

:light_bulb: 重要说明

管理员访问权限

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

群组配置

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

测试与组织

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

安全注意事项

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

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

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

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


这是一个与 @Moin 的合作项目 - 她的投入、灵感和反馈 invaluable(无价之宝)。


查看我的其他 Discourse 作品
14 个赞

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

编辑:现在一切正常!

2 个赞

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

6 个赞

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

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

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

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

2 个赞

您好 @Lilly@Moin

感谢您构建此组件。

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

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

3 个赞

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

4 个赞

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

4 个赞

如果您正在使用此组件,请进行更新——这里的核心更改已经进行了一些重构:Granular group-based permissions for anonymous and logged in users

1 个赞