Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.

Sightly condition check

Avatar

Level 2

Hello all,

Below is my code.  actually i am displaying list of children (in 2 sections) on click in header navigation.

<ul class="nav navbar-nav" data-sly-list.level1="${header.mainNavPages}" >

<div class="col-md-3 col-sm-4">

<ul class="dropdown-list" data-sly-list.level2="${level1.children}">

<li data-sly-test="${level2List.index <= level1.mainNavForkIndexValue}"></li>

-----------

</ul></div>

<div class="col-md-3 col-sm-4">

<li data-sly-test="${level2List.index > level1.mainNavForkIndexValue}"></li>

----

</ul></div>

Now my requirement , i want to display same results in 3 sections, i want to segregate the list of children in 3 sections (3 divs).

Earlier  2 sections (50% in first sections and another 50% in 2nd section)

"${level2List.index <= level1.mainNavForkIndexValue}",   ${level2List.index > level1.mainNavForkIndexValue}">

Now 3 sections (30,30,40 or  33,33,34%)

I need suggestion for sightly condition on how to achieve this.

3 Replies

Avatar

Community Advisor

Hi,

Use Sling Model to return list(s) based on conditions. You can pass as level1.mainNavForkIndexValue parameter in Java and do all business logic there and return 3 lists.



Arun Patidar

Avatar

Level 2

HI Arun,

Thanks for reply. I am just doing POC for this. I am passing string to sightly. But this is not working for me. Could you please suggest??

<div class="collapse navbar-collapse" id="main-navbar" data-sly-use.mySlingModal="${'com.ingredion.aem.core.components.content.SlingFirst @ text='Some text'}">

@Model(adaptables = [SlingHttpServletRequest, Resource])

final class SlingFirst extends AbstractComponent {

   @RequestAttribute
  @Optional
   private String reversed;;

   @PostConstruct
   public void init() {

  String text = get("text", String.class);

   reversed = new StringBuilder(text).reverse().toString();

  }

   public String getReversed() {

   return reversed;

  }

  }