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