Virhe tapahtui prosessoidessa esitysmallia.
The following has evaluated to null or missing: ==> dvmCodigoBanner [in template "40564#40603#59030" at line 4, column 21] ---- 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 modeloId = dvmCodigoBanner [in template "40564#40603#59030" at line 4, column 1] ----
1<#assign contadorSKU = 0>
2<#assign contadorBannerSKU = 0>
3<#assign contadorBannerSKUImg = 0>
4<#assign modeloId = dvmCodigoBanner>
5
6
7<#if entries?has_content>
8 <#list entries as curEntry>
9 <#assign renderer = curEntry.getAssetRenderer()>
10 <#assign docXml = saxReaderUtil.read(renderer.getArticle().getContent()) />
11 <#assign modelo = docXml.valueOf("//dynamic-element[@name='Modelo']/dynamic-content/text()") />
12
13 <#if modeloId == modelo>
14 <#assign contadorSKU++>
15 </#if>
16 </#list>
17</#if>
18
19<#if (contadorSKU > 0) >
20 <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
21 <#if (contadorSKU > 1)>
22 <ol class="carousel-indicators">
23 <#list entries as entryBannerSKU>
24 <#assign renderer = entryBannerSKU.getAssetRenderer()>
25 <#assign docXml = saxReaderUtil.read(renderer.getArticle().getContent()) />
26 <#assign modelo = docXml.valueOf("//dynamic-element[@name='Modelo']/dynamic-content/text()") />
27 <#if modeloId == modelo>
28 <#assign contadorBannerSKU++>
29 <li data-target="#carouselExampleIndicators" data-slide-to="${contadorBannerSKU-1}" class="<#if contadorBannerSKU - 1 == 0>active</#if>"></li>
30 </#if>
31 </#list>
32 </ol>
33 </#if>
34 <div class="carousel-inner">
35 <#list entries as entryBannerSKUBody>
36 <#assign renderer = entryBannerSKUBody.getAssetRenderer()>
37 <#assign docXml = saxReaderUtil.read(renderer.getArticle().getContent()) />
38 <#assign modelo = docXml.valueOf("//dynamic-element[@name='Modelo']/dynamic-content/text()") />
39 <#if modeloId == modelo>
40 <#assign contadorBannerSKUImg++>
41
42 <#assign titulo = docXml.valueOf("//dynamic-element[@name='Titulo']/dynamic-content/text()") />
43 <#assign texto = docXml.valueOf("//dynamic-element[@name='Texto']/dynamic-content/text()") />
44 <#assign externo = docXml.valueOf("//dynamic-element[@name='Externo']/dynamic-content/text()") />
45 <#assign enlace = docXml.valueOf("//dynamic-element[@name='Enlace']/dynamic-content/text()") />
46
47 <#assign journalArticle = renderer.getArticle()>
48 <#assign document = saxReaderUtil.read(journalArticle.getContent()) >
49 <#assign rootElement = document.getRootElement()>
50 <#assign xPathSelector1 = saxReaderUtil.createXPath("dynamic-element[@name='HOME01']")>
51 <#assign imgNews1 = xPathSelector1.selectSingleNode(rootElement).getStringValue()>
52 <#assign imgJson1 = jsonFactoryUtil.createJSONObject(imgNews1)>
53 <#assign imagen1 = "/documents/"+ imgJson1.groupId +"/" +imgJson1.fileEntryId +"/"+ imgJson1.name +"/"+imgJson1.uuid >
54
55 <#assign xPathSelector2 = saxReaderUtil.createXPath("dynamic-element[@name='HOME02']")>
56 <#assign imgNews2 = xPathSelector2.selectSingleNode(rootElement).getStringValue()>
57 <#assign imgJson2 = jsonFactoryUtil.createJSONObject(imgNews2)>
58 <#assign imagen2 = "/documents/"+ imgJson2.groupId +"/" +imgJson2.fileEntryId +"/"+ imgJson2.name +"/"+imgJson2.uuid >
59
60 <#assign xPathSelector3 = saxReaderUtil.createXPath("dynamic-element[@name='HOME03']")>
61 <#assign imgNews3 = xPathSelector3.selectSingleNode(rootElement).getStringValue()>
62 <#assign imgJson3 = jsonFactoryUtil.createJSONObject(imgNews3)>
63 <#assign imagen3 = "/documents/"+ imgJson3.groupId +"/" +imgJson3.fileEntryId +"/"+ imgJson3.name +"/"+imgJson3.uuid >
64
65 <#assign xPathSelector4 = saxReaderUtil.createXPath("dynamic-element[@name='HOME04']")>
66 <#assign imgNews4 = xPathSelector4.selectSingleNode(rootElement).getStringValue()>
67 <#assign imgJson4 = jsonFactoryUtil.createJSONObject(imgNews4)>
68 <#assign imagen4 = "/documents/"+ imgJson4.groupId +"/" +imgJson4.fileEntryId +"/"+ imgJson4.name +"/"+imgJson4.uuid >
69
70 <style>
71 .d-block.w-100.img-lg_${entryBannerSKUBody?counter}{
72 min-height: 530px;
73 }
74 .d-block.w-100.img-md_${entryBannerSKUBody?counter}{
75 min-height: 320px;
76 }
77 .d-block.w-100.img-sm_${entryBannerSKUBody?counter}{
78 min-height: 375px;
79 }
80 .d-block.w-100.img-xs_${entryBannerSKUBody?counter}{
81 min-height: 375px;
82 }
83 .img-lg_${entryBannerSKUBody?counter} {
84 display: flex !important;
85 width: 100%;
86 height: auto;
87 background-image: url("${imagen1}");
88 background-repeat: no-repeat;
89 background-size: cover;
90 background-position: center;
91 }
92
93 .img-md_${entryBannerSKUBody?counter} {
94 display: none !important;
95 }
96 .img-sm_${entryBannerSKUBody?counter} {
97 display: none !important;
98 }
99
100 .img-xs_${entryBannerSKUBody?counter} {
101 display: none !important;
102 }
103
104 @media only screen and (max-width: 1024px) {
105 .d-block.w-100.img-lg_${entryBannerSKUBody?counter}{
106 min-height: 450px;
107 }
108 }
109
110 @media only screen and (max-width: 795px) {
111 .img-lg_${entryBannerSKUBody?counter} {
112 display: none !important;
113 }
114 .img-md_${entryBannerSKUBody?counter} {
115 display: flex !important;
116 width: 100%;
117 height: auto;
118 background-image: url("${imagen1}");
119 background-repeat: no-repeat;
120 background-size: cover;
121 background-position: center;
122 }
123 .carousel {
124 min-height: 320px;
125 }
126 }
127
128 @media only screen and (max-width: 650px) {
129 .img-md_${entryBannerSKUBody?counter} {
130 display: none !important;
131 }
132 .img-sm_${entryBannerSKUBody?counter} {
133 display: flex !important;
134 width: 100%;
135 height: auto;
136 background-image: url("${imagen3}");
137 background-repeat: no-repeat;
138 background-size: cover;
139 background-position: center;
140 }
141 }
142
143 @media only screen and (max-width: 375px) {
144 .img-sm_${entryBannerSKUBody?counter} {
145 display: none !important;
146 }
147 .img-xs_${entryBannerSKUBody?counter} {
148 display: flex !important;
149 width: 100%;
150 height: auto;
151 background-image: url("${imagen4}");
152 background-repeat: no-repeat;
153 background-size: cover;
154 background-position: center;
155 }
156 }
157 </style>
158
159 <div class="carousel-item <#if contadorBannerSKUImg - 1 == 0>active</#if>">
160
161 <#if enlace?has_content>
162 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
163 <div class="d-block w-100 img-lg_${entryBannerSKUBody?counter}" ></div>
164 </a>
165 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
166 <div class="d-block w-100 img-md_${entryBannerSKUBody?counter}"></div>
167 </a>
168 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
169 <div class="d-block w-100 img-sm_${entryBannerSKUBody?counter}"></div>
170 </a>
171 <a href="${enlace}" target="<#if externo == 'true'>_blank<#else>_self</#if>">
172 <div class="d-block w-100 img-xs_${entryBannerSKUBody?counter}"></div>
173 </a>
174 <#else>
175 <div class="d-block w-100 img-lg_${entryBannerSKUBody?counter}"></div>
176 <div class="d-block w-100 img-md_${entryBannerSKUBody?counter}"></div>
177 <div class="d-block w-100 img-sm_${entryBannerSKUBody?counter}"></div>
178 <div class="d-block w-100 img-xs_${entryBannerSKUBody?counter}"></div>
179 </#if>
180
181
182 <#if titulo?has_content>
183 <div class="col-sm-12 col-sm-6 col-md-5 col-lg-4 banner-text">
184 <h3 class="h3-mb">${titulo}</h3>
185 <#if texto?has_content><p>${texto}</p></#if>
186 <#if enlace?has_content>
187 <div class="banner-btn">
188 <a href="${enlace}" class="btn btn-dodge" target="<#if externo == 'true'>_blank<#else>_self</#if>">Ver más</a>
189 </div>
190 </#if>
191 </div>
192 </#if>
193 </div>
194 </#if>
195 </#list>
196 </div>
197 <#if (contadorSKU > 1)>
198 <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
199 <i class="fas fa-angle-left"></i>
200 <span class="sr-only">Previous</span>
201 </a>
202 <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
203 <i class="fas fa-angle-right"></i>
204 <span class="sr-only">Next</span>
205 </a>
206 </#if>
207 </div>
208</#if>
Déjanos tus datos de contacto
(Contacto directo +51 952 924 516)