The back-end sidebar is a module, not hard-coded core — so you can reshape it with an upgrade-safe XML preset. Here is how Joomla menu presets work, and how Solidshop uses one.
As a Joomla site grows, the administrator menu fills up. Add a few components — a shop, a forms tool, a directory — and the tidy default sidebar turns into a long flat list you have to scan every time. The good news: that menu is rendered by a module, and Joomla has a built-in, upgrade-safe way to reshape it called an administrator menu preset.
This is the first in a series where we dig into the Joomla features we lean on every day. No core hacks, no third-party builders — just the platform doing what it already does well.
What is an administrator menu preset?
The menu you see down the side of the Joomla back end is drawn by the
Administrator Menu module (mod_menu).
Because it is a module and not compiled into core, its contents are
data — and a preset is simply an XML file that declares
the whole menu tree: group headings, links into components, separators,
and external URLs. Point the module at a preset and it renders that
structure.
The key advantage over hand-building a menu in Menus › Manage is that a preset ships inside an extension or template. It is version-controlled, it survives Joomla updates because it never touches a core file, and it can be switched on or off per site in seconds.
Where Joomla looks for presets
Joomla discovers presets automatically from two locations, so you rarely register anything by hand:
-
Every enabled administrator component’s
administrator/components/<com>/presets/*.xml -
The active administrator template’s
templates/<template>/html/com_menus/presets/
The file name — minus the .xml — becomes the
preset’s identifier. So a file at
presets/solidshop.xml registers a preset named
solidshop that immediately shows up in the module’s
preset dropdown.
Anatomy of a preset file
A preset is a <menu> document in the
urn:joomla.org namespace, validated against
menu.xsd. Inside it, <menuitem>
elements nest to build the tree. Each item declares a
type:
| Type | What it does |
|---|---|
component |
A link into a component view. Carries element
(e.g. com_solidshop) and a link; an
optional quicktask adds a “+”
quick-create button beside it.
|
heading |
A non-clickable group label. Nest items inside it — this
is what produces the grouped look. Takes an icon
and class.
|
url |
An arbitrary link — docs, a dashboard, an external tool. |
separator |
A visual divider or sub-label between items. |
container |
Pulls in a dynamic set, such as every installed component. |
A single heading with two grouped links looks like this:
<menuitem
title="COM_SOLIDSHOP_MENU_GROUP_CATALOG"
type="heading"
class="class:fa fa-tag"
>
<menuitem
title="COM_SOLIDSHOP_MENU_PRODUCTS"
type="component"
element="com_solidshop"
link="index.php?option=com_solidshop&view=products"
quicktask="index.php?option=com_solidshop&task=product.add"
quicktask-permission="core.create"
/>
<menuitem
title="COM_SOLIDSHOP_MENU_BRANDS"
type="component"
element="com_solidshop"
link="index.php?option=com_solidshop&view=brands"
/>
</menuitem>
Titles are language keys, so a preset stays translatable, and
quicktask-permission means the quick-add button only
appears for users who hold that ACL action. The whole menu is just
nested declarations like these.
How to switch a preset on
Presets are opt-in — installing an extension that ships one does not change your menu until you select it:
- In the Joomla back end, open System, then under Manage choose Administrator Modules.
- Open the Administrator Menu module.
- Set Menu to Show to Use a Preset.
- In Choose Preset, pick the preset you want.
- Save. The new sidebar renders immediately.
It is fully reversible — switch the field back to the default menu and you are exactly where you started. Because the setting lives on the module, you can even clone the Administrator Menu module to give different back-end templates their own tailored navigation.
A worked example: Solidshop’s grouped store menu
A real store has a lot of back-end screens — products, orders, customers, discounts, invoices, statuses, taxes, currencies, countries. Out of the box, Solidshop lists them under Components › Solidshop as one flat column, which is fine for a small catalogue but tiring at scale.
New in Solidshop Core 1.0.4, the component ships an
opt-in preset (presets/solidshop.xml) that reorganises
every view into seven labelled groups — Catalog,
Sales, Customers,
Marketing, Configuration,
Localization, and System —
with a Dashboard pinned at the top and quick-create buttons on the
busiest lists (Products, Orders, Discounts). It is exactly the
technique above, shipped in a component’s presets/
folder; nothing bespoke.
True to the rule, it does not auto-activate. Install or update
Solidshop and your menu is untouched until you pick the
solidshop preset in the Administrator Menu module. You
can read about it alongside the rest of the release in the
Solidshop Core 1.0.4 notes.
Why it is worth doing
Menu presets are one of those quietly excellent Joomla features: upgrade-safe, reversible, version-controllable, and a genuine quality-of-life win once a site runs more than a couple of heavy components. If you build extensions, shipping a preset is a small file that makes your component feel at home in the back end. If you run a site, switching one on takes under a minute.
Worth noting for anyone arriving from WordPress: there is no native equivalent. The WordPress admin menu is rebuilt in code on every request, capped at two levels, and reordering it means custom hooks or a third-party plugin — whereas a Joomla preset is a declarative file you switch on and off in seconds. It is a tidy illustration of Joomla’s “data and declarative config” approach next to WordPress’s “code and hooks” one.
We will keep writing up the Joomla features we rely on. If there is one you would like us to cover, let us know.