# Render Menu
## Content
# Render Menu
The simplest way to build navigation is to use `sitemap`, which is available as a template variable.
## Add ordering in frontmatter
```markdown
---
title: Getting Started
nav_order: 1
---
```
## Basic menu (single level)
```erb
<% sitemap.sort_by { |(_, node)| node.dig('_meta', 'nav_order') || 999 }.each do |key, node| %>
<% next if key == '_meta' || node.dig('_meta', 'type') == 'file' %>
-
<%= node.dig('_meta', 'title') %>
<% end %>
```
## Nested menu (recursive)
```erb
<%# app/views/trifle/docs/_nav.erb %>
<% def render_nav(tree) %>
<% tree.sort_by { |(_, node)| node.dig('_meta', 'nav_order') || 999 }.each do |key, node| %>
<% next if key == '_meta' || node.dig('_meta', 'type') == 'file' %>
-
<%= node.dig('_meta', 'title') %>
<% if node.keys.any? { |child| child != '_meta' } %>
<%= render_nav(node) %>
<% end %>
<% end %>
<% end %>
<%= render_nav(sitemap) %>
```
Keep `_meta` and file nodes out of the menu so navigation stays clean.