Collapsible grouped navigation menu for the SilverStripe CMS sidebar.
Groups related admin sections under labelled, collapsible parent items with icons. When the sidebar is collapsed to icon-only mode, groups are shown as individual icon rows with their children visible on hover.
- SilverStripe Admin ^3.0
- PHP ^8.1
composer require otago/silverstripe-grouped-cmsThe extension registers itself automatically. Define groups in your project's YAML config:
SilverStripe\Admin\LeftAndMain:
menu_groups:
Content:
icon_class: font-icon-menu-pages
items:
- SilverStripe-CMS-Controllers-CMSMain
- SilverStripe-AssetAdmin-Controller-AssetAdmin
Settings:
icon_class: font-icon-cog
items:
- SilverStripe-Admin-SecurityAdmin
- SilverStripe-SiteConfig-SiteConfigLeftAndMain
- SilverStripe-Reports-ReportAdminAdmin class names use hyphens as namespace separators, e.g. App\Admins\NewsAdmin → App-Admins-NewsAdmin.
Items not listed in any group appear as flat (ungrouped) entries in the menu.
SilverStripe\Admin\LeftAndMain:
# Sort children alphabetically instead of by declaration order
menu_groups_alphabetical_sorting: falseAdd an optional priority key to a group to control its position relative to ungrouped items:
menu_groups:
Content:
icon_class: font-icon-menu-pages
priority: 10
items:
- SilverStripe-CMS-Controllers-CMSMainGroupedCMSMenuextendsLeftAndMainand addsGroupedMainMenu()/BrandedMainMenu()methods- The template
LeftAndMain_MenuList.sscalls$BrandedMainMenuinstead of$MainMenu - Items in multi-item groups render as collapsible parent rows with a child list
- Single-item groups (or ungrouped items) render as normal flat rows
- The JS (
cms-menu.js) keeps the open/active state in sync across PJAX navigations