Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> dvmSkuBanner [in template "13373225#13373264#13390274" at line 4, column 18] ---- 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 skuId = dvmSkuBanner [in template "13373225#13373264#13390274" at line 4, column 1] ----
1<#assign contadorSKU = 0>
2<#assign contadorBannerSKU = 0>
3<#assign contadorBannerSKUImg = 0>
4<#assign skuId = dvmSkuBanner>
5<#assign contadorBannerGenerico = 0>
6<#assign contadorBannerGenericoImg = 0>
7<#assign contadorBannerGenericoDiv = 0>
8
9
10<#if entries?has_content>
11 <#list entries as curEntry>
12 <#if curEntry?? && curEntry.getAssetRenderer()??>
13 <#assign renderer = curEntry.getAssetRenderer()>
14 <#assign docXml = saxReaderUtil.read(renderer.getArticle().getContent()) />
15 <#assign sku = docXml.valueOf("//dynamic-element[@name='SKU']/dynamic-content/text()") />
16 <#assign esGenerico = docXml.valueOf("//dynamic-element[@name='Generico']/dynamic-content/text()") />
17 <#assign utilizaGenerico = docXml.valueOf("//dynamic-element[@name='UtilizaGenerico']/dynamic-content/text()") />
18 <#if skuId == sku && esGenerico != 'true' && utilizaGenerico != 'true'>
19 <#assign contadorSKU++>
20 </#if>
21 <#if esGenerico == 'true'>
22 <#assign contadorBannerGenericoDiv++>
23 </#if>
24 </#if>
25 </#list>
26</#if>
27
28<#if (contadorSKU > 0) >
29 <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
30 <#if (contadorSKU > 1)>
31 <ol class="carousel-indicators">
32 <#list entries as entryBannerSKU>
33 <#if entryBannerSKU?? && entryBannerSKU.getAssetRenderer()??>
34 <#assign renderer = entryBannerSKU.getAssetRenderer()>
35 <#assign docXml = saxReaderUtil.read(renderer.getArticle().getContent()) />
36 <#assign sku = docXml.valueOf("//dynamic-element[@name='SKU']/dynamic-content/text()") />
37 <#assign esGenerico = docXml.valueOf("//dynamic-element[@name='Generico']/dynamic-content/text()") />
38 <#assign utilizaGenerico = docXml.valueOf("//dynamic-element[@name='UtilizaGenerico']/dynamic-content/text()") />
39 <#if skuId == sku>
40 <#assign contadorBannerSKU++>
41 <li data-target="#carouselExampleIndicators" data-slide-to="${contadorBannerSKU-1}" class="<#if contadorBannerSKU - 1 == 0>active</#if>"></li>
42 </#if>
43 </#if>
44 </#list>
45 </ol>
46 </#if>
47 <div class="carousel-inner">
48 <#list entries as entryBannerSKUBody>
49 <#if entryBannerSKUBody?? && entryBannerSKUBody.getAssetRenderer()??>
50 <#assign renderer = entryBannerSKUBody.getAssetRenderer()>
51 <#assign docXml = saxReaderUtil.read(renderer.getArticle().getContent()) />
52 <#assign sku = docXml.valueOf("//dynamic-element[@name='SKU']/dynamic-content/text()") />
53 <#if skuId == sku>
54 <#assign contadorBannerSKUImg++>
55
56 <#assign titulo = docXml.valueOf("//dynamic-element[@name='Titulo']/dynamic-content/text()") />
57 <#assign texto = docXml.valueOf("//dynamic-element[@name='Texto']/dynamic-content/text()") />
58 <#assign externo = docXml.valueOf("//dynamic-element[@name='Externo']/dynamic-content/text()") />
59 <#assign enlace = docXml.valueOf("//dynamic-element[@name='Enlace']/dynamic-content/text()") />
60
61 <#assign journalArticle = renderer.getArticle()>
62 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
63 <#assign rootElement = document.getRootElement()>
64 <#assign xPathSelector1 = saxReaderUtil.createXPath("dynamic-element[@name='HOME01']")>
65 <#assign imgNews1 = xPathSelector1.selectSingleNode(rootElement).getStringValue()>
66 <#assign imgJson1 = jsonFactoryUtil.createJSONObject(imgNews1)>
67 <#assign imagen1 = "/documents/"+ imgJson1.groupId +"/" +imgJson1.fileEntryId +"/"+ imgJson1.name +"/"+imgJson1.uuid >
68
69 <#assign xPathSelector2 = saxReaderUtil.createXPath("dynamic-element[@name='HOME02']")>
70 <#assign imgNews2 = xPathSelector2.selectSingleNode(rootElement).getStringValue()>
71 <#assign imgJson2 = jsonFactoryUtil.createJSONObject(imgNews2)>
72 <#assign imagen2 = "/documents/"+ imgJson2.groupId +"/" +imgJson2.fileEntryId +"/"+ imgJson2.name +"/"+imgJson2.uuid >
73
74 <#assign xPathSelector3 = saxReaderUtil.createXPath("dynamic-element[@name='HOME03']")>
75 <#assign imgNews3 = xPathSelector3.selectSingleNode(rootElement).getStringValue()>
76 <#assign imgJson3 = jsonFactoryUtil.createJSONObject(imgNews3)>
77 <#assign imagen3 = "/documents/"+ imgJson3.groupId +"/" +imgJson3.fileEntryId +"/"+ imgJson3.name +"/"+imgJson3.uuid >
78
79 <#assign xPathSelector4 = saxReaderUtil.createXPath("dynamic-element[@name='HOME04']")>
80 <#assign imgNews4 = xPathSelector4.selectSingleNode(rootElement).getStringValue()>
81 <#assign imgJson4 = jsonFactoryUtil.createJSONObject(imgNews4)>
82 <#assign imagen4 = "/documents/"+ imgJson4.groupId +"/" +imgJson4.fileEntryId +"/"+ imgJson4.name +"/"+imgJson4.uuid >
83
84 <style>
85 .d-block.w-100.img-lg_${entryBannerSKUBody?counter}{
86 min-height: 530px;
87 }
88 .d-block.w-100.img-md_${entryBannerSKUBody?counter}{
89 min-height: 320px;
90 }
91 .d-block.w-100.img-sm_${entryBannerSKUBody?counter}{
92 min-height: 375px;
93 }
94 .d-block.w-100.img-xs_${entryBannerSKUBody?counter}{
95 min-height: 375px;
96 }
97 .img-lg_${entryBannerSKUBody?counter} {
98 display: flex !important;
99 width: 100%;
100 height: auto;
101 background-image: url("${imagen1}");
102 background-repeat: no-repeat;
103 background-size: cover;
104 background-position: center;
105 }
106
107 .img-md_${entryBannerSKUBody?counter} {
108 display: none !important;
109 }
110 .img-sm_${entryBannerSKUBody?counter} {
111 display: none !important;
112 }
113
114 .img-xs_${entryBannerSKUBody?counter} {
115 display: none !important;
116 }
117
118 @media only screen and (max-width: 1024px) {
119 .d-block.w-100.img-lg_${entryBannerSKUBody?counter}{
120 min-height: 450px;
121 }
122 }
123
124 @media only screen and (max-width: 795px) {
125 .img-lg_${entryBannerSKUBody?counter} {
126 display: none !important;
127 }
128 .img-md_${entryBannerSKUBody?counter} {
129 display: flex !important;
130 width: 100%;
131 height: auto;
132 background-image: url("${imagen1}");
133 background-repeat: no-repeat;
134 background-size: cover;
135 background-position: center;
136 }
137 .carousel {
138 min-height: 320px;
139 }
140 }
141
142 @media only screen and (max-width: 650px) {
143 .img-md_${entryBannerSKUBody?counter} {
144 display: none !important;
145 }
146 .img-sm_${entryBannerSKUBody?counter} {
147 display: flex !important;
148 width: 100%;
149 height: auto;
150 background-image: url("${imagen3}");
151 background-repeat: no-repeat;
152 background-size: cover;
153 background-position: center;
154 }
155 }
156
157 @media only screen and (max-width: 375px) {
158 .img-sm_${entryBannerSKUBody?counter} {
159 display: none !important;
160 }
161 .img-xs_${entryBannerSKUBody?counter} {
162 display: flex !important;
163 width: 100%;
164 height: auto;
165 background-image: url("${imagen4}");
166 background-repeat: no-repeat;
167 background-size: cover;
168 background-position: center;
169 }
170 }
171
172 @media only screen and (max-width: 1600px){
173 .d-block.w-100.img-lg_${entryBannerSKUBody?counter} {
174 min-height: 450px;
175 }
176 }
177 @media only screen and (max-width: 1024px){
178 .d-block.w-100.img-lg_${entryBannerSKUBody?counter} {
179 min-height: 355px;
180 }
181 }
182 @media only screen and (max-width: 1024px){
183 .d-block.w-100.img-md_${entryBannerSKUBody?counter} {
184 min-height: 260px;
185 }
186 }
187 </style>
188
189 <div class="carousel-item <#if contadorBannerSKUImg - 1 == 0>active</#if>">
190
191 <#if enlace?has_content>
192 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
193 <div class="d-block w-100 img-lg_${entryBannerSKUBody?counter}" ></div>
194 </a>
195 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
196 <div class="d-block w-100 img-md_${entryBannerSKUBody?counter}"></div>
197 </a>
198 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
199 <div class="d-block w-100 img-sm_${entryBannerSKUBody?counter}"></div>
200 </a>
201 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
202 <div class="d-block w-100 img-xs_${entryBannerSKUBody?counter}"></div>
203 </a>
204 <#else>
205 <div class="d-block w-100 img-lg_${entryBannerSKUBody?counter}"></div>
206 <div class="d-block w-100 img-md_${entryBannerSKUBody?counter}"></div>
207 <div class="d-block w-100 img-sm_${entryBannerSKUBody?counter}"></div>
208 <div class="d-block w-100 img-xs_${entryBannerSKUBody?counter}"></div>
209 </#if>
210
211
212 <#if titulo?has_content>
213 <div class="col-sm-12 col-sm-6 col-md-5 col-lg-4 banner-text">
214 <h3 class="h3-mb">${titulo}</h3>
215 <#if texto?has_content><p>${texto}</p></#if>
216 <#if enlace?has_content>
217 <div class="banner-btn">
218 <a href="${enlace}" class="btn btn-main" target="<#if externo == 'true'>_blank<#else>_self</#if>">Ver más</a>
219 </div>
220 </#if>
221 </div>
222 </#if>
223 </div>
224 </#if>
225 </#if>
226 </#list>
227 </div>
228 <#if (contadorSKU > 1)>
229 <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
230 <i class="fas fa-angle-left"></i>
231 <span class="sr-only">Previous</span>
232 </a>
233 <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
234 <i class="fas fa-angle-right"></i>
235 <span class="sr-only">Next</span>
236 </a>
237 </#if>
238 </div>
239<#else>
240 <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
241 <#if (contadorBannerGenericoDiv > 1)>
242 <ol class="carousel-indicators">
243 <#list entries as entryBannerSKU>
244 <#if entryBannerSKU?? && entryBannerSKU.getAssetRenderer()??>
245 <#assign renderer = entryBannerSKU.getAssetRenderer()>
246 <#assign docXml = saxReaderUtil.read(renderer.getArticle().getContent()) />
247 <#assign sku = docXml.valueOf("//dynamic-element[@name='SKU']/dynamic-content/text()") />
248 <#assign esGenerico = docXml.valueOf("//dynamic-element[@name='Generico']/dynamic-content/text()") />
249 <#assign utilizaGenerico = docXml.valueOf("//dynamic-element[@name='UtilizaGenerico']/dynamic-content/text()") />
250 <#if esGenerico == 'true'>
251 <#assign contadorBannerGenerico++>
252 <li data-target="#carouselExampleIndicators" data-slide-to="${contadorBannerGenerico-1}" class="<#if contadorBannerGenerico - 1 == 0>active</#if>"></li>
253 </#if>
254 </#if>
255 </#list>
256 </ol>
257 </#if>
258 <div class="carousel-inner">
259 <#list entries as entryBannerSKUBody>
260 <#if entryBannerSKUBody?? && entryBannerSKUBody.getAssetRenderer()??>
261 <#assign renderer = entryBannerSKUBody.getAssetRenderer()>
262 <#assign docXml = saxReaderUtil.read(renderer.getArticle().getContent()) />
263 <#assign sku = docXml.valueOf("//dynamic-element[@name='SKU']/dynamic-content/text()") />
264 <#assign esGenerico = docXml.valueOf("//dynamic-element[@name='Generico']/dynamic-content/text()") />
265 <#if esGenerico == 'true'>
266 <#assign contadorBannerGenericoImg++>
267
268 <#assign titulo = docXml.valueOf("//dynamic-element[@name='Titulo']/dynamic-content/text()") />
269 <#assign texto = docXml.valueOf("//dynamic-element[@name='Texto']/dynamic-content/text()") />
270 <#assign externo = docXml.valueOf("//dynamic-element[@name='Externo']/dynamic-content/text()") />
271 <#assign enlace = docXml.valueOf("//dynamic-element[@name='Enlace']/dynamic-content/text()") />
272
273 <#assign journalArticle = renderer.getArticle()>
274 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
275 <#assign rootElement = document.getRootElement()>
276 <#assign xPathSelector1 = saxReaderUtil.createXPath("dynamic-element[@name='HOME01']")>
277 <#assign imgNews1 = xPathSelector1.selectSingleNode(rootElement).getStringValue()>
278 <#assign imgJson1 = jsonFactoryUtil.createJSONObject(imgNews1)>
279 <#assign imagen1 = "/documents/"+ imgJson1.groupId +"/" +imgJson1.fileEntryId +"/"+ imgJson1.name +"/"+imgJson1.uuid >
280
281 <#assign xPathSelector2 = saxReaderUtil.createXPath("dynamic-element[@name='HOME02']")>
282 <#assign imgNews2 = xPathSelector2.selectSingleNode(rootElement).getStringValue()>
283 <#assign imgJson2 = jsonFactoryUtil.createJSONObject(imgNews2)>
284 <#assign imagen2 = "/documents/"+ imgJson2.groupId +"/" +imgJson2.fileEntryId +"/"+ imgJson2.name +"/"+imgJson2.uuid >
285
286 <#assign xPathSelector3 = saxReaderUtil.createXPath("dynamic-element[@name='HOME03']")>
287 <#assign imgNews3 = xPathSelector3.selectSingleNode(rootElement).getStringValue()>
288 <#assign imgJson3 = jsonFactoryUtil.createJSONObject(imgNews3)>
289 <#assign imagen3 = "/documents/"+ imgJson3.groupId +"/" +imgJson3.fileEntryId +"/"+ imgJson3.name +"/"+imgJson3.uuid >
290
291 <#assign xPathSelector4 = saxReaderUtil.createXPath("dynamic-element[@name='HOME04']")>
292 <#assign imgNews4 = xPathSelector4.selectSingleNode(rootElement).getStringValue()>
293 <#assign imgJson4 = jsonFactoryUtil.createJSONObject(imgNews4)>
294 <#assign imagen4 = "/documents/"+ imgJson4.groupId +"/" +imgJson4.fileEntryId +"/"+ imgJson4.name +"/"+imgJson4.uuid >
295
296 <style>
297 .d-block.w-100.img-lg_${entryBannerSKUBody?counter}{
298 min-height: 530px;
299 }
300 .d-block.w-100.img-md_${entryBannerSKUBody?counter}{
301 min-height: 320px;
302 }
303 .d-block.w-100.img-sm_${entryBannerSKUBody?counter}{
304 min-height: 375px;
305 }
306 .d-block.w-100.img-xs_${entryBannerSKUBody?counter}{
307 min-height: 375px;
308 }
309 .img-lg_${entryBannerSKUBody?counter} {
310 display: flex !important;
311 width: 100%;
312 height: auto;
313 background-image: url("${imagen1}");
314 background-repeat: no-repeat;
315 background-size: cover;
316 background-position: center;
317 }
318
319 .img-md_${entryBannerSKUBody?counter} {
320 display: none !important;
321 }
322 .img-sm_${entryBannerSKUBody?counter} {
323 display: none !important;
324 }
325
326 .img-xs_${entryBannerSKUBody?counter} {
327 display: none !important;
328 }
329
330 @media only screen and (max-width: 1024px) {
331 .d-block.w-100.img-lg_${entryBannerSKUBody?counter}{
332 min-height: 450px;
333 }
334 }
335
336 @media only screen and (max-width: 795px) {
337 .img-lg_${entryBannerSKUBody?counter} {
338 display: none !important;
339 }
340 .img-md_${entryBannerSKUBody?counter} {
341 display: flex !important;
342 width: 100%;
343 height: auto;
344 background-image: url("${imagen1}");
345 background-repeat: no-repeat;
346 background-size: cover;
347 background-position: center;
348 }
349 .carousel {
350 min-height: 320px;
351 }
352 }
353
354 @media only screen and (max-width: 650px) {
355 .img-md_${entryBannerSKUBody?counter} {
356 display: none !important;
357 }
358 .img-sm_${entryBannerSKUBody?counter} {
359 display: flex !important;
360 width: 100%;
361 height: auto;
362 background-image: url("${imagen3}");
363 background-repeat: no-repeat;
364 background-size: cover;
365 background-position: center;
366 }
367 }
368
369 @media only screen and (max-width: 375px) {
370 .img-sm_${entryBannerSKUBody?counter} {
371 display: none !important;
372 }
373 .img-xs_${entryBannerSKUBody?counter} {
374 display: flex !important;
375 width: 100%;
376 height: auto;
377 background-image: url("${imagen4}");
378 background-repeat: no-repeat;
379 background-size: cover;
380 background-position: center;
381 }
382 }
383 @media only screen and (max-width: 1600px){
384 .d-block.w-100.img-lg_${entryBannerSKUBody?counter} {
385 min-height: 450px;
386 }
387 }
388 @media only screen and (max-width: 1024px){
389 .d-block.w-100.img-lg_${entryBannerSKUBody?counter} {
390 min-height: 355px;
391 }
392 }
393 @media only screen and (max-width: 1024px){
394 .d-block.w-100.img-md_${entryBannerSKUBody?counter} {
395 min-height: 260px;
396 }
397 }
398 </style>
399
400 <div class="carousel-item <#if contadorBannerGenericoImg - 1 == 0>active</#if>">
401
402 <#if enlace?has_content>
403 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
404 <div class="d-block w-100 img-lg_${entryBannerSKUBody?counter}" ></div>
405 </a>
406 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
407 <div class="d-block w-100 img-md_${entryBannerSKUBody?counter}"></div>
408 </a>
409 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
410 <div class="d-block w-100 img-sm_${entryBannerSKUBody?counter}"></div>
411 </a>
412 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
413 <div class="d-block w-100 img-xs_${entryBannerSKUBody?counter}"></div>
414 </a>
415 <#else>
416 <div class="d-block w-100 img-lg_${entryBannerSKUBody?counter}"></div>
417 <div class="d-block w-100 img-md_${entryBannerSKUBody?counter}"></div>
418 <div class="d-block w-100 img-sm_${entryBannerSKUBody?counter}"></div>
419 <div class="d-block w-100 img-xs_${entryBannerSKUBody?counter}"></div>
420 </#if>
421
422
423 <#if titulo?has_content>
424 <div class="col-sm-12 col-sm-6 col-md-5 col-lg-4 banner-text">
425 <h3 class="h3-mb">${titulo}</h3>
426 <#if texto?has_content><p>${texto}</p></#if>
427 <#if enlace?has_content>
428 <div class="banner-btn">
429 <a href="${enlace}" class="btn btn-main" target="<#if externo == 'true'>_blank<#else>_self</#if>">Ver más</a>
430 </div>
431 </#if>
432 </div>
433 </#if>
434 </div>
435 </#if>
436 </#if>
437 </#list>
438 </div>
439 <#if (contadorBannerGenericoDiv > 1)>
440 <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
441 <i class="fas fa-angle-left"></i>
442 <span class="sr-only">Previous</span>
443 </a>
444 <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
445 <i class="fas fa-angle-right"></i>
446 <span class="sr-only">Next</span>
447 </a>
448 </#if>
449 </div>
450</#if>
Déjanos tus datos de contacto
(Contacto directo +51 985 603 852)