model.title contains one of the two values - "Back to {0}" or "Back"
<sly data-sly-test.title="${model.title}"/>
<a>${'{0}' in title ? title @ format=currentPage.parent.title : title}</a>
Neither
${'{0}' in title ? title @ format=currentPage.parent.title : title}
nor
${'{0}' in title ? (title @ format=currentPage.parent.title) : title}
gives the expected result. What is the correct way?
Solved! Go to Solution.
Views
Replies
Total Likes
I would suggest if you already have a support script(Sling Model or Use API), better write logic in the script itself like below. This will make you view simple ans clean.
Support Script:
model.title = title.contains("{0}") ? title.replace("{0}", currentPage.parent.title) : title; (JavaScript Use API example, you can try similar in Java Use API or Sling Model)
HTL:
<a>${title}</a>
-AG
Please use the below mentioned format option syntax.
<sly data-sly-test.containsText="${'{0}' in title}">
${title @format = currentPage.parent.title}
</sly>
<sly data-sly-test="${!containsText}">
${title}
</sly>
Hope this helps!
please try adding conditions as mentioned below.
<sly data-sly-test.title="${model.title}"/>
<sly data-sly-test.containsText="${'{0}' in title}">
${title @format = currentPage.parent.title} <!-- 'parent page title' in title -->
</sly>
<sly data-sly-test="${!containsText}">
${title} <!-- title -->
</sly>
Views
Replies
Total Likes
Hi @Sravan_Kumar_Si,
Here is the working code:
<sly data-sly-test.title="${model.title}"/>
<a>${'{0} in title' @ format= currentPage.getParent.getTitle ? currentPage.getParent.getTitle : title} </a>
Put the {0} and the other strings in single quotes.
Thanks,
Kiran Vedantam.
Views
Replies
Total Likes
Hi @Kiran_Vedantam and @Manjunath_K , Thanks for getting back but this did not solve my issue. My objective is if the place holder {0} is there in the value of title then replace it otherwise simple use the value of title. '{0}' in title - this is to check for the existence of substring '{0}' in value of title variable. If I enclose every thing inside '' then "in" is not considered as an operator and "title" is not taken as value of the variable.
Views
Replies
Total Likes
Hi to replace and use parentpageTitle instead of title you can use the below code:
<a>${'{0}' in title ? currentPage.getParent.getTitle : title}</a>
I am not sure why are you using @ format= here.
Thanks,
Kiran Vedantam
Views
Replies
Total Likes
model.title contains one of the two values - "Back to {0}" or "Back" <sly data-sly-test.title="${model.title}"/>
My objective is if the place holder {0} is there in the value of title then replace it otherwise simple use the value of title.
Views
Replies
Total Likes
I would suggest if you already have a support script(Sling Model or Use API), better write logic in the script itself like below. This will make you view simple ans clean.
Support Script:
model.title = title.contains("{0}") ? title.replace("{0}", currentPage.parent.title) : title; (JavaScript Use API example, you can try similar in Java Use API or Sling Model)
HTL:
<a>${title}</a>
-AG
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
If you want to do it from view(HTL), the best option is having two expressions
<a>${'{0}' in model.title ? model.title : "" @ format=currentPage.parent.title} ${!('{0}' in model.title) ? model.title : ""}</a>
If you want your view(HTL) to be simple and more readable, as I mention earlier write the logic in support script.
Hope you got the Answer.
-AG