Copy navigation menus between journals in a multi-journal Open Journal Systems (OJS) installation. Replicate complete menu structures — including items, hierarchy, assignments, and locale settings — from one journal to another with a single click.
- Full Menu Replication — Copies menus, menu items, parent-child hierarchy, display order, and all locale-specific settings (title, content, remote URL) across journals.
- Built-in Type Support — Handles all OJS built-in menu item types (About, Contact, Editorial Team, Submissions, Archives, Privacy, etc.) alongside custom items.
- Multi-locale Aware — Preserves translations in all configured languages (e.g., English, Turkish, French) during synchronization.
- Preview Before Sync — Inspect the source journal's full menu structure with hierarchical preview before making any changes.
- Copy Mode Selection — Choose between copying only active (assigned) menu items or all items including unassigned ones.
- Clear & Replace — Option to clear all existing menus in the target journal before synchronization, or selectively replace menus by area.
- Site Admin Restricted — Only site administrators can access synchronization features, preventing unauthorized cross-journal data access.
- OJS 3.3.x
- PHP 7.3 or higher
- Site administrator access
-
Download or clone this repository into your OJS plugins directory:
plugins/generic/navMenuSync/ -
Navigate to Settings > Website > Plugins > Generic Plugins in any journal.
-
Enable Navigation Menu Synchronizer.
- Go to the target journal (the journal you want to copy menus into).
- Navigate to Settings > Website > Plugins > Generic Plugins.
- Find Navigation Menu Synchronizer and click Synchronize Menus.
- Select the source journal from the dropdown.
- Choose your options:
- Clear existing menus — removes all current menus in the target journal before copying.
- Copy mode — select whether to copy only active menu items or include unassigned items.
- Click Preview Source Menus to review the menu structure.
- Click Synchronize to perform the copy.
- Refresh the page or go to Settings > Website > Navigation to verify.
The plugin copies data across five OJS navigation menu tables:
| Source Table | What's Copied |
|---|---|
navigation_menus |
Menu containers with title and area |
navigation_menu_items |
Individual menu items with type and path |
navigation_menu_item_settings |
Locale data: title, content, remoteUrl, titleLocaleKey |
navigation_menu_item_assignments |
Item-to-menu assignments with parent-child hierarchy |
Parent-child relationships are resolved correctly regardless of whether the source database stores assignment IDs or item IDs as parent references — a known inconsistency in OJS data.
The plugin includes translations for:
- English (
en_US) - Turkish (
tr_TR)
Additional translations can be added by creating a new locale directory under locale/.
This plugin is licensed under the GNU General Public License v3.0. See LICENSE for details.
Developed by OJS Services.
