===========================
Rendering a Meta-Navigation
===========================

To render a meta navigation (ex: footer navigation)
in Neos all you need to use is Fusion and
HTML.

A common fact is that most sites have footer where all
pages are using the same content or information. So a
common issue is how to solve this in the best possible
way.

VendorName.VendorSite/Resources/Private/Fusion/Root.fusion

Fusion code::

    page.body {
        metaMenu = Menu
        metaMenu {
            entryLevel = 2
            templatePath = 'resource://VendorName.VendorSite/Private
            /Templates/FusionObjects/MetaMenu.html'
            maximumLevels = 1
            startingPoint = ${q(site).children('[uriPathSegment="metamenu"]').get(0)}
        }
    }


The first thing that we define inside the page.body is a Menu object
that is called metaMenu. The options available in this example is:

* entryLevel: On which level in the page structure the menu should
  start.
* templatePath: The path to the template where the rendering is
  done.
* maximumLevels: How many levels the menu can show.
* startingPoint: The starting point of the menu, in this case the
  node with name 'nameOfNode' is the starting point.

HTML template code::

    {namespace neos=Neos\Neos\ViewHelpers}
    <nav class="nav">
        <ul class="nav nav-pills">
            <f:for each="{items}" as="item" iteration="menuItemIterator">
                <li class="{item.state}">
                    <neos:link.node node="{item.node}" />
                </li>
            </f:for>
        </ul>
    </nav>

What is done is first to include a view helper to be able to link to
nodes inside the HTML. The namespace in the example is neos to
clarify from where the viewhelper is taken.

Viewhelper include::

    {namespace neos=Neos\Neos\ViewHelpers}

The next thing is to iterate through the nodes found by Fusion.

Iterating through nodes::

    <f:for each="{items}" as="item">
        ...
    </f:for>

What then is done inside the iteration is that first we wrap our node
with a li tag with a class called menu-item. Then we use our view helper
to (which namespace is neos that is clarified) link it to a node in Neos.
The linking is set in the parameter node, the you can choose what should be
shown as a text for the link. In this case the label (default) of the
node is the text.

Wrapping and linking of node::

    <li class="{item.state}">
        <neos:link.node node="{item.node}" />
    </li>

The last thing to do is to include the meta menu to our page layout(s).

Include meta menu::

    {parts.metaMenu -> f:format.raw()}
