Discourse 群组侧边栏菜单

:information_source: 摘要 为选定组创建自定义侧边栏菜单
:eyeglasses: 预览 加入此 主题创建者组 然后 在此处预览
:hammer_and_wrench: 仓库 \u003chttps://github.com/Lillinator/discourse-group-sidebar-menus\u003e
:question: 安装指南 如何安装主题或主题组件
:open_book: 首次使用 Discourse 主题? Discourse 主题使用入门指南

安装此主题组件

:woman_technologist:t2: 概述

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

主要特点:

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

:briefcase: 一些使用场景

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

:gear: 设置

菜单部分 (menu_sections)

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

部分属性

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

链接属性

属性 描述
图标 FontAwesome 图标名称(例如 circle-infostaruser-group)。可能需要添加到 管理 > 所有站点设置 > 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 组的成员,该组将可以访问 Cat Menu :grinning_cat:
  • @HelloKitty 喜欢狗,并且是 purple 组的成员,该组将可以访问 Dog Menu :dog_face:
  • @Lillypurple 组的成员,因为她养了一条狗,而且狗更好。然而,她也是论坛管理员,管理员将可以访问 Cat Menu,因为猫需要更多的监督 :dog_face: :cat_with_wry_smile:

创建一个新的自定义菜单 - 对于我们的示例,创建 Cat menu 并添加允许访问它的组 - pinkadmins。然后单击 + menu_link 按钮来设置新菜单的链接。

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

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

生成的侧边栏菜单访问权限的屏幕截图

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

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

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

配置示例

菜单标题: "员工资源"
允许的组: staff
链接:
  - 图标: wrench
    文本: 版主指南
    URL: /t/moderation-guide/123
  - 图标: chart-line
    文本: 分析仪表板
    URL: /admin/dashboard

:light_bulb: 重要注意事项

管理员访问权限

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

组配置

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

测试和组织

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

安全注意事项

此组件仅提供 UI 级别的访问控制。它控制菜单的可见性,而不是资源的访问权限。

:white_check_mark: 干净、有组织的导航体验
:white_check_mark: 减少未经授权用户的 UI 混乱
:white_check_mark: 专业的分组门户

这不是安全功能。它不会阻止访问链接源 - 此组件仅控制侧边栏中渲染的内容,而不控制谁可以访问实际资源。

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

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

管理员最佳实践:
单独配置链接类别的安全权限和组成员身份 - 例如:指向私有类别的菜单链接必须正确配置该类别的权限。管理员有责任确保链接到外部资源的授权方式适合所选组。


这是与 @Moin 的合作项目 - 她的输入、灵感和反馈非常有价值。

9 个赞

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

编辑:现在一切正常!

2 个赞

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

6 个赞

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

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

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

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

1 个赞