# Discourse 群组侧边栏菜单

**URL:** https://meta.discourse.org/t/group-sidebar-menus/394653
**Category:** Theme component
**Tags:** sidebar
**Created:** [2026年一月29日 13:40 UTC](https://meta.discourse.org/t/group-sidebar-menus/394653 "2026-01-29T13:40:01Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [2026年一月29日 13:40 UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/1 "2026-01-29T13:40:01Z")

</div>

| | | |
| --- | --- | --- |
| ℹ | **摘要** | 为选定群组创建自定义侧边栏菜单 |
| 👓 | **预览** | 加入此 [主题创作者群组](https://discourse.theme-creator.io/g/joinable_group?preview_theme_id=10390)，然后 [在此预览](https://discourse.theme-creator.io/theme/Lilly/discourse-group-sidebar-menus) |
| 🛠 | **代码库** | [https://github.com/Lillinator/discourse-group-sidebar-menus](https://github.com/Lillinator/discourse-group-sidebar-menus) |
| ❓ | **安装指南** | [如何安装主题或主题组件](https://meta.discourse.org/t/how-do-i-install-a-theme-or-theme-component/63682) |

安装此主题组件

## 👩🏻‍💻 概述

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

**主要功能：**

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

* * *

## 💼 一些用例

- 仅限员工的资源和快速链接
- 类别版主快捷方式
- 自定义群组门户（项目团队、学习小组、读书俱乐部、VIP 会员）
- 链接到父网站或合作伙伴网站的资源

* * *

## ⚙ 设置

### 菜单部分 (`menu_sections`)

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

#### 部分属性

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

#### 链接属性

| 属性 | 描述 |
| --- | --- |
| **图标** | FontAwesome 图标名称（例如 `circle-info`、`star`、`user-group`）。可能需要添加到 `Admin > All site settings > svg icon subset` |
| **文本** | 链接的显示标签 |
| **URL** | 链接目标 - 支持相对路径（`/faq`、`/my/preferences`）和绝对 URL（`https://example.com`） |

## 🔧 安装和配置

1. 按照 [Installing a theme or theme component](https://meta.discourse.org/t/how-do-i-install-a-theme-or-theme-component/63682) 安装主题组件。
2. 进入 `Objects setting editor`（对象设置编辑器）
3. 点击 `+ new_menu_section` 按钮以设置第一个自定义菜单部分
4. 在 `Menu title`（菜单标题）字段中为新菜单指定标题，然后选择要授予访问权限的群组。
5. 点击 `+ new_menu_section` 添加另一个部分，或保存更改。

> **管理员配置截图与示例设置**
>
> 全新安装 - 进入 `Objects setting editor`（对象设置编辑器）。
> 
> ![Screenshot 2026-07-17 at 8.19.35 PM](https://global.discourse-cdn.com/meta/original/4X/0/6/4/06469c3ec90fa1dd1de690f92fa3eacd44d992c0.webp)
> 
> > #### 包含 2 个自定义菜单和 3 个用户（其中一个是管理员）的示例场景：
> > 
> > - `@Catra` 喜欢猫，是 `pink`（粉色）群组的成员，该群组将有权访问 `Cat Menu`（猫菜单） 😺
> > - `@HelloKitty` 喜欢狗，是 `purple`（紫色）群组的成员，该群组将有权访问 `Dog Menu`（狗菜单） 🐶
> > - `@Lilly` 是 `purple`（紫色）群组的成员，因为她养了一只狗，而且狗更好。不过，她也是论坛管理员，管理员将有权访问 `Cat Menu`（猫菜单），因为猫需要更多的监管 🐶 😼
> 
> 创建一个新的自定义菜单 - 在我们的示例中，创建 `Cat menu`（猫菜单）并添加允许访问它的群组 - `pink`（粉色）和 `admins`（管理员）。然后点击 `+ menu_link` 按钮以设置新菜单的链接。
> 
> ![Screenshot 2026-07-17 at 8.23.58 PM](https://global.discourse-cdn.com/meta/original/4X/1/0/8/1088897005c89d5c8815fe58c0cefb01cce2fd34.webp)
> 
> 添加一些菜单链接 - 1. Fontawesome 图标名称，2. 链接的显示文本，3. URL，相对或绝对。点击 `+ menu_link` 按钮为此菜单添加另一个链接。
> 
> ![Screenshot 2026-07-17 at 8.22.32 PM](https://global.discourse-cdn.com/meta/original/4X/5/c/6/5c691d54d82415f985dc483578e007999488f085.webp)
> 
> 创建另一个名为 `Dog menu`（狗菜单）的自定义菜单部分，仅授予 `purple`（紫色）群组访问权限并配置链接：
> 
> ![Screenshot 2026-07-17 at 8.24.07 PM](https://global.discourse-cdn.com/meta/original/4X/f/2/b/f2b74c6e949fb84e29c1ba1c589267ac16fc2272.webp)
> 
> ![Screenshot 2026-07-17 at 8.22.55 PM](https://global.discourse-cdn.com/meta/original/4X/d/1/4/d14a733b3d2ebb18eeb53b6629ffb540f6a52358.webp)

> **结果侧边栏菜单访问的截图**
>
> 用户 `@Catra` 拥有猫菜单！ 😺
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/7/0/1/701756a910e0a55c77b7b45dbc41ac2687d69179.jpeg)
> 
> 用户 `@HelloKitty` 拥有狗菜单！ 🐶
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/c/6/f/c6f98ba655ddf05dbc8443b1456c7551884a7276.jpeg)
> 
> 管理员用户 `@Lilly` 拥有两个菜单并且可以编辑它们！ 😻
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/b/8/a/b8a80d5029311dafc381ad5720b370c9e09dcfc6.jpeg)
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/1/3/0/130bbbe8ef53d37fe0fefb6799cec0bc17d4c80a.jpeg)

### 配置示例

```yaml
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

```

* * *

## 💡 重要说明

### 管理员访问权限

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

### 群组配置

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

### 测试与组织

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

### 安全注意事项

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

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

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

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

* * *

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

* * *
 **[查看我的其他 Discourse 作品](https://meta.discourse.org/filter?q=category%3Acustomization%20created-by%3ALilly%20order%3Acreated)**

---

_[View the full topic](https://meta.discourse.org/t/group-sidebar-menus/394653)._
