Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

Checking an url if it contains specific text

sai_santhosht50
Level 2
Level 2

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
1 Accepted Solution
Vijayalakshmi_S
Correct answer by
Community Advisor
Community Advisor

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.

 

View solution in original post

6 Replies
raj_mandalapu
Community Advisor
Community Advisor

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/")

 

 

 

Vijayalakshmi_S
Correct answer by
Community Advisor
Community Advisor

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.

 

View solution in original post

Vijayalakshmi_S
Community Advisor
Community Advisor

In the activate method of WCMUsePojo, use the below snippet to get the current page path and hence contains check on it.

String actualPagePath = getCurrentPage().getPath();
if(actualPagePath.contains("retail")) {
LOG.info("It is a we-retail page !!");
}

Perform any manipulations or further logic here and expose things that are needed in HTL via getters from POJO.

Jineet_Vora
Level 4
Level 4

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

sai_santhosht50
Level 2
Level 2

Hi @Jinnet_Vora ,

Thanks for your reply.

The above mentioned concept i have already tried but the thing the js will apply after the css rendered on the page which shows some lag to the end user.

It will be help ful if you let me know java script use API with an example. 🙂