Content Management that can withstand the plundering hoards

Menus, page hierarchy and indexes

Navigation is the set of links visitors use to move between pages. Viking builds one main menu from page metadata. A theme's Navigation binding displays it; a page outside the menu can still be reached at its URL and is still published.

Put pages in the menu

  1. Open the page in either the Markdown or visual editor.
  2. Select In the menu.
  3. Set Menu position: smaller numbers appear first among pages with the same parent. Values range from 0 to 1000000; gaps such as 10, 20, 30 are fine.
  4. Choose Parent page, or Top level for a main link.
  5. Save, preview and publish the site.

Equal positions sort by URL, then internal ID. Existing pages without explicit menu settings default to visible at position 0 and Top level. A parent remains a clickable page with a separate submenu disclosure. On narrow displays the menu starts collapsed behind ☰ Menu. Test keyboard and touch access as well as a desktop mouse when reviewing a design.

Menu hierarchy is independent of URL hierarchy: /people can be under /about in the menu. Hiding a parent hides the entire branch from the menu; it does not restrict any of those pages. Deleting a parent moves its menu children to Top level. Cycles, self-parenting and nesting beyond 16 levels are rejected.

Install the External link plugin through Plugins and packages. In New page, choose Page type → External link. Enter the menu label as the page title, a unique internal path such as /links/support, and the Destination URL, including https:// or http://.

Select the object to change its destination, In the menu, Menu position or Parent page, then save and publish. Links open in the current tab and use the same ordering and nesting as page links. Your theme must display navigation. The internal path identifies the object in the editor; it does not create a public page or redirect. External link objects are excluded from sitemaps, Index blocks and Repeat files. Disabling the object removes it from navigation at the next publication.

List pages automatically inside content

An Index lists direct URL children of the page, ordered by title and URL, with a short summary from each child's first nonempty paragraph. It ignores menu visibility and menu parents. On /guides, /guides/install is a direct child; /guides/install/linux is not.

For Markdown, put {{index}} alone in a paragraph. For a visual page, insert Site → Index. Create/save the child pages, preview the index page, then publish. These lists are generated from saved content at preview/publication and do not update a public release until publication.

For a styled list of downloadable objects or recursive page listings, use Site → Repeat files as explained in downloads and packages.

Import menu settings with Markdown

Leading !! menu, !! menu-position and !! menu-parent directives let you carry menu settings in .md files. Create the parent before importing children. The navigation reference gives exact syntax, defaults, validation and theme styling classes. No YAML or template language is needed for ordinary menu editing.