Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> country  [in template "12187455#12187494#3138569" at line 59, column 50]

----
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: ${country}  [in template "12187455#12187494#3138569" at line 59, column 48]
----
1<style> 
2@media(max-width: 990px){ 
3  .desktop-buttons{ 
4    display:none!important; 
5
6   
7
8 
9.desktop-buttons{ 
10	padding: 2%; 
11
12 
13</style> 
14 
15<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>																   
16<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
17<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") /> 
18<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") /> 
19 
20<#assign currentArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 
21<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() /> 
22<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
23<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
24<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) /> 
25 
26<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
27 
28<div class="background-color--gray pb-5"> 
29    <section class="detail__banner"> 
30        <div class="detail__banner--image"> 
31            <#if sep_imagen_cabecera.imagen_cabecera.getData()?? && sep_imagen_cabecera.imagen_cabecera.getData() != ""> 
32                <img alt="${sep_imagen_cabecera.imagen_cabecera.getAttribute("alt")}" data-fileentryid="${sep_imagen_cabecera.imagen_cabecera.getAttribute("fileEntryId")}" src="${sep_imagen_cabecera.imagen_cabecera.getData()}" /> 
33            </#if> 
34        </div> 
35 
36        <#assign categories = currentArticleAssetEntry.getCategories() > 
37 
38        <#if categories?? && (categories?size > 0) > 
39            <#list categories as categoryElement> 
40                <#if categoryElement.getPath(locale)?contains("Country") || categoryElement.getPath(locale)?contains("Pais") > 
41                    <#assign country =  categoryElement.getTitle(locale) /> 
42                <#elseif categoryElement.getPath(locale)?contains("work") || categoryElement.getPath(locale)?contains("construccion") > 
43                    <#assign typeOfWork =  categoryElement.getName() /> 
44                </#if> 
45            </#list> 
46        </#if> 
47 
48        <div class="container"> 
49            <div class="detail__banner--category"> 
50                <div class="detail__banner--category-icon"><span class="fcc-i_${createStyleIcon(typeOfWork)}"></span></div>             
51                <#--  breadcrum  --> 
52                <div class="detail__banner--category-breadcrumb">             
53                    <@breadcrum/>      
54                </div>        
55            </div> 
56             
57            <p class="detail__banner--title">${.vars['reserved-article-title'].data}</p> 
58 
59            <p class="detail__banner--country">${country}</p> 
60        </div> 
61 
62        <div class="detail__banner--featured"> 
63            <div class="container"> 
64                <div class="row"> 
65                    <#if DatosDestacados?? && DatosDestacados.getSiblings()?has_content > 
66                        <#list DatosDestacados.getSiblings() as datoDestacado> 
67                            <div class="col-12 col-sm-3 item"> 
68                                <p class="detail__banner--featured-data">${datoDestacado.TextoSuperior.getData()}</p> 
69                                <p class="detail__banner--featured-unit">${datoDestacado.TextoInferior.getData()}</p> 
70                            </div> 
71                        </#list> 
72 
73                    </#if> 
74                </div> 
75            </div> 
76        </div>     
77 
78    </section> 
79 
80 
81    <#--  <p class="detail__slider--text d-lg-none">${.vars['reserved-article-description'].data} </p>  --> 
82    <section class="detail__slider container"> 
83        <div class="detail__slider--text d-lg-none"> 
84            ${.vars['reserved-article-description'].data} 
85        </div> 
86        <#if sep_galeria_medios?? && sep_galeria_medios.getSiblings()?has_content >     
87            <div class="slick-container"> 
88                <div class="slick__pagination d-none d-lg-block"> 
89                    ${.vars['reserved-article-description'].data} 
90                    <!-- Add Pagination --> 
91                    <p class="slick-fraction"></p> 
92                    <!-- Add Progress bar --> 
93                    <div class="slick-progress"> 
94                        <div class="progress"> 
95                            <div class="progress-bar" role="progressbar" aria-valuenow="" aria-valuemin="0" aria-valuemax="100"></div> 
96                        </div> 
97                    </div> 
98                </div> 
99                <div class="slick-wrapper"> 
100 
101                    <ul class="slick-active-slide"> 
102                        <#list sep_galeria_medios.getSiblings() as galeria> 
103                            <#if galeria.galeria_medios?? && galeria.galeria_medios.data?has_content > 
104                                <li class="slick-slide"> 
105                                    <#if galeria.galeria_medios.data?contains('.tif/') || galeria.galeria_medios.data?contains('.TIF/') > 
106                                        <a title="<@liferay.language_format arguments="${galeria.alt_galeria_medios.data}" key="show-x" />" href="${galeria.galeria_medios.data&imageThumbnail=1}" target="_blank"> 
107                                            <img src="${galeria.galeria_medios.data&imageThumbnail=1}" alt="${galeria.alt_galeria_medios.data}"/> 
108                                        </a> 
109                                    <#else>                     
110                                        <#assign imagen = galeria.galeria_medios.data /> 
111 
112                                        <#if (imagen?has_content)> 
113                                            <#assign imagenMap = imagen?eval /> 
114                                            <#assign imagenGroupId = imagenMap["groupId"]?number /> 
115                                            <#assign imagenUuid = imagenMap["uuid"] />                             
116                                        </#if> 
117                                         
118                                        <#assign urlImage = "" /> 
119                                        <#if (imagen?has_content) && (imagenGroupId != 0)> 
120                                            <#assign dlElement = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(imagenUuid, imagenGroupId) />	 
121                                            <#assign urlImage = portalUtil.getPortalURL(renderRequest) + '/documents/' + dlElement.getRepositoryId() + '/' + dlElement.getFolderId() + '/' + htmlUtil.escapeURL(dlElement.getTitle()) +'/' + dlElement.getUuid() + '?' + dlElement.getVersion() />									 
122                                        </#if>                       
123 
124                                        <img src="${urlImage}" alt="${galeria.alt_galeria_medios.data}"/> 
125                                         
126                                    </#if> 
127                                </li> 
128                            </#if> 
129                        </#list> 
130                    </ul> 
131                     
132                    <ul class="slick-nav"> 
133                        <#list sep_galeria_medios.getSiblings() as galeria> 
134                            <#if galeria.galeria_medios?? && galeria.galeria_medios.data?has_content > 
135                                <li class="slick-slide"> 
136                                    <#if galeria.galeria_medios.data?contains('.tif/') || galeria.galeria_medios.data?contains('.TIF/') > 
137                                        <a title="<@liferay.language_format arguments="${galeria.alt_galeria_medios.data}" key="show-x" />" href="${galeria.galeria_medios.data&imageThumbnail=1}" target="_blank"> 
138                                            <img src="${galeria.galeria_medios.data&imageThumbnail=1}" alt="${galeria.alt_galeria_medios.data}"/> 
139                                        </a> 
140                                    <#else>                     
141                                        <#assign imagen = galeria.galeria_medios.data /> 
142 
143                                        <#if (imagen?has_content)> 
144                                            <#assign imagenMap = imagen?eval /> 
145                                            <#assign imagenGroupId = imagenMap["groupId"]?number /> 
146                                            <#assign imagenUuid = imagenMap["uuid"] />                             
147                                        </#if> 
148                                         
149                                        <#assign urlImage = "" /> 
150                                        <#if (imagen?has_content) && (imagenGroupId != 0)> 
151                                            <#assign dlElement = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(imagenUuid, imagenGroupId) />	 
152                                            <#assign urlImage = portalUtil.getPortalURL(renderRequest) + '/documents/' + dlElement.getRepositoryId() + '/' + dlElement.getFolderId() + '/' + htmlUtil.escapeURL(dlElement.getTitle()) +'/' + dlElement.getUuid() + '?' + dlElement.getVersion() />									 
153                                        </#if>                       
154 
155                                        <img src="${urlImage}" alt="${galeria.alt_galeria_medios.data}"/> 
156                                         
157                                    </#if> 
158                                </li> 
159                            </#if> 
160                        </#list> 
161                    </ul> 
162                </div> 
163                <div class="slick__pagination-mobile d-lg-none"> 
164                    <p class="slick-fraction"></p> 
165                </div> 
166 
167            </div> 
168        </#if> 
169                <div class="desktop-buttons d-flex justify-content-between"> 
170                        <button class="slick-prev slick-arrow" aria-label="Previous" type="button" style="">Previous</button> 
171                        <button class="slick-next slick-arrow" aria-label="Next" type="button" style="">Next</button> 
172        </div> 
173    </section> 
174 
175 
176    <section class="detail__paragraph container">    
177        <div class="row"> 
178            <div class="col-sm-8 col-sm-offset-2"> 
179                ${descripcion.getData()} 
180            </div> 
181        </div> 
182    </section> 
183 
184    <#--  FICHAS DESTACADAS  --> 
185    <#if validator.isNotNull(FichasDestacadas.getSiblings()[0].TituloDestacado.getData()) > 
186        <#if FichasDestacadas?? && FichasDestacadas.getSiblings()?has_content > 
187            <section class="detail__featuredTag container"> 
188                <div class="row"> 
189                    <#list FichasDestacadas.getSiblings() as fichaDestacada> 
190                        <div class="col-4"> 
191                            <div class="detail__featuredTag-item"> 
192 
193                                <#if fichaDestacada.Icono.getData()?? && fichaDestacada.Icono.getData() != ""> 
194                                    <img alt="${fichaDestacada.Icono.getAttribute("alt")}" data-fileentryid="${fichaDestacada.Icono.getAttribute("fileEntryId")}" src="${fichaDestacada.Icono.getData()}" /> 
195                                </#if> 
196 
197                                <#if fichaDestacada.TituloDestacado?? && fichaDestacada.TituloDestacado.getData()?? && fichaDestacada.TituloDestacado.getData() != ""> 
198                                    <p class="detail__featuredTag-item--title">${fichaDestacada.TituloDestacado.getData()} </p> 
199                                </#if> 
200 
201                                <#if fichaDestacada.DescripcionDestacado?? && fichaDestacada.DescripcionDestacado.getData()?? && fichaDestacada.DescripcionDestacado.getData() != ""> 
202                                    <p>${fichaDestacada.DescripcionDestacado.getData()} </p> 
203                                </#if> 
204                            </div> 
205                        </div> 
206                    </#list> 
207                </div> 
208            </section> 
209        </#if> 
210    </#if> 
211        <section class="detail__paragraph container">    
212            <div class="row"> 
213                <div class="col-sm-8 col-sm-offset-2"> 
214                    <#if validator.isNotNull(HTMLLibre1.getData()) > 
215                    <#--  HTML LIBRE  --> 
216                    ${HTMLLibre1.getData()} 
217                     </#if> 
218                    <#--  CITA  --> 
219                    <div class="detail__paragraph--quote">  
220                        <#if existCitas(Cita) > 
221                            <span class="detail__paragraph--quote-icon fcc-opinion_ocio"></span> 
222                            <#list Cita.getSiblings() as cita> 
223                             
224                                <#if cita.Autor?? && cita.Autor.getData()?? && cita.Autor.getData() != ""> 
225                                    <p class="author">${cita.Autor.getData()} </p> 
226                                </#if> 
227 
228                                <#if cita.Texto?? && cita.Texto.getData()?? && cita.Texto.getData() != ""> 
229                                    <p>${cita.Texto.getData()} </p> 
230                                </#if> 
231                            </#list> 
232 
233                        </#if> 
234                    </div> 
235                     
236                    <#if validator.isNotNull(HTMLLibre2.getData()) > 
237                    <#--  HTML LIBRE  --> 
238                    ${HTMLLibre2.getData()} 
239                    </#if> 
240 
241                </div> 
242            </div> 
243        </section> 
244     
245</div> 
246 
247 
248 
249<#if (currentArticleRelatedLinks?size > 0)>       
250    <section class="related__projects container-fluid"> 
251        <h2>${languageUtil.get(locale, "construccion-tpl.related.projects")}</h2>         
252        <div class="related__projects--wrapper"> 
253            <#list currentArticleRelatedLinks as related_entry> 
254                <div class="related__projects-slide"> 
255                    <#assign relatedAssetEntryId = related_entry.getEntryId2() /> 
256                    <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) /> 
257                    <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() /> 
258                    <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey) /> 
259                     
260                    <#assign document = saxReaderUtil.read(relatedArticle.getContentByLocale(locale.toString())) /> 
261                    <#assign rootElement = document.getRootElement() /> 
262                    <#assign xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@name='imagen']/dynamic-content") /> 
263                    <#assign imagenRelatedArticulo = xPathSelector.selectSingleNode(rootElement).getStringValue() /> 
264                     
265                    <#assign imagenRelatedArticuloFileEntryId = 0 /> 
266                    <#if (imagenRelatedArticulo?has_content)> 
267                        <#assign imagenRelatedArticuloMap = imagenRelatedArticulo?eval /> 
268                        <#assign imagenRelatedArticuloFileEntryId = imagenRelatedArticuloMap["fileEntryId"]?number /> 
269                    </#if> 
270 
271                    <#assign relatedJournalArticleResourcePrimKey = relatedArticle.getResourcePrimKey() /> 
272                    <#assign relatedJournalArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", relatedJournalArticleResourcePrimKey) /> 
273                    <#assign relatedCategoryList = relatedJournalArticleAssetEntry.getCategories() > 
274 
275                     
276 
277                    <#assign categories = currentArticleAssetEntry.getCategories() > 
278 
279                    <#if relatedCategoryList?? && (relatedCategoryList?size > 0) > 
280                        <#list relatedCategoryList as categoryElement> 
281                            <#if categoryElement.getPath(locale)?contains("Country") || categoryElement.getPath(locale)?contains("Pais") > 
282                                <#assign relatedCountry =  categoryElement.getTitle(locale) />         
283                             <#elseif categoryElement.getPath(locale)?contains("work") || categoryElement.getPath(locale)?contains("construccion") > 
284                                <#assign relatedTypeOfWork =  categoryElement.getName() /> 
285                            </#if> 
286                        </#list> 
287                    </#if> 
288 
289                    <#--  Enlace proyecto relacionado  --> 
290                    <a href="${themeDisplay.getURLPortal()}${themeDisplay.getURLCurrent()[0..themeDisplay.getURLCurrent()?index_of("/-/")+2]}${relatedArticle.getUrlTitle()}"></a> 
291                     
292                    <div class="related__projects-slide--img"> 
293                        <span class="related__projects-slide--icon fcc-i_${createStyleIcon(relatedTypeOfWork)}"></span> 
294                        <#if (imagenRelatedArticuloFileEntryId != 0)> 
295                            <#assign dlElement = dlFileEntryLocalService.getDLFileEntry(imagenRelatedArticuloFileEntryId) /> 
296                            <img src="${themeDisplay.getPortalURL()}/documents/${dlElement.getRepositoryId()}/${dlElement.getFolderId()}/${dlElement.getTitle()}/${dlElement.getUuid()}?${dlElement.getVersion()}" alt="${imagenRelatedArticuloMap["alt"]}"> 
297                        <#else> 
298                            <#assign  imagen_listado_defecto = layout.getGroup().getExpandoBridge().getAttribute("ciudad-fcc-construccion-listado") /> 
299                            <img src="${imagen_listado_defecto}" alt="${relatedArticle.getTitle()}"> 
300                        </#if>    
301                    </div> 
302                    <#--  Titulo y pais proyecto relacionado  --> 
303                    <div class="related__projects-slide--text"> 
304                        <p class="related__projects-slide--title">${relatedArticle.getTitle()} </p> 
305                        <p>${relatedCountry}</p> 
306                    </div>  
307                </div> 
308            </#list> 
309        </div> 
310    </section> 
311</#if> 
312 
313<#macro breadcrum> 
314 
315    <#assign layout_actual = layout /> 
316    <#assign breadcrumbList = [] /> 
317 
318    <#list 0..10 as i> 
319		<#assign parentId = layout_actual.getParentPlid() />		 
320		<#if parentId == 0 > 
321			<#break> 
322		<#else> 
323			<#assign layout_actual = layoutLocalService.getLayout(parentId) /> 
324			<#assign breadcrumbList = breadcrumbList + [layout_actual] />			 
325		</#if>  
326	</#list> 
327 
328    <#assign size = breadcrumbList?size - 1/> 
329			 
330	<#list breadcrumbList?reverse as breadcrumb>	         
331        <p>${breadcrumb.getName(locale)}</p>		         
332        <#--<#assign completeUrl = portalUtil.getLayoutFullURL(breadcrumb, themeDisplay) /> 
333        <li><a href="${completeUrl}">${breadcrumb.getName(locale)}</a></li>-->			 
334	</#list> 
335 
336</#macro> 
337 
338<#function createStyleIcon name> 
339    <#return name?replace("á", "a")?replace("é","e")?replace("í","i")?replace("ó","o")?replace("ú","u")?replace(" ","")?lower_case > 
340</#function> 
341 
342<#function existCitas Cita> 
343    <#if Cita?? && Cita.getSiblings()?has_content > 
344        <#list Cita.getSiblings() as cita>         
345            <#if cita.Autor?? && cita.Autor.getData()?? && cita.Autor.getData() != ""> 
346                <#return true> 
347            </#if> 
348 
349            <#if cita.Texto?? && cita.Texto.getData()?? && cita.Texto.getData() != ""> 
350                <#return true> 
351            </#if> 
352        </#list> 
353    </#if> 
354    <#return false> 
355</#function> 
356        <script> 
357$('.slick-prev').on('click', function(){   
358var slideIndex = $('.slick-active').attr('data-slick-index'); 
359var newind = parseInt(slideIndex) - 1; 
360$('.slick-active-slide').slick("slickGoTo", parseInt(newind)); 
361}); 
362$('.slick-next').on('click', function(){   
363var slideIndex = $('.slick-active').attr('data-slick-index'); 
364var newind = parseInt(slideIndex) + 1; 
365$('.slick-active-slide').slick("slickGoTo", parseInt(newind)); 
366}); 
367 
368</script>