Checking an url if it contains specific text

sai_santhosht50

24-09-2020

There is a requirement in our project where i have to check if the current page path contains a specific text or not. How to write sightly code for this.

 

for ex:- <sly data-sly-test.pagepath=${currentPage.path}/> 

this will returns path as "/content/project/ab/cd/home/" now i want to check if it has " /cd/ " text in it.
Thanks in advance.

Package Manager sightly

Accepted Solutions (1)

Accepted Solutions (1)

Vijayalakshmi_S

MVP

24-09-2020

Hi @sai_santhosht50,

HTL is for direct mark up rendering only. For any manipulation or conditional checks like this has to be done either in Use JS(make use of currentPage or request implied objects and "includes" javascript function for contains check) or Sling Model/WCMUsePojo.

 

Answers (2)

Answers (2)

Jineet_Vora

24-09-2020

Hello @sai_santhosht50,

 

Instead of HTL (Sightly), you can use plain JavaScript or the JavaScript Use API to check if your string contains a specific keyword.

 

code.html

<div data-sly-use.info="${'checkString.js' @ pagePath=currentPage.path}">
   <h1>String contains /cd/: ${info.result}</h1>
</div>

 

 

 

checkString.js

"use strict";
use(function () {
    var result;
    var pagePath = this.pagePath;
    if(pagePath.includes('/cd/'))
       result=true;
    else
       result=false;
    return result;
});

 

 

Hope this helps!

Jineet

raj_mandalapu

24-09-2020

The sightly does not support this, you need to write java code, refer below link for writing the sling model

http://www.aemcq5tutorials.com/tutorials/adobe-aem-cq5-tutorials/sling-model-sightly-aem/

1. your class adaptable from SlingHttpServletRequest

2 add the following inject 

@inject

private Page currentPage;

3: check path contains /cd/

 

 

currentPage.path.contains("/cd/")