Building navigation menus in DecentCMS

The navigation files that can be found in a site's "navigation" directory describe the menus that are available to the system. The default.json file in particular describes the default menu for the site. By editing this file, you can modify the menu's hierarchical structure and its contents.

[
{"name": "home", "title": "Home", "href": "/"},
{"name": "blog", "title": "Blog", "href": "http://weblogs.asp.net/bleroy"},
{
"name": "projects",
"title": "Projects",
"href": "/projects",
"items": [
{"name": "orchard", "title": "Orchard CMS", "href": "http://orchardproject.net"},
{"name": "decent", "title": "Decent CMS", "href": "http://decentcms.org"},
{"name": "nwazetcommerce", "title": "Nwazet Commerce",
"href": "https://bitbucket.org/bleroy/nwazet.commerce"},
{"name": "fluentpath", "title": "FluentPath", "href": "https://fluentpath.codeplex.com/"},
{"name": "flasync", "title": "Flasync", "href": "https://github.com/bleroy/flasync"}
]
},
{"name": "contact", "title": "Contact", "href": "/contact"}
]

Each menu entry consists of an object with the following properties:

  • name: a technical name for the menu entry. Use lowercase letters, digits, and dashes.
  • title: the title for the item.
  • href: the target URL for the item.
  • items: the array of sub-items.

How does this work?

If the "navigation" feature is enabled on a site, a special handler will place a "menu" shape into the top-level "navigation" zone of the layout. This shape's items property is populated from a call to the addRootItems method of navigation-provider services.

The file-navigation-provider service, which is part of the feature of the same name, is an implementation of the navigation-provider service that parses the /sites/mysite/navigation/default.json file for menu items.

No Comments