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

Image Optimizer Lite
Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing:
==> channel.items  [in template "3192443#3192485#null" at line 109, column 30]

----
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: #assign channelId = channel.items[0].id  [in template "3192443#3192485#null" at line 109, column 9]
----
1<style> 
2	.app-container { 
3		border-color: #2e5aac !important; 
4		color: #2e5aac; 
5		font-size: MEDIUM; 
6
7 
8	.app-category { 
9		display: block; 
10		flex: 1; 
11		max-width: 200px; 
12		overflow: hidden; 
13		text-overflow: ellipsis; 
14		white-space: nowrap; 
15
16 
17	.app-container .app-category { 
18		background-color: #e6ebf5; 
19		color: #1c3667; 
20		padding: 4px 8px; 
21
22 
23	.app-container .app-product-type { 
24		min-width: 0; 
25		overflow: hidden; 
26		text-overflow: ellipsis; 
27		white-space: nowrap; 
28
29 
30	.client-extension-product-type { 
31		background-color: #FFE6C6; 
32		color: #9D4C00; 
33
34 
35	.cloud-product-type { 
36		background-color: #D1EEDC; 
37		color: #0E7835; 
38
39 
40	.composite-app-product-type { 
41		background-color: #FBE0FF; 
42		color: #720086; 
43
44 
45	.diamond-icon-container { 
46		color: #C9C9CF; 
47		height: 4px; 
48		width: 4px; 
49
50 
51	.dxp-product-type { 
52		background-color: #D1ECFA; 
53		color: #166E9E; 
54
55 
56	.low-code-configuration-product-type { 
57		background-color: #DCD7E9; 
58		color: #503690; 
59
60 
61	@media screen and (max-width: 768px) { 
62		.app-container { 
63			font-size: small; 
64
65
66 
67	@media screen and (max-width: 576px) { 
68		.app-container { 
69			font-size: x-small; 
70
71 
72		.app-container .app-category, 
73		.app-container .app-product-type { 
74			padding: 2px 4px; 
75
76
77</style> 
78 
79<#assign 
80	productTypeValues = 
81
82			"client-extension": "Client Extension", 
83			"cloud": "Cloud App", 
84			"composite-app": "Composite App", 
85			"dxp": "DXP App", 
86			"low-code-configuration": "Low-Code" 
87
88 
89	VOCABULARY_PRODUCT_CATEGORY = "MARKETPLACE-APP-CATEGORY" 
90/> 
91 
92<#if themeDisplay?has_content> 
93	<#assign scopeGroupId = themeDisplay.getScopeGroupId() /> 
94</#if> 
95 
96<#if currentURL?has_content> 
97	<#if currentURL?contains('web')> 
98		<#assign 
99			index = 2 
100			partsUrl = currentURL?split('/') 
101			siteName = partsUrl[index..index]?join('/') 
102		/> 
103	</#if> 
104</#if> 
105 
106<#assign channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${scopeGroupId}'") /> 
107 
108<#if channel?has_content> 
109	<#assign channelId = channel.items[0].id /> 
110</#if> 
111 
112<#if (CPDefinition_cProductId.getData())??> 
113	<#assign productId = CPDefinition_cProductId.getData() /> 
114</#if> 
115 
116<#assign 
117	product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/"+ channelId +"/products/"+ productId +"?accountId=-1&nestedFields=productSpecifications,categories") 
118	categories = product.categories![] 
119	productSpecifications = product.productSpecifications![] 
120/> 
121 
122<div class="app-container color-neutral-3 d-flex flex-wrap font-size-paragraph-small justify-content-between w-100"> 
123	<div class="d-flex"> 
124		<#if productSpecifications?has_content> 
125			<#assign productTypes = productSpecifications?filter(item -> stringUtil.equals(item.specificationKey, "type")) /> 
126 
127			<#list productTypes as productType> 
128				<#if productType?has_content> 
129					<#assign appType = (productTypeValues[productType.value]!) /> 
130 
131					<#if appType?has_content> 
132						<div class="align-items-center app-product-type border border-radius-small d-flex mb-1 mr-2 px-2 rounded-lg ${productType.value}-product-type"> 
133							<div class="bg-neutral-8">${appType}</div> 
134						</div> 
135					</#if> 
136				</#if> 
137			</#list> 
138		</#if> 
139 
140		<#if categories?has_content> 
141			<#assign filteredCategories = categories?filter(category -> category.vocabulary?upper_case == VOCABULARY_PRODUCT_CATEGORY) /> 
142 
143			<#if filteredCategories?has_content && appType?has_content> 
144				<span class="align-items-center d-flex justify-content-between"> 
145					<span class="align-items-center d-flex diamond-icon-container justify-content-between mr-3"> 
146						<@clay["icon"] symbol="diamond" /> 
147					</span> 
148				</span> 
149			</#if> 
150 
151			<#list categories as category> 
152				<#if category.vocabulary?upper_case == VOCABULARY_PRODUCT_CATEGORY> 
153					<span class="app-category bg-neutral-8 border-radius-small mb-1 mr-2 px-3 rounded-lg" title="${category.name}"> 
154						${category.name} 
155					</span> 
156				</#if> 
157			</#list> 
158		</#if> 
159	</div> 
160</div> 
18523833
Image Optimizer Lite is a hook that adds functionality to optimize images from the document library of a site. There are many sites that require very reduced load times and one of the first improvements to the performance of a portal is the size. Using this hook may reduce the size of the images contributed with little effort and in a simple way.

Image Optimizer Lite includes a comparison of images, so you can verify the result of the process. In addition to keeping track of changes it is integrated with version history, so if the result of an image is not good you can always return to the previous version.

That version can process images of type JPG, GIF and PNG. If you need an implementation of Image Optimizer Lite for another version of the product or for other image format you can contact, we are at your disposal.

Flabo.es Image optimizer Lite es un hook que añade la funcionalidad de optimizar imágenes de la document Library de un site. Son muchos los portales que requieren de tiempos de carga muy reducidos y una de las primeras mejoras del rendimiento de un portal es el tamaño del mismo. Mediante este hook podrán reducir el tamaño de las imágenes contribuidas sin apenas esfuerzo y de una forma sencilla.

Image optimizer Lite incluye un comparador de imágenes, para que pueda verificar que los ajustes realizados no deterioran la calidad de la imagen. Además para mantener un registro de los cambios realizados está integrado con el histórico de versiones, por lo que si el resultado de una imagen no es de su agrado siempre puede volver a la versión anterior.

Esta versión es capaz de procesar ficheros de tipo JPG, GIF y PNG. Si necesitan una implementación de Image Optimizer Lite para otra versión del producto o para otro formato de ficheros no dude en ponerse en contacto, estamos a su disposición.

Flabo.es
DEVELOPER
DEVELOPER
2024-11-21 18:00
Published date
2024-11-21 18:00
Published Date
2024-11-21 18:00
SUPPORTED OFFERINGS
Liferay PaaS, Liferay Self-Hosted
Supported Versions
6.2
Resource Requirements
Edition
CE
PRICE
Paid
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.