/o//commerce-media/accounts/-1/images/18565783?download=true

Lazy Load Images
DXP App
Analytics and Optimization
18565735
This nonintrusive hook adds a new filter to your Liferay that implements lazy loading for your images without:
- Add new javascript libraries.
- Adding any html markup to your images.

The lazy load will be applied to each page of your portals for the invited user (not for registered users) except for the images that are inside the <header> tag.

Benefits:
- You'll only load the images that the user needs. If the user scrolls down it will load the images as needed.
- Improve the performance of your portal. You'll save requests to your server.

You can see it in action at http://www.diba.cat .
DEVELOPER
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> product.publisherName  [in template "3192443#3192485#null" at line 28, column 23]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: publisherName = product.publisherName  [in template "3192443#3192485#null" at line 28, column 9]
----
1<#if themeDisplay?has_content> 
2	<#assign scopeGroupId = themeDisplay.getScopeGroupId() /> 
3</#if> 
4 
5<#if currentURL?has_content> 
6	<#if currentURL?contains('web')> 
7		<#assign 
8			index = 2 
9			partsUrl = currentURL?split('/') 
10			siteName = partsUrl[index..index]?join('/') 
11		/> 
12	</#if> 
13</#if> 
14 
15<#assign channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${scopeGroupId}'") /> 
16 
17<#if channel?has_content> 
18	<#assign channelId = channel.items[0].id /> 
19</#if> 
20 
21<#if (CPDefinition_cProductId.getData())??> 
22	<#assign productId = CPDefinition_cProductId.getData() /> 
23</#if> 
24 
25<#assign 
26	product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/"+ channelId +"/products/"+ productId +"?accountId=-1&nestedFields=productSpecifications") 
27	productSpecifications = product.productSpecifications![] 
28	publisherName=product.publisherName 
29/> 
30 
31<#if publisherName?has_content> 
32	<#assign publisePages=restClient.get("/c/publisherdetailses?filter=catalogName eq '${publisherName}'" ) /> 
33	<#assign redirectPath="https://marketplace-uat.liferay.com/e/publisher-details/29282497"/> 
34	 
35	<#if publisePages?has_content> 
36		<#assign publisePage=publisePages.items /> 
37			<#if publisePage?has_content> 
38						<#assign publisherDetail=publisePage[0]/> 
39			</#if> 
40	</#if> 
41</#if> 
42 
43<div> 
44	<#if productSpecifications?has_content> 
45		<#assign developerNames = productSpecifications?filter(item -> stringUtil.equals(item.specificationKey, "developer-name")) /> 
46 
47		<#if developerNames?has_content> 
48			<#list developerNames as developerName> 
49				<#if publisherDetail?has_content> 
50					<a class="bg-neutral-8" href="${redirectPath}/${publisherDetail.id}"> 
51						${developerName.value} 
52					</a> 
53				<#else> 
54					<a class="bg-neutral-8" 	href="/?developer-name=${developerName.value}"> 
55						${developerName.value} 
56					</a> 
57				</#if> 
58			</#list> 
59		</#if> 
60	</#if> 
61</div> 
DEVELOPER
21/11/24 18:20
Published date
21/11/24 18:20
Published Date
21/11/24 18:20
SUPPORTED OFFERINGS
Liferay PaaS, Liferay Self-Hosted
Supported Versions
6.2
Resource Requirements
Edition
CE, EE
PRICE
Free
help & support
SHARE LINK
Copy & Share

HTML Example

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.