Menu Autopilot
Menu Autopilot automates Drupal navigation by allowing you to curate top-level menu items while its children automatically populate from published content. This means new content automatically appears in the correct menu, and unpublished content is removed, reducing manual editing. It works with traditional Drupal themes or headless setups, ensuring menu links are always in sync with your content.
Menu Autopilot turns Drupal navigation into an automatic, content-driven system. Curate your top-level menu the way you always have, then let each item's children build and maintain themselves from your published content. Publish a new product, article, or landing page and it appears in the right menu automatically; unpublish it and it disappears. No more hand-editing menus to mirror your content.
It is to navigation what Pathauto is to URL aliases: the automatic, config-driven default.
The problem
Drupal's menus are hand-curated. On content-heavy or decoupled sites, editors spend real time redoing navigation to match content, and in a headless build a hand-placed link is easy to point at the wrong URL. Existing taxonomy-menu modules generate menu items from terms; none generate items from content nodes under a curated parent with clean, headless-ready URLs. Menu Autopilot fills that gap.
What it does
- Hybrid menus. You curate the top level; each item can auto-populate its children from published content.
- You choose the source, per item: a taxonomy term, a content type, or a hand-picked ordered list of nodes.
- Editor-controlled order and labels. Choose A→Z, date, or Keep current order so you can drag children on the menu overview. New matches append at the end. Child menu label is a token pattern (for example
[node:title] [node:field_subtitle]) so nav can include a subtitle without changing the page title. - Existing children stay under your control. When you enable Menu Autopilot on a parent that already has links, you pick what happens: reuse matching links (and optionally drop extras), add only the missing ones, or replace every child. An optional checkbox moves matching unmanaged links from elsewhere in the same menu. Matching uses node URIs and path aliases, so an existing
/platforms/helioslink is not treated as a new destination. - Always in sync. Children are created, updated, reordered, reparented, and removed automatically as content is published, unpublished, retyped, or deleted.
- Headless-clean URLs. Generated links use canonical entity references, so they resolve to your real path alias, never
/node/123or an editorial route. - Multilingual. Synced links are translatable and language-aware.
- Accessible by design, built to power a fully keyboard-navigable, WCAG 2.1 AA menu.
Decoupled or traditional
Menu Autopilot produces ordinary menu links, so the composed tree is exposed by any consumer, whether GraphQL (GraphQL Compose), JSON:API, or a classic Drupal theme, with no extra work, and it fans cache-tag revalidation to your decoupled front end. There is nothing to teach your API layer.
Quick start
- Install and enable the module:
composer require 'drupal/menu_autopilot:^1.2' - Edit a top-level menu link and open the Menu Autopilot: children of … section. Choose a source. If that parent already has children, pick how to treat them; the form explains each option as you select it. Set Sort children by to Keep current order if you want to drag the children yourself.
- Publish content and it appears under that item. Run
drush menu-autopilot:rebuildto reconcile at any time.
Requires Drupal 10.6+ or 11.3+. Maintained by Jeremy Michael Cerda and Wilkes & Liberty, LLC.