You are viewing beta documentation for Navigation 4.x.
Migrations

Migrating from Olivemenus

If your Craft site runs Olivemenus (opens new window) (olivestudio/craft-olivemenus), Navigation can copy menus and node structure without modifying Olivemenus data.

Prerequisites

  1. Install both Olivemenus and Navigation on the same Craft site.
  2. Back up your database and project config.
  3. Run the migration on staging first.

Control panel

  1. Go to Navigation → Settings.
  2. Under Migrations, choose Olivemenus.
  3. Select the menus to migrate (or choose All).
  4. Optionally enable Skip existing handles if you do not want to overwrite menus that already exist in Navigation.
  5. Click Migrate Menus and review the per-menu output log. Click Done when finished.

Console

# All Olivemenus menus
php craft navigation/migrate/olivemenus

# Specific handle(s)
php craft navigation/migrate/olivemenus --handle=mainMenu,footerMenu

# Skip menus whose handles already exist in Navigation
php craft navigation/migrate/olivemenus --skip-existing

What is migrated

OlivemenusNavigation
Menus and handlesMenu name, handle, site settings
Entry-linked itemsEntry node type
Custom URL itemsCustom node type
Nested structureParent/child tree preserved
CSS classes, new windowclasses, newWindow, customAttributes
Custom attributes JSONParsed into customAttributes

If an entry-backed item no longer has a resolvable linked element, it is converted to a Custom URL node and a warning is logged.

Manual follow-up

Olivemenus featureNotes
class_parentNot migrated — rebuild with node classes or custom fields
Single-site menusOlivemenus site binding is mapped to the menu's configured site
Template outputReplace Olivemenus Twig helpers with Navigation render() or custom templates

Handle collisions

When a Navigation menu with the same handle already exists, the migrator creates a new menu with a numeric suffix (for example mainMenu1).