Joomla Menus & Modules — Navigation & Layout Positions Guide
Unlike WordPress where menus are optional decorations, Joomla menus are the primary navigation system. Every page on a Joomla site must be associated with a menu item — if a page isn’t linked to a menu, visitors can’t reach it through normal navigation. Modules are the content boxes that fill the regions around your main content (sidebar, footer, banner).
What You’ll Learn
- How Joomla’s menu system differs from WordPress and Drupal
- Creating menus, menu items, and submenus with dropdowns
- Understanding module positions and how templates define them
- Placing and configuring modules (breadcrumbs, search, latest articles)
- Controlling module visibility by menu assignment
Why Menus Are the Foundation
Think of Joomla’s menu system as a directory of rooms in a building. Every room (page) needs an entry in the directory (menu item). Without the entry, visitors can’t find the room. This is fundamentally different from WordPress, where pages exist independently of navigation.
Module positions are the light fixtures and shelves in each room — they’re built into the walls (template) and you fill them with content (modules). DodaTech’s own site uses this same architecture to place tutorials, search bars, and navigation consistently across pages.
flowchart LR
A["Joomla Content Management"] --> B["Menus & Modules<br/><strong>You are here</strong>"]:::current
B --> C["Joomla Templates & Extensions"]
classDef current fill:#38bdf8,color:#0f172a,stroke-width:2px;
Creating Menus
- Menus → Manage → New
- Enter Title (e.g., “Products Menu”) and Unique Name (
products-menu) - Click Save
Adding Menu Items
- Menus → [Your Menu] → New
- Choose a Menu Item Type:
| Type | Purpose |
|---|---|
| Single Article | Display one specific article |
| Category Blog | Blog-style grid of articles in a category |
| Category List | List view of articles in a category |
| Featured Articles | Display featured articles |
| All Categories | Show all article categories |
| Contact → Single Contact | Display a contact |
| Smart Search | Search results page |
| URL | Link to external site |
| System → Separator | Non-clickable text (menu label) |
| System → Heading | Menu heading (group label) |
- Configure:
- Menu Title — Display text
- Alias — URL slug
- Link — The assigned item (article, category, URL)
- Parent Item — Nest under another item for submenus
- Published — Show or hide
- Access — Who can see this item
Menu Hierarchy Example
Main Menu
├── Home (Featured Articles)
├── About Us (Single Article)
├── Services (Category Blog)
│ ├── Web Design (Category List)
│ └── Development (Category List)
├── Blog (Category Blog)
│ ├── Technology (Category List)
│ └── Design (Category List)
└── Contact (Single Contact)Submenus (Dropdowns)
To create a dropdown submenu:
- Create the parent menu item normally
- Create child items and set their Parent Item to the parent
- Cassiopeia (default template) renders dropdowns automatically — no extra configuration needed
Module Positions
Modules are lightweight content boxes placed in template positions. Each template defines its own set of positions.
Cassiopeia’s Module Positions
┌─────────────────────────────────────┐
│ top-bar │
├─────────────────────────────────────┤
│ banner (full-width hero) │
├─────────────────────────────────────┤
│ sidebar-left │ main │ sidebar-right │
│ (menu, login) │ (content) │ (modules) │
├─────────────────────────────────────┤
│ bottom-below │
├─────────────────────────────────────┤
│ footer (3 columns) │
└─────────────────────────────────────┘View your template’s positions by appending ?tp=1 to your site URL (requires enabling in Global Configuration → Template → Preview Module Positions).
Creating a Module
- Extensions → Modules → New
- Choose a module type:
| Module Type | Use Case |
|---|---|
| Custom | Free-form HTML/PHP content |
| Articles — Latest | List of recent articles |
| Articles — Most Read | Popular articles by hits |
| Articles — Categories | Category listing |
| Articles — Related | Related articles by tags |
| Breadcrumbs | Navigation trail |
| Menu | Display any menu |
| Search | Site search form |
| Syndicate | RSS feed links |
| Feed Display | External RSS feed |
| Login | Login / logout form |
| Language Switcher | Language selector |
- Configure:
- Title — Module heading (can be hidden)
- Position — Where it appears
- Status — Published, Unpublished, Trashed
- Access — Who can see it
- Menu Assignment — All pages, none, or specific items
- Save
Breadcrumb Module
Essential for navigation:
- Extensions → Modules → Breadcrumbs
- Configure: Show Home, Home Text, Show Last item, Text Separator
- Assign to the
breadcrumbposition
Latest News Module
- Extensions → Modules → Articles — Latest
- Configure category filter, count (number of articles), featured filter, ordering
- Assign to sidebar or footer
Module Menu Assignment
Control where a module appears:
| Option | Behavior |
|---|---|
| All pages | Everywhere |
| No pages | Nowhere (hidden) |
| Only on pages selected | Specific menu items only |
| All pages except selected | Everywhere except specific items |
This is how you show a “Contact Form” module only on the Contact page, or “Latest Products” only on product pages.
Common Mistakes
1. Every Page Needs a Menu Item
If you create an article but don’t link it to a menu item, it’s inaccessible through navigation. Non-menu pages don’t appear in search results either.
2. Too Many Modules in One Position
Crowding a sidebar with 8 modules makes the site look cluttered. Prioritize 3-4 most useful modules per position.
3. Ignoring Menu Assignment on Modules
A module assigned to “All Pages” appears everywhere. If your login module shows on the login page itself, restrict it via Menu Assignment → Only on pages selected.
4. Not Hiding Module Title
Module titles take up space. For well-known modules (Search, Login, Breadcrumbs), set Show Title → Hide for a cleaner look.
Practice Questions
What happens to an article that isn’t linked to a menu item?
Answer: It exists in the database but is inaccessible through normal navigation. Visitors can only reach it if they know the direct URL. It won’t appear in search results.How do you view all available module positions in your template?
Answer: Append?tp=1to your site URL. This requires enabling Preview Module Positions in Global Configuration → Template settings.How do you show a module only on specific pages?
Answer: In the module editor, use Menu Assignment to restrict visibility — choose “Only on pages selected” and pick specific menu items.Challenge: Create a “Footer” menu with 4 links (Privacy Policy, Terms, Sitemap, Contact). Create a Menu module for it placed in the
footerposition. Create a Custom HTML module for copyright text in thefooterposition. Verify the footer appears on all pages.
FAQ
Try It Yourself
- Create a new menu called “Footer Links”
- Add 3 menu items: Privacy Policy, Terms of Service, Contact
- Create a Menu module for “Footer Links” in the
footerposition - Place a Search module in the
top-barposition - Set the Breadcrumbs module to show on all pages
- Verify the menu assignment restricts a module to only one page
What’s Next
| Topic | Description |
|---|---|
| Joomla Templates & Extensions | Template overrides, plugins, and extension management |
| Users, Security & Administration | User groups, ACL, global configuration, cache, SEO |
| HTML | Understanding module and menu markup |
| CSS | Styling modules and menu positions |
| PHP | Creating custom module overrides |
What’s Next
Congratulations on completing this Joomla Menus Modules tutorial! Here’s where to go from here:
- Practice daily — Consistency is more important than long study sessions
- Build a project — Apply what you learned by building something real
- Explore related topics — Check out other tutorials in the same category
- Join the community — Discuss with other learners and share your progress
Remember: every expert was once a beginner. Keep coding!
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro