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:

  1. In the Joomla back end, open System, then under Manage choose Administrator Modules.
  2. Open the Administrator Menu module.
  3. Set Menu to Show to Use a Preset.
  4. In Choose Preset, pick the preset you want.
  5. 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.