Navigation
In this section you will learn about:
- The different types of navigation
- The basics of adding navigation to your templates
- Navigation settings/parameters
- The common XSLT navigation templates and which to use.
Common types of navigation
First, it might prove useful to delve into the kinds of navigation we might encounter on a typical website. Here's a few examples.
Primary navigation
This navigation is the most common type, and houses the primary navigation items for the website, usually things like home, shop, categories, about, contact and so on.
Secondary/sub navigation
Sub-navigations are used to fold out additional items belonging to a parent
Breadcrumbs
This type is used to create a path on more complex websites with much content. This can be helpful for users.
Ecommerce (product) navigation
On sites with Ecommerce it is handy to have a product navigation, conventionally placed either at the left or at the top.
How the dwnavigation class work
Having pages and nodes dynamically rendered as navigations on your page is a core requirement to any website.
Luckily this is easy with Dynamicweb, and is done by using a special dynamicweb class on an <ul>
-element. Obviously there's a bit more to this, as well as multiple settings you can use.
See Implementing chapter for a thorough explanation.
XSLT navigation-templates and their role
XSLT is a code language that has proven itself powerful for handling navigation, as it has a natural strength in traversing pages/nodes and outputting them as raw HTML.
By default, Dynamicweb wraps ship with some XSLT-templates,offering different renderings. All are listbased (<ul></ul>
) and easy for you to style, and of course you can edit the navigation-templates directly if you wish so.
Dynamicweb will try looking for XSLT-templates in these locations:
- /Templates/Navigation
- /Templates/Designs/Navigation
- /Templates/Designs/YourCustomDesign/Navigation
Under Implementing you can read more about the default XSLT-templates.
Implementing
Let's get practical. We'll talk about adding a navigation to a page, as well as the settings and common XSLT-templates available.
Adding navigation placeholders to a layout
In addition to creating content placeholders, you need to make any static navigation in your layout dynamic. Dynamicweb relies on XML/XSLT-based navigation. The template applied to the UL is a XSLT template and cannot be converted to a Razor template.
To make your navigation dynamic:
- Locate the markup in your layout template which holds the navigation. Navigation must be an unordered list, i.e. an <ul> element – if it is not, wrap it in one.
- Assign an ID to the element, and a class called dwnavigation
This uses a set of default values, and a default layout template (e.g. LeftNavigationEcom.xslt) to render the navigation.
You can (and should) customize your navigation behavior by adding a Dynamicweb-specific attribute called data-settings to your UL element. See below for a table with data-settings parameters.
Do not use Razor code in the attributes of a navigation. Unlike placeholders, the class attribute cannot contain a Razor specified class. Wrap the entire UL in a div instead.
Data-settings
The following data-settings are available to you:
Property |
Description |
Default value |
Possible values |
startlevel |
The absolute level from which the XML should include navigation items from |
1 |
1-99 |
endlevel |
The absolute level to which the XML should include navigation items to |
99 |
1-99 |
template |
Name of XSLT template used for parsing the navigation XML |
LIClean.xslt |
Any valid existing navigation XSLT template. Must be placed in /Templates/Navigation, /Templates/Designs/Navigation or /Templates/Design/DesignName/Navigation |
expandmode |
How the navigation XML expands and which nodes it includes |
Path |
None, Path, All, Pathonly |
parentid |
Limits the navigation to items placed under the page with the ID specified |
0 |
Any valid page id |
parenttag |
Limits the navigation to items placed under the page with a specific navigation tag. It works like parentid setting, but where parentid is a unique key, the parent tag can be on several pages in different languages – and the value is language/website context sensitive. |
|
A name from the parent tag field on a pages properties, navigation dialog. |
areaid |
Limits the navigation to items placed under the website with the ID specified |
0 |
Any valid website id (these can be seen under the Websites module) |
sitemapmode |
Specifies which items to include in the XML. If set to true, hidden navigation items are included, but not items where show in sitemap is not set. If set to false, hidden items are not included, but do not show in sitemap are included. |
False |
True or False |
XSLT-templates (common defaults)
As stated in Basic Concepts, navigation templates output <ul> based navigations – see table below for the variations.
XSLT-Template |
Used for |
Render style |
LIClean.xslt |
Primary navigation menu
|
Horizontal |
LiCleanBootstrapDropdown.xslt |
Primary navigation menu
|
Horizontal With dropdown items (Uses Bootstrap v3) |
LiCleanOffsetmenu.xslt |
Primary navigation menu (mobile/off-canvas)
|
Vertical |
Breadcrumb.xslt |
Breadcrumb / path
|
Horizontal |
LeftNavigationEcom.xslt |
Ecommerce (product) navigation
|
Left, vertical |
TopNavigationEcom.xslt |
Ecommerce (product) navigation
|
Top, horizontal |
By default Dynamicweb does not ship with these templates – but they can be easily acquired through the Dynamicweb wraps (see downloads).