# Group Sidebar Menus

**URL:** https://meta.discourse.org/t/group-sidebar-menus/394653
**Category:** Theme component
**Tags:** sidebar
**Created:** [January 29, 2026, 1:40pm UTC](https://meta.discourse.org/t/group-sidebar-menus/394653 "2026-01-29T13:40:01Z")
**Posts on this page:** 10
**Page:** 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: [January 29, 2026, 1:40pm UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/1 "2026-01-29T13:40:01Z")

</div>

| | | |
| --- | --- | --- |
| ℹ | **Summary** | Create custom sidebar menus for selected groups |
| 🛠 | **Repository** | [https://github.com/Lillinator/group-sidebar-menus](https://github.com/Lillinator/group-sidebar-menus) |
| ❓ | **Install Guide** | [How to install a theme or theme component](https://meta.discourse.org/t/how-do-i-install-a-theme-or-theme-component/63682) |

Install this theme component

## 👩🏻‍💻 Overview

This Discourse theme component gives forum administrators the ability to create custom sidebar menus that are only accessible to members of selected groups.

**Key Features:**

- Group-based menu visibility - Menu sections are only rendered in sidebar for authorized users
- Object-based configuration - Easy-to-use settings UI for creating menus
- Multiple sections - Create unlimited menu sections for different groups (within reason)
- Admin quick-edit link - Pencil icon in menu headers links admins directly to component settings

* * *

## 💼 Some Use Cases

- Staff-only resources and quick links
- Category moderator shortcuts
- Custom group portals (project teams, study groups, book clubs, VIP members)
- Links to parent or partner website resources

* * *

## ⚙ Settings

### Menu Sections (`menu_sections`)

Opens the object settings editor to configure custom group menu sections.

#### Section Properties

| Property | Description |
| --- | --- |
| **Menu title** | Title displayed as the sidebar section header |
| **Allowed groups** | Groups permitted to view this menu section (max: 20 groups per section) |
| **Menu links** | Collection of links to display in this section (max: 20 links per section) |

#### Link Properties

| Property | Description |
| --- | --- |
| **Icon** | FontAwesome icon name (e.g., `circle-info`, `star`, `user-group`). May need to be added to `Admin > All site settings > svg icon subset` |
| **Text** | Display label for the link |
| **URL** | Link destination - supports both relative paths (`/faq`, `/my/preferences`) and absolute URLs (`https://example.com`) |

## 🔧 Installation and Configuration

1. Install the theme component as per [Installing a theme or theme component](https://meta.discourse.org/t/how-do-i-install-a-theme-or-theme-component/63682).
2. Go to the `Objects setting editor`
3. Click the `+ new_menu_section` button to set up the first custom menu section
4. Give the new menu a title in the `Menu title` field, and then select the groups you want to have access to it.
5. Click the `+ new_menu_section` to add another section, or Save changes.

> **Admin configuration screenshots with example set up**
>
> Fresh install - go to `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)
> 
> > #### Example scenario with 2 custom menus and 3 users, one who is an admin:
> > 
> > - `@Catra` loves cats and is a member of `pink` group, which will have access to the `Cat Menu` 😺
> > - `@HelloKitty` likes dogs and is a member of `purple` group, which will have access to the `Dog Menu` 🐶
> > - `@Lilly` is a member of `purple` because she owns a dog and dogs are better. However, she is also a forum admin, and admins will have access to the `Cat Menu` because cats need more supervision 🐶 😼
> 
> Create a new custom menu - for our example, create `Cat menu` and add the groups allowed to have access to it - `pink` and `admins`. Then click the `+ menu_link` button to set up the links for the new menu.
> 
> ![Screenshot 2026-07-17 at 8.23.58 PM](https://global.discourse-cdn.com/meta/original/4X/1/0/8/1088897005c89d5c8815fe58c0cefb01cce2fd34.webp)
> 
> Add some menu links - 1. Fontawesome icon name, 2. text to display for the link, and 3. the URL, relative or absolute. Click the `+ menu_link` button to add another link to this menu.
> 
> ![Screenshot 2026-07-17 at 8.22.32 PM](https://global.discourse-cdn.com/meta/original/4X/5/c/6/5c691d54d82415f985dc483578e007999488f085.webp)
> 
> Create another custom menu section called `Dog menu`, give only group `purple` access and configure the links:
> 
> ![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)

> **Screenshots of resulting sidebar menu access**
>
> User `@Catra` has the Cat menu! 😺
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/7/0/1/701756a910e0a55c77b7b45dbc41ac2687d69179.jpeg)
> 
> User `@HelloKitty` has the Dog menu! 🐶
> 
> ![image](https://global.discourse-cdn.com/meta/original/4X/c/6/f/c6f98ba655ddf05dbc8443b1456c7551884a7276.jpeg)
> 
> Admin user `@Lilly` has both menus and can edit them! 😻
> 
> ![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)

### Configuration Example

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

```

* * *

## 💡 Important Notes

### Admin Access

**Admins must add themselves to groups** to see menus configured for those groups. Admin status alone does not grant access to all custom menus. This is intentional! Also, admins who belong to a menu’s allowed groups will see a pencil icon in the section header that links to component settings.

### Group Configuration

- **The `everyone` group is not supported** - Use the native sidebar footer UI to create global custom menus for all users, including anonymous visitors.
- Maximum of 20 groups per menu section. If you need more, create duplicate sections with different group assignments.
- Users in multiple groups will see all menu sections they have access to.

### Testing & Organization

Use test accounts to verify correct access for different group combinations. Keep track of your menu configurations to avoid confusion as complexity grows; an access matrix or similar documentation is recommended for larger forums with many groups.

### Security Considerations

This component provides UI-level access control only. It controls menu visibility, not resource access - this component only controls what is rendered in the sidebar, not who can access the actual resources.

Always rely on Discourse’s built-in permission system to secure actual resources:

- Configure category permissions properly
- Set topic visibility restrictions
- Use group-based access controls for content
- Ensure private resources require authentication

**Administrators best practice:**  
Configure linked category security permissions and group membership separately - for example: a menu link to a private category must have that category’s permissions properly configured. Administrators are responsible for ensuring links to outside resources are appropriately authorized for selected groups.

* * *

This was a collaborative project with @Moin - her input, inspiration and feedback were invaluable.

* * *
 **[Check out my other Discourse stuff](https://meta.discourse.org/filter?q=category%3Acustomization%20created-by%3ALilly%20order%3Acreated)**

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [January 29, 2026, 1:50pm UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/2 "2026-01-29T13:50:00Z")

</div>

I seem to be getting a 404 on the repo.

EDIT: All good now!

---

<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: [January 29, 2026, 1:50pm UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/3 "2026-01-29T13:50:41Z")

</div>

haha try again. forgot to make it public! 😆

---

<div class="post-metadata">

### Author: ![NiceOldGuy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/niceoldguy/32/326207_2.png) [@NiceOldGuy](https://meta.discourse.org/u/NiceOldGuy)
#### Post date: [January 31, 2026, 10:06pm UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/4 "2026-01-31T22:06:52Z")

</div>

Fabulous! I’ve been wanting this for some time. I’ve built a nice collection of useful custom sidebar menus for myself–links for moderation, for admins tasks & reference, for Discourse documentation, for external content we frequently reference in the forum, etc. One menu has links for the various periodic meetings that simply uses the `tag` link, e.g. `/tag/comm-mgt-monthly` that helps me jump to current and previous agendas and minutes quickly.

I’ve many times wished for a way to export my custom sidebar menu configs so others on my team could import–this is a far superior configuration!

And icons! Yay! AFAIK the only way to do this [was to add custom CSS](https://meta.discourse.org/t/emojis-in-custom-section/378390/2). This new solution is elegant.

And sustainable! All admins will be able to edit the configuration files, so not reliant on me only. Thanks @Lilly and @Moin!

---

<div class="post-metadata">

### Author: ![southpaw](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/southpaw/32/79352_2.png) [@southpaw](https://meta.discourse.org/u/southpaw)
#### Post date: [February 10, 2026, 7:11am UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/5 "2026-02-10T07:11:46Z")

</div>

Hi @Lilly and @Moin,

Thank you for building this component.

I was using [Group sidebar menu sections - deprecated](https://meta.discourse.org/t/group-sidebar-menu-sections-deprecated/273505) on my self-hosted site and on my latest update was warned that the older theme component had been deprecated and to install this one, instead.

I’ve installed the component and created my custom group menu, but am just not seeing how to move the group menu. (I must be looking right past something obvious. 🙈) In your screenshots, your **Cat Menu** and **Dog Menu** are on the sidebar navigation above the **Topics** section, but my custom group menu is appearing at the very bottom of my sidebar navigation. How do I move it up above **Topics**?

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [February 10, 2026, 8:41am UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/6 "2026-02-10T08:41:05Z")

</div>

It’s not obvious. Lilly used [Discourse Sidebar Menu Reorder](https://meta.discourse.org/t/discourse-sidebar-menu-reorder/394049) to put `cat-menu` at the top

---

<div class="post-metadata">

### Author: ![southpaw](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/southpaw/32/79352_2.png) [@southpaw](https://meta.discourse.org/u/southpaw)
#### Post date: [February 10, 2026, 8:54am UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/7 "2026-02-10T08:54:54Z")

</div>

Thank you so much! That was very easy to configure.

---

<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: [July 18, 2026, 3:38am UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/8 "2026-07-18T03:38:30Z")

</div>

please update this component if you are using it - there has been some refactoring based on the core changes here: [Granular group-based permissions for anonymous and logged in users](https://meta.discourse.org/t/granular-group-based-permissions-for-anonymous-and-logged-in-users/402273)

---

<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: [August 30, 2026, 3:05am UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/9 "2026-08-30T03:05:02Z")

</div>

this component has been updated to use the new icon object type setting so please update it once you have updated to the most recent Discourse version. it will migrate seamlessly so you shouldn’t have to change anything (as long as your Discourse is up to date).

> <https://github.com/discourse/discourse/pull/42632>
>
> Follow-up to #42626.
> 
> Previously, the \`icon\` setting type was only available a…s a top-level site/theme setting type — properties inside an \`objects\` setting schema could not use it, and icon names stored in objects values were never added to the SVG sprite sheet.
> 
> This change allows \`objects\` type site and theme settings to declare schema properties with \`type: icon\`, rendering the icon grid picker in the schema editor and automatically including the selected icons (nested \`objects\` included) in the sprite sheet.
> 
> Note one adjacent change: sprite cache invalidation in \`014-track-setting-changes.rb\` was gated on the setting \*name\* containing \`\_icon\`, so changing an \`icon\` or \`objects\` typed site setting left a stale sprite. It now also expires for those types, which fixes that latent gap for top-level \`icon\` site settings from 802fa4c3562 as well.
> 
> Example:
> \`\`\`yaml
> Example:
> type: objects
> default: ""
> schema:
> name: link
> identifier: title
> properties:
> title:
> type: string
> required: true
> icon:
> type: icon
> \`\`\`\`

---

<div class="post-metadata">

### Author: ![jenmck](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jenmck/32/332487_2.png) [@jenmck](https://meta.discourse.org/u/jenmck)
#### Post date: [September 8, 2026, 6:16am UTC](https://meta.discourse.org/t/group-sidebar-menus/394653/10 "2026-09-08T06:16:45Z")

</div>

Just tested this component on my dev instance and it works great!

One little QoL thing that’d be extremely handy for my use case:

We have groups based on our organization’s chapters. It would be super great if I could create one “my chapter” menu with links to each chapter’s category and add links for each chapter - but have individual links not appear for users who aren’t in a group with access to the category. Currently I’m making a separate menu for each chapter, restricting visibility to only members of that chapter’s group.

Thank you for making this!
