Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.

Nav subitems display/iteration problem

Avatar

Level 1

*** EDIT: ***

Solved by myself xD
${index} was required in navigation id 

 

--------------------------------------------------

Hi guys,

 

Can you please help me how to iterate navigation subitems using navigation core component?

My issue is that I can display all level 0 items correctly, but when trying to display level 1 items I can see all navigation subitems instead of those belonging to parent.

 

Code for level 1 is quite different than for level 0 and I can not use <ul> from group.html, so instead it starts with <div> and id.

 

group.html

 

<template data-sly-template.group="${@ items='The navigation items for the current level', subitems}" data-sly-use.itemTemplate="item.html">
    <ul class="d-md-flex justify-content-md-center cmp-navigation__group" data-sly-list="${items}">
        <sly data-sly-call="${itemTemplate.item @ item=item, index=itemList.index}"></sly>
    </ul>
    <div id="navMenuSub3" class="nav-menu-sub cmp-navigation__item cmp-navigation__item cmp-navigation__item--${subitems.index}--level-1${item.active ? ' is-active' : ''}">
        <div class="row" data-sly-list="${subitems}">
            <div class="col-12 col-md-4">
            <a href="${item.URL}">${itemList.index} ${item.title}</a>
            </div>
        </div>
    </div>
</template>

 

 

 item.html

 

<template data-sly-template.item="${@ item='The navigation item', index}"
          data-sly-use.groupTemplate="group.html"
          data-sly-use.subgroupTemplate="group.html"
          data-sly-use.itemContentTemplate="itemContent.html">
    <li class="nav-menu-item cmp-navigation__item cmp-navigation__item--${index}--level-${item.level} ${item.active ? 'is-active' : '' }">
        <sly data-sly-call="${itemContentTemplate.itemContent @ item = item}"></sly>
        <sly data-sly-test="${item.children.size > 0}" data-sly-call="${groupTemplate.group @ subitems = item.children, index=itemList.index}"></sly>
    </li>
</template>

 

 

itemContent.html

 

<template data-sly-template.itemContent="${@ item='The navigation item'}"> 
        <h3><a href="${item.level == 1 ? '#' : item.URL}" data-nav="${item.children.size > 0 ? 'navMenuSub3' : ''}" class="cmp-navigation__item-link">${item.title}</a></h3>
</template>

 

 

1 Reply

Avatar

Community Advisor

Like you have mentoned, ${index} was required in navigation id.