Fehler bei der Verarbeitung der Vorlage.
Java method "as.asac.template.tools.DLToolImpl.getDLFileEntryByPath(String)" threw an exception when invoked on as.asac.template.tools.DLToolImpl object "as.asac.template.tools.DLToolImpl@69c6997f"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign dlFileEntryTrack = dlTool.get...  [in template "37703#37743#1559015" at line 386, column 153]
----
1<#-- Services --> 
2<#assign assetEntryLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/> 
3<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/> 
4<#assign journalArticleResourceServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")/> 
5 
6<#-- Reserved vbles --> 
7<#assign title = .vars['reserved-article-title'].data> 
8<#assign articleId=.vars["reserved-article-id"].data /> 
9<#assign description=.vars["reserved-article-description"].data /> 
10<#assign smallImageUrl=.vars["reserved-article-small-image-url"].data /> 
11<#assign date=.vars["reserved-article-display-date"].data /> 
12<#assign request = .vars['request']> 
13 
14<#-- Init --> 
15<#assign assetEntry = journalTool.getAssetEntryByArticleId(groupId, articleId)> 
16<#assign journalArticle = journalTool.getJournalArticleByAssetEntry(assetEntry)> 
17<#assign articleURL = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent()> 
18<#assign articleSocialBookmarks = themeDisplay.getThemeSetting("article-social-bookmarks")!> 
19<#assign layoutSetBannerPath = layoutTool.getLayoutSetBannerPath(groupId, themeDisplay.getLayout().isPrivateLayout())!> 
20<#assign articleMainImageThumbnail3 = dlTool.getThumbnail(smallImageUrl, "3", layoutSetBannerPath)! /> 
21<#assign articleMainImageThumbnail1 = dlTool.getThumbnail(smallImageUrl, "1")! /> 
22<#assign ddmStructureNameNormalize = "template-${friendlyURLNormalizerTool.normalize(journalArticle.getDDMStructure().getName(localeUtil.getDefault()))}" /> 
23<#assign baseUrl = themeDisplay.getURLPortal()/> 
24 
25<#-- Build --> 
26<#if Nombre.data?has_content> 
27	<#assign title = Nombre.data> 
28</#if> 
29<#assign address = []> 
30<#if Contacto.Zona.data?has_content> 
31	<#assign address = address + [Contacto.Zona.data] /> 
32</#if> 
33	 
34<#-- KML --> 
35<#assign dlFileEntryKML = dlTool.getDLFileEntryByPath(TrazadoRuta.getData())!/> 
36<#assign document = "" /> 
37<#assign lookAtLongitude = ""/> 
38<#assign lookAtLatitude = ""/> 
39<#assign coordinates_all = "" /> 
40<#if validator.isNotNull(dlFileEntryKML)> 
41	<#assign document = saxReaderUtil.read(dlFileEntryKML.getContentStream())/> 
42	<#assign rootElement = document.getRootElement()/> 
43	<#assign xpath = saxReaderUtil.createXPath("//root:Camera/root:longitude", "root", "http://www.opengis.net/kml/2.2")/> 
44	<#assign lookAtLongitude = xpath.selectSingleNode(document)!> 
45	<#assign xpath = saxReaderUtil.createXPath("//root:Camera/root:latitude", "root", "http://www.opengis.net/kml/2.2")/> 
46	<#assign lookAtLatitude = xpath.selectSingleNode(document)!> 
47</#if> 
48 
49<#if validator.isNotNull(document) && validator.isNull(lookAtLongitude)> 
50	<#assign xpath = saxReaderUtil.createXPath("//root:LookAt/root:longitude", "root", "http://www.opengis.net/kml/2.2")/> 
51	<#assign lookAtLongitude = xpath.selectSingleNode(document)!> 
52</#if> 
53	 
54<#if validator.isNotNull(document) && validator.isNull(lookAtLatitude)> 
55	<#assign xpath = saxReaderUtil.createXPath("//root:LookAt/root:latitude", "root", "http://www.opengis.net/kml/2.2")/> 
56	<#assign lookAtLatitude = xpath.selectSingleNode(document)!> 
57</#if> 
58 
59<#-- En caso de que no haya ni lookAt ni camera --> 
60<#if validator.isNotNull(document) && (validator.isNull(lookAtLongitude) || validator.isNull(lookAtLatitude))> 
61	<#assign xpath = saxReaderUtil.createXPath("//root:Placemark/root:LineString/root:coordinates", "root", "http://www.opengis.net/kml/2.2")/> 
62	<#assign coordinates_all = xpath.selectSingleNode(document)!> 
63	<#assign coordinates_array = coordinates_all.data?split(" ")> 
64	<#assign coordinate_middle_pos = getterUtil.getInteger(coordinates_array?size/2)> 
65	<#assign coordinate_middle = coordinates_array[coordinate_middle_pos]?split(",")> 
66	<#assign lookAtLongitude = coordinate_middle[0]> 
67	<#assign lookAtLatitude = coordinate_middle[1]> 
68</#if> 
69 
70<#if validator.isNotNull(document) && validator.isNotNull(coordinates_all) > 
71	<#assign xpath = saxReaderUtil.createXPath("//root:Placemark/root:LineString/root:coordinates", "root", "http://www.opengis.net/kml/2.2")/> 
72	<#assign coordinates_all = xpath.selectSingleNode(document)!> 
73	<#assign coordinates_array = coordinates_all.getData()?split(" ")/> 
74	<#assign coordinates_start = coordinates_array[0]?split(",")/> 
75</#if> 
76 
77<#assign tramosAlternativosArray = []/> 
78 
79<#if Tramos.getSiblings()?size!=0> 
80 
81	<#list Tramos.getSiblings() as tramo> 
82		<#if tramo.TramoAlternativo.getData()=="true"> 
83			<#assign tramosAlternativosArray = tramosAlternativosArray + ["true"] /> 
84		<#else> 
85			<#assign tramosAlternativosArray = tramosAlternativosArray + [ "false" ] /> 
86		</#if> 
87	 
88	</#list> 
89 
90</#if> 
91 
92<#-- Id de los tramos --> 
93<#assign counter = 1> 
94<#assign count = 0> 
95 
96<#-- Obtener el nombre de los tramos --> 
97<#assign xpath = saxReaderUtil.createXPath("//root:LineString/ancestor::root:Placemark/root:name", "root", "http://www.opengis.net/kml/2.2")> 
98<#assign placemarksName = xpath.selectNodes(document)> 
99 
100<#assign tipoRuta = stringUtil.lowerCase(TipoRuta.getData())/> 
101<#assign iconTipoRuta = stringUtil.lowerCase(journalTool.getJournalArticleField(groupId, articleId, "TipoRuta", portal.getSiteDefaultLocale(groupId)))/> 
102 
103<article class="template ${ddmStructureNameNormalize}" role="article" itemscope itemtype="http://schema.org/TouristicAttraction"> 
104	 
105	<header class="article-header-wrapper row no-gutters"> 
106	     
107		<div class="article-header-container article-header-container-static"> 
108			<div class="container"> 
109				<div class="row no-gutters"> 
110					<div class="col-md-6"> 
111						<div class="article-image" style="background-image: url('${articleMainImageThumbnail3}')"> 
112							<img class="sr-only" src="${articleMainImageThumbnail3}" alt="${languageUtil.format(request,'go-to-x','image')} ${title}" itemprop="image"/> 
113						</div> 
114					</div> 
115					<div class="article-info-wrapper col-md-6"> 
116						<div class="article-info"> 
117						 
118							<h2 class="article-title" itemprop="name">${title}</h2> 
119							<div class="article-list-wrapper"> 
120															 
121								<ul class="article-list list-unstyled article-list-info"> 
122									<li class="article-list-item mb-4"> 
123										<span class="fas fa-map-marker-alt"> 
124											<span class="hide-accessible">${languageUtil.get(request,"address")}</span> 
125										</span>											 
126										<span class="field-wrapper" itemprop="address"> 
127											<span class="important"> 
128												<#assign concejos = []/> 
129												<#list Contacto.Concejos.getSiblings() as Item> 
130													<#if Item.data?has_content> 
131														<#assign concejos = [Item.data] /> 
132													</#if> 
133												</#list> 
134												${stringUtil.merge(concejos)} 
135											</span> 
136											<span class="text d-block">${stringUtil.merge(address)}</span> 
137										</span> 
138									</li> 
139								</ul> 
140								 
141								<div class="article-info-table article-info-table-fixed"> 
142									<div class="article-info-table-row"> 
143										<div class="article-info-table-cell"> 
144											<div class="article-list-wrapper"> 
145												<ul class="article-list list-unstyled article-list-info info-route"> 
146												 
147												<#if Contacto.Distancia.data?has_content> 
148													<li class="article-list-item"> 
149														<span class="fas fa-ruler-horizontal"> 
150															<span class="hide-accessible">${languageUtil.get(request,"infoasturias-distancia")}</span> 
151														</span> 
152														<span class="field-wrapper"> 
153															<span class="field">${languageUtil.get(request, "infoasturias-distancia")}:</span> 
154															<#list Contacto.Distancia.getSiblings() as Item> 
155																<span class="text btn btn-primary btn-thin text-capitalize"><span class="font-size-11 text-distance">${Item.data}</span> kms</span><#if Item_has_next> </#if>													 
156															</#list> 
157														</span> 
158													</li> 
159												</#if> 
160												 
161												<#if Contacto.Dificultad.data?has_content && tipoRuta!="coche"> 
162													<#assign dificultadMap = {  
163														"1": languageUtil.get(request,"infoasturias-dificultad-baja"),  
164														"2": languageUtil.get(request,"infoasturias-dificultad-media"),  
165														"3": languageUtil.get(request,"infoasturias-dificultad-alta") 
166														}  
167													/> 
168													<li class="article-list-item"> 
169														<span class="fas fa-layer-group"> 
170															<span class="hide-accessible">${languageUtil.get(request,"infoasturias-dificultad")}</span> 
171														</span> 
172														<span class="field-wrapper"> 
173															<span class="field">${languageUtil.get(request, "infoasturias-dificultad")}:</span> 
174															<span class="text"> 
175																<span>${dificultadMap[Contacto.Dificultad.data]}</span> 
176															</span>												 
177														</span> 
178													</li> 
179												</#if> 
180												 
181												<#if Contacto.Codigo.data?has_content> 
182													<li class="article-list-item"> 
183														<span class="fas fa-info"> 
184															<span class="hide-accessible">${languageUtil.get(request,"code")}</span> 
185														</span> 
186														<span class="field-wrapper"> 
187															<span class="field">${languageUtil.get(request, "code")}:</span> 
188															<span class="text"> 
189																<span>${Contacto.Codigo.data}</span> 
190															</span>												 
191														</span> 
192													</li> 
193												</#if> 
194												 
195												<#if Contacto.Altitud.data?has_content> 
196													<li class="article-list-item"> 
197														<span class="fas fa-ruler-vertical"> 
198															<span class="hide-accessible">${languageUtil.get(request,"metadata.Geographic.ALTITUDE")}</span> 
199														</span> 
200														<span class="field-wrapper"> 
201															<span class="field">${languageUtil.get(request, "metadata.Geographic.ALTITUDE")}:</span> 
202															<span class="text">${Contacto.Altitud.data}</span> 
203														</span> 
204													</li> 
205												</#if> 
206												 
207												<#if Contacto.Desnivel.data?has_content> 
208													<li class="article-list-item"> 
209														<span class="fas fa-chart-line"> 
210															<span class="hide-accessible">${languageUtil.get(request,"infoasturias-desnivel")}</span> 
211														</span> 
212														<span class="field-wrapper"> 
213															<span class="field">${languageUtil.get(request, "infoasturias-desnivel")}:</span> 
214															<span class="text">${Contacto.Desnivel.data} m.</span> 
215														</span> 
216													</li> 
217												</#if> 
218												</ul> 
219											</div> 
220										</div> 
221										<div class="article-info-table-cell"> 
222											<div class="article-list-wrapper"> 
223												<ul class="article-list list-unstyled article-list-info"> 
224													<#if Contacto.TiempoBTT.data?has_content> 
225														<li class="article-list-item"> 
226															<span class="fas fa-bicycle"> 
227																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-btt")}</span> 
228															</span> 
229															<span class="field-wrapper"> 
230																<span class="field">${languageUtil.get(request, "infoasturias-btt")}:</span> 
231																<span class="text">${Contacto.TiempoBTT.data}</span> 
232															</span> 
233														</li> 
234													</#if> 
235													 
236													<#if Contacto.TiempoAPie.data?has_content> 
237														<li class="article-list-item"> 
238															<span class="fas fa-shoe-prints"> 
239																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-a-pie")}</span> 
240															</span> 
241															<span class="field-wrapper"> 
242																<span class="field">${languageUtil.get(request, "infoasturias-a-pie")}:</span> 
243																<span class="text">${Contacto.TiempoAPie.data}</span> 
244															</span> 
245														</li> 
246													</#if> 
247													 
248													<#if Contacto.TiempoCoche.data?has_content> 
249														<li class="article-list-item"> 
250															<span class="fas fa-car"> 
251																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-coches")}</span> 
252															</span> 
253															<span class="field-wrapper"> 
254																<span class="field">${languageUtil.get(request, "infoasturias-coches")}:</span> 
255																<span class="text">${Contacto.TiempoCoche.data}</span> 
256															</span> 
257														</li> 
258													</#if> 
259													 
260													<#if Contacto.TiempoViasVerdes.data?has_content> 
261														<li class="article-list-item"> 
262															<span class="fas fa-route"> 
263																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-vias-verdes")}</span> 
264															</span> 
265															<span class="field-wrapper"> 
266																<span class="field">${languageUtil.get(request, "infoasturias-vias-verdes")}:</span> 
267																<span class="text">${Contacto.TiempoViasVerdes.data}</span> 
268															</span> 
269														</li> 
270													</#if> 
271													 
272													<#if Contacto.TiempoAscension.data?has_content> 
273														<li class="article-list-item"> 
274															<span class="fas fa-hiking"> 
275																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-ascension")}</span> 
276															</span> 
277															<span class="field-wrapper"> 
278																<span class="field">${languageUtil.get(request, "infoasturias-ascension")}:</span> 
279																<span class="text">${Contacto.TiempoAscension.data}</span> 
280															</span> 
281														</li> 
282													</#if> 
283												</ul> 
284											</div> 
285										</div> 
286									</div> 
287									<div class="article-info-table-row"> 
288										<div class="article-info-table-cell"> 
289											<div class="article-list-wrapper"> 
290												<ul class="article-list list-unstyled article-list-info"> 
291													<#if Contacto.SituacionGeografica.data?has_content> 
292														<li class="article-list-item"> 
293															<span class="fas fa-map-marked-alt"> 
294																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-situacion-geografica")}</span> 
295															</span> 
296															<span class="field-wrapper"> 
297																<span class="field">${languageUtil.get(request, "infoasturias-situacion-geografica")}:</span> 
298																<span class="text">${Contacto.SituacionGeografica.data}</span> 
299															</span> 
300														</li> 
301													</#if> 
302													 
303													<#if Contacto.PuntoDePartida.data?has_content> 
304														<li class="article-list-item"> 
305															<span class="fas fa-map-marker"> 
306																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-punto-de-partida")}</span> 
307															</span> 
308															<span class="field-wrapper"> 
309																<span class="field">${languageUtil.get(request, "infoasturias-punto-de-partida")}:</span> 
310																<span class="text">${Contacto.PuntoDePartida.data}</span> 
311															</span> 
312														</li> 
313													</#if> 
314													 
315													<#if TipoRuta.data?has_content> 
316														<li class="article-list-item hide"><#-- Se oculta por indicación de Noemí 27062022 --> 
317															<span class="fas fa-route"> 
318																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-tipo-de-ruta")}</span> 
319															</span> 
320															<span class="field-wrapper"> 
321																<span class="field">${languageUtil.get(request, "infoasturias-tipo-de-ruta")}:</span> 
322																<span class="text">${TipoRuta.data}</span> 
323															</span> 
324														</li> 
325													</#if> 
326													 
327													<#if Contacto.TipoDeRecorrido.data?has_content> 
328														<li class="article-list-item"> 
329															<span class="fas fa-route"> 
330																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-tipo-recorrido")}</span> 
331															</span> 
332															<span class="field-wrapper"> 
333																<span class="field">${languageUtil.get(request, "infoasturias-tipo-recorrido")}:</span> 
334																<span class="text">${Contacto.TipoDeRecorrido.data}</span> 
335															</span> 
336														</li> 
337													</#if> 
338												</ul> 
339											</div> 
340										</div> 
341										<div class="article-info-table-cell"> 
342											<div class="article-list-wrapper"> 
343												<ul class="article-list list-unstyled article-list-info"> 
344													<#if Folletos.Folleto.data?has_content> 
345														<#assign dlFileEntry = dlTool.getDLFileEntryByPath(Folletos.Folleto.data) /> 
346														<#if validator.isNotNull(dlFileEntry)> 
347															<#assign downloadURL = "/documents/${groupId}/${dlFileEntry.getUuid()}" /> 
348															<#assign ext = dlFileEntry.getExtension()/> 
349															<li class="article-list-item document document-${ext}"> 
350																<i class="far fa-file-pdf"></i> 
351																<span class="field-wrapper"> 
352																	<span class="field">${languageUtil.get(request, "visuality-issuu")}:</span> 
353																	<span class="text"> 
354																	<#list Folletos.Folleto.getSiblings() as Item> 
355																		<#assign dlFileEntry = dlTool.getDLFileEntryByPath(Item.data) /> 
356																		<#if validator.isNotNull(dlFileEntry)> 
357																			<#assign downloadURL = "/documents/${groupId}/${dlFileEntry.getUuid()}" /> 
358																			<a href="${downloadURL}" title='${dlFileEntry.getTitle()}' class="">${dlFileEntry.getTitle()}</a><#if Item_has_next>, </#if> 
359																		</#if> 
360																	</#list> 
361																	</span> 
362																</span>		 
363															</li> 
364														</#if> 
365													</#if>	 
366													 
367													<#if TrazadoRuta.data?has_content || TrazadoRutaGPX.data?has_content> 
368														<li class="article-list-item document"> 
369															<span class="far fa-file"> 
370																<span class="hide-accessible">${languageUtil.get(request,"infoasturias-trazado-de-la-ruta")}</span> 
371															</span> 
372															<span class="field-wrapper"> 
373																<span class="field">${languageUtil.get(request, "infoasturias-trazado-de-la-ruta")}:</span> 
374																<span class="text">												 
375																 
376																	<#assign tracks = [] /> 
377																	<#if TrazadoRuta.data?has_content> 
378																		<#assign tracks = tracks + [TrazadoRuta.data] /> 
379																	</#if> 
380																	<#if TrazadoRutaGPX.data?has_content > 
381																		<#assign tracks = tracks + [TrazadoRutaGPX.data] /> 
382																	</#if> 
383																	 
384																	<#if tracks?has_content > 
385																		<#list tracks as track> 
386																			<#assign dlFileEntryTrack = dlTool.getDLFileEntryByPath(track) /> 
387																			<#if validator.isNotNull(dlFileEntryTrack)> 
388																				<#assign downloadURLkml = "/documents/${groupId}/${dlFileEntryTrack.getUuid()}" /> 
389																				<#assign extKML = dlFileEntryTrack.getExtension()/> 
390																				<a href="${downloadURLkml}" class="${extKML}" title="${languageUtil.get(request,'infoasturias-download')} ${extKML}">${languageUtil.get(request,'infoasturias-download')} ${extKML}</a><#if track?has_next>, </#if> 
391																			</#if> 
392																		</#list> 
393																	</#if> 
394 
395																</span> 
396															</span>		 
397														</li> 
398													</#if> 
399												</ul> 
400											</div> 
401										</div> 
402									</div> 
403								</div> 
404							</div> 
405						</div> 
406					</div> 
407				</div> 
408			</div> 
409		</div>	  
410	</header> 
411	 
412	<div class="sheet sheet-lg"> 
413	 
414		 
415			<div class="article-great <#if validator.isNull(Informacion.Resumen.data)>hide</#if>"> 
416				<div class="route-resume-tracks-box hide"> 
417					<div class="route-resume-tracks"> 
418						<div class="route-resume-track-marker route-resume-track-marker-first"><div class="route-point-text"></div><div class="route-km-text">Km 0</div></div> 
419						<div class="route-resume-track-marker route-resume-track-marker-last"><div class="route-point-text"></div><div class="route-km-text">Km 0</div></div> 
420					</div> 
421				</div> 
422				<#if Informacion.Resumen.data?has_content> 
423					<p>${htmlUtil.extractText(Informacion.Resumen.data)}</p> 
424				</#if> 
425			</div> 
426		 
427		 
428			 
429		<#assign hasTab1 = Contacto.ContactoTexto.data?has_content || Informacion.InformacionTexto.data?has_content> 
430		<#assign hasTab2 = Informacion.TextoTramos.data?has_content || validator.isNotNull(Tramos.TramoAlternativo.data) || Tramos.OrigenDestino.data?has_content || Tramos.DistanciaTramo.data?has_content || Tramos.DescripcionTramo.data?has_content> 
431		<#assign hasTab3 = Geolocalizacion.Coordenadas.data?has_content || validator.isNotNull(TrazadoRuta.getData())> 
432		<#assign hasTab4 = Informacion.Itinerario.data?has_content> 
433		<#assign hasTab5 = Detalle.DetalleTexto.data?has_content || Detalle.DetalleImagen.data?has_content> 
434		<#assign showFirstTab = true> 
435		 
436		<div class="article-accordion accordion"> 
437			<#if Visualizador.Slide.getData()?has_content> 
438				<div class="slick article-slick article-section <#if Visualizador.Slide.getSiblings()?size==1>hide</#if>"> 
439					<#list Visualizador.Slide.getSiblings() as Slide> 
440						<#if validator.isNotNull(Slide.getData()) || validator.isNotNull(Slide.SlideUrl.getData())> 
441							<#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! /> 
442							<#assign slideThumbnail2 = dlTool.getThumbnailByJSON(Slide.data, "2")! /> 
443							<#assign slidePath = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! /> 
444							<#assign slideUrl = Slide.SlideUrl.data /> 
445							<#assign dataMap = "" /> 
446 
447							<#if slideUrl?has_content> 
448 
449								<#assign slideTitle = "${languageUtil.get(request, 'video')} ${Slide?index}" /> 
450								<#if Slide.SlideTitulo.data?has_content> 
451									<#assign slideTitle = Slide.SlideTitulo.data />   
452								</#if> 
453 
454								<#-- Youtube --> 
455								<#assign slideUrl = stringUtil.replace(slideUrl, 'watch?v=', 'embed/') /> 
456								<#assign slideThumbnail2 = stringUtil.replace(slideUrl, 'www', 'img') /> 
457								<#assign slideThumbnail2 = stringUtil.replace(slideThumbnail2, 'embed', 'vi') /> 
458								<#assign slideThumbnail2 = '${slideThumbnail2}/mqdefault.jpg' /> 
459 
460								<#-- Vimeo --> 
461								<#if slideUrl?contains("vimeo")> 
462									<#assign slideUrl = stringUtil.replace(slideUrl, 'http://vimeo.com/', 'https://player.vimeo.com/video/') /> 
463									<#assign slideVimeoId = stringUtil.extractLast(slideUrl, 'https://player.vimeo.com/video/') /> 
464									<#if slideVimeoId?has_content> 
465										<#assign slideVimeoJsonPath = 'http://vimeo.com/api/v2/video/${slideVimeoId}.json' /> 
466										<#assign slideVimeoJsonContent = getUrlContent.getContent(slideVimeoJsonPath)! /> 
467										<#if slideVimeoJsonContent?has_content> 
468											<#assign slideVimeoJsonArray = jsonFactoryUtil.createJSONArray(slideVimeoJsonContent) /> 
469											<#assign slideVimeoJsonItem = slideVimeoJsonArray.get(0) /> 
470											<#assign slideThumbnail2 = slideVimeoJsonItem.thumbnail_medium /> 
471										</#if> 
472									</#if> 
473								</#if> 
474 
475								<div id="slide-${Slide?index}" class="slide"> 
476									<a class="card card-simple card-video" href="#" onclick="javascript: event.preventDefault(); showDialogIframe('${slideUrl}', '${slideTitle}', 800, 600, 'videoPopup', 'videoPopupIframe');" title="${slideTitle}"> 
477										<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');"> 
478										<img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}"> 
479									</a> 
480								</div> 
481							<#else> 
482								<#assign slideTitle = "${languageUtil.get(request, 'image')} ${Slide?index}" /> 
483								<#if Slide.SlideTitulo.data?has_content> 
484									<#assign slideTitle = Slide.SlideTitulo.data />   
485								</#if> 
486 
487								<div class="slide"> 
488									<a class="card card-simple lightbox" href="${slidePath}" title="${slideTitle}"> 
489										<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');"> 
490										<img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}"> 
491									</a> 
492								</div> 
493							</#if> 
494						</#if> 
495					</#list> 
496				</div> 
497			</#if> 
498		 
499			<#if hasTab1> 
500				<div id="tab1" class="article-section accordion-item"> 
501					<a href="#tabContent1" id="tabHeading" class="d-block border-0 tab <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent1" role="button"><h3 class="h3 accordion-header">${languageUtil.get(request,'info')}</h3></a> 
502					<div id="tabContent1" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading"> 
503						<#if Contacto.ContactoTexto.data?has_content> 
504							${Contacto.ContactoTexto.data} 
505						</#if> 
506						<#if Informacion.InformacionTexto.data?has_content> 
507							${Informacion.InformacionTexto.data} 
508						</#if> 
509					</div> 
510				</div> 
511				<#assign showFirstTab = false>				   
512			</#if> 
513 
514			<#if hasTab2> 
515				<div id="tab2" class="article-section accordion-item"> 
516					<a href="#tabContent2" id="tabHeading2" class="d-block border-0 tab <#if !showFirstTab>collapsed</#if>"  aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent2" role="button"><h3 class="h3 accordion-header">${languageUtil.get(request,'infoasturias-recorrido')}</h3></a> 
517					<div id="tabContent2" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading2"> 
518						<#list Informacion.TextoTramos.getSiblings() as Item> 
519							<#if validator.isNotNull(Item.data)> 
520								<p>${Item.data}</p> 
521							</#if> 
522						</#list> 
523						<#list Tramos.getSiblings() as Item> 
524							<h4 id="track-${Item?index+1}" class="h4 mt-5 route-${Item?index+1}"> 
525								<#if tipoRuta=="coche">${languageUtil.get(request,"day")} ${Item?index+1}:</#if> ${Item.OrigenDestino.data} 
526								<span class="route-distance btn btn-link float-right text-capitalize"> 
527									${Item.DistanciaTramo.data} 
528								</span> 
529							</h4>    
530							 
531							<#if getterUtil.getBoolean(Item.TramoAlternativo.getData()) && getterUtil.getBoolean(Item.TramoAlternativo.getData())> 
532								<ul class="article-list list-unstyled article-list-info"> 
533									<li class="article-list-item"> 
534										<span class="fas fa-route"> 
535											<span class="hide-accessible">${languageUtil.get(request,"infoasturias-tramo-alternativo")}</span> 
536										</span> 
537										<span class="field-wrapper"> 
538											<span class="field">${languageUtil.get(request, "infoasturias-tramo-alternativo")}:</span> 
539										</span> 
540									</li> 
541								</ul> 
542							</#if> 
543							 
544							<#if Item.DescripcionTramo.data?has_content> 
545								${Item.DescripcionTramo.data} 
546							</#if> 
547						</#list> 
548					</div> 
549				</div> 
550				<#assign showFirstTab = false> 
551			</#if>	 
552			 
553			<#if hasTab3>				 
554				<#assign showFirstTab = true>				  
555				<#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) /> 
556				<div id="tab3" class="article-section accordion-item"> 
557					<a href="#tabContent3" id="tabHeading3" class="d-block border-0 tab <#if !showFirstTab>collapsed</#if>"  aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent3" role="button"><h3 class="h3 accordion-header">${languageUtil.get(request,'map')}</h3></a> 
558					<div id="tabContent3" class="article-section-content accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading3"> 
559						<script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script> 
560						<script type="text/javascript"> 
561						<#assign xpath = saxReaderUtil.createXPath("//root:StyleMap", "root", "http://www.opengis.net/kml/2.2")/> 
562						<#assign style_maps = xpath.selectNodes(document)/> 
563 
564						var style_mapsJS = {}; 
565						var line_stylesJS = {}; 
566 
567						<#list style_maps as style_map> 
568							<#assign style_map_styleurl_path = "${style_map.getUniquePath()}/*[name()='Pair']/*[name()='styleUrl']"/> 
569							<#assign style_map_styleurl_node = style_map.selectSingleNode(style_map_styleurl_path)/> 
570							<#assign nodeText = style_map_styleurl_node.getText()/> 
571							style_mapsJS['${style_map.selectSingleNode("${style_map.getUniquePath()}/@id").getText()}'] = '${nodeText?substring(1)}'; 
572						</#list> 
573						<#assign xpath = saxReaderUtil.createXPath("//root:Style", "root", "http://www.opengis.net/kml/2.2")/> 
574						<#assign line_styles = xpath.selectNodes(document)/> 
575									 
576						<#list line_styles as line_style> 
577							<#assign line_style_color_path = "${line_style.getUniquePath()}/*[name()='LineStyle']/*[name()='color']"/> 
578							<#assign line_style_color_node = line_style.selectSingleNode(line_style_color_path)!/> 
579							<#if validator.isNotNull(line_style_color_node)> 
580								line_stylesJS['${line_style.selectSingleNode("${line_style.getUniquePath()}/@id").getText()}'] = {color: '#${line_style_color_node.getText()?substring(6,8)}${line_style_color_node.getText()?substring(4,6)}${line_style_color_node.getText()?substring(2,4)}', opacity: 0x${line_style_color_node.getText()?substring(0,2)}/0xFF}; 
581							</#if> 
582						</#list> 
583						</script> 
584 
585 
586						<script type="text/javascript"> 
587						var route = {};//Ruta 
588						var totalDistance = 0; 
589						<#list placemarksName as name> 
590							 
591							var nombreTramo = "${name.getText()}"; 
592								nombreTramo = nombreTramo.replace("Tramo ",""); 
593								nombreTramo = nombreTramo.replace(/[–]/gi,'-'); 
594								nombreTramo = nombreTramo.trim(); 
595								 
596 
597							var tramo = {};//Datos del tramo 
598							var coordinatesJS = [];//Coordenadas del tramo 
599 
600							<#-- Identificador color del Tramo --> 
601							<#assign xpath = saxReaderUtil.createXPath("//root:LineString/ancestor::root:Placemark[root:name='${name.getText()}']/root:styleUrl", "root", "http://www.opengis.net/kml/2.2")/> 
602							<#assign styleUrl = xpath.selectSingleNode(document)!> 
603 
604							<#-- Obtener los puntos de ruta para dibujarlos --> 
605							<#assign xpath = saxReaderUtil.createXPath("//root:LineString/ancestor::root:Placemark[root:name='${name.getText()}']/root:LineString/root:coordinates", "root", "http://www.opengis.net/kml/2.2")/> 
606							<#assign coordinates = xpath.selectSingleNode(document)!> 
607							<#-- Hacemos un split para separar las coordenadas --> 
608							<#assign arrayCoordinates = coordinates.getText()?split(" ")/> 
609							<#assign start=""/> 
610							<#assign end=""/> 
611							<#list arrayCoordinates as coordinate> 
612							<#assign splitCoordinates = coordinate?split(",")/> 
613							 
614							 
615							<#if splitCoordinates?size gte 2>								 
616								coordinatesJS.push(new L.LatLng(${splitCoordinates[1]}, ${splitCoordinates[0]})); 
617								<#if validator.isNull(start)> 
618									<#assign start = "${splitCoordinates[1]} +',' + ${splitCoordinates[0]}">									 
619								</#if> 
620								<#assign end = "${splitCoordinates[1]} +',' + ${splitCoordinates[0]}"> 
621							</#if> 
622								 
623							</#list> 
624							tramo['start'] = ${start}; 
625							tramo['end'] = ${end}; 
626							 
627							var distance = 0; 
628							var previousPoint=""; 
629 
630							tramo['name'] = nombreTramo; 
631							tramo['lineStyle'] =  line_stylesJS[style_mapsJS['${styleUrl.getText()?substring(1)}']]; 
632							tramo['coordinates'] = coordinatesJS; 
633 
634							coordinatesJS.forEach(function (latLng) { 
635								if (previousPoint) { 
636									distance += previousPoint.distanceTo(latLng); 
637
638								previousPoint = latLng; 
639							}); 
640 
641							tramo['distance'] = (distance/1000).toFixed(1)/1; 
642							totalDistance +=(distance/1000).toFixed(1)/1; 
643 
644							<#if tramosAlternativosArray?size!=0> 
645								tramo['isAlternative'] = ${tramosAlternativosArray[count]}; 
646							<#else> 
647								tramo['isAlternative'] = false; 
648							</#if> 
649							 
650 
651							route['${counter}'] = tramo; 
652 
653							<#assign counter = counter +1/> 
654							<#assign count = count +1/> 
655 
656						</#list> 
657						</script>						 
658						<div class="article-section-content"> 
659							<div id="article-map-wrapper-${articleId}" class="article-map-wrapper">  
660								<div id="article-map-content-${articleId}" style="width: 100%; height: 400px; z-index:1"><!-- MAP --></div> 
661								<div class="article-map-form">  
662									<div class="name important">${title}</div> 
663									<div class="gps"><span class="label">GPS:</span> <span class="value important" itemprop="geo">${lookAtLatitude.getText()}, ${lookAtLongitude.getText()}</span></div> 
664									<form action="https://maps.google.es/maps" method="get" target="_blank"> 
665										<input type="hidden" name="daddr" value="${lookAtLatitude.getText()}, ${lookAtLongitude.getText()}"> 
666										<label for="saddrText"><span class="label hide-accessible">${languageUtil.get(request,'infoasturias-insert-from')}: </span></label> 
667										<label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label> 
668										<input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
669										<input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
670										<button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} &raquo;</button> 
671									</form> 
672								</div> 
673							</div> 
674							 
675							<script type="text/javascript"> 
676								AUI().ready('aui-base', function(A){ 
677									var lookAt = new L.LatLng(${lookAtLatitude.getText()}, ${lookAtLongitude.getText()});//Cámara 
678									 
679									<#if validator.isNotNull (Geolocalizacion.Coordenadas.data)> 
680										lookAt =  new L.LatLng(${Geolocalizacion.Coordenadas.data});//contenido 
681									</#if> 
682									const mapContent = new L.Map('article-map-content-${articleId}', { center: lookAt, zoom: 10 }); 
683									const osm = new L.TileLayer('https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}'); 
684									 
685 
686									mapContent.addLayer(osm); 
687									 
688									//definir iconos inicio y fin tramo 
689									var startMarker; 
690									var middleMarker; 
691									var endMarker; 
692									var colorSeries = ["e9ecef","f5f7f9","fff"]; 
693									var colorSeriesSelector = 0; 
694									var generalDistance =0; 
695									 
696									var endIconTheme = '/o/turismo-asturias-theme/images/icons/routes/Icono_Fin_Ruta_${iconTipoRuta}_min.png'; 
697									var endIcon = L.icon({ 
698										iconUrl: endIconTheme, 
699										iconSize:     [27, 35], 
700										iconAnchor:   [13, 35], 
701										iconShadow:   [0,0], 
702										popupAnchor:  [0, -30] 
703									}); 
704									var middleIconTheme = '/o/turismo-asturias-theme/images/icons/routes/gmaps-marker-icon-grey.png'; 
705									var middleIcon = L.icon({ 
706										iconUrl: middleIconTheme, 
707										iconSize:     [20, 28], 
708										iconAnchor:   [10, 28], 
709										iconShadow:   [0,0], 
710										popupAnchor:  [0, -30] 
711									}); 
712 
713									var startIconTheme = '/o/turismo-asturias-theme/images/icons/routes/Icono_Inicio_Ruta_${iconTipoRuta}_min.png'; 
714									var startIcon = L.icon({ 
715										iconUrl: startIconTheme, 
716										iconSize:     [27, 35], 
717										iconAnchor:   [13, 35], 
718										iconShadow:   [0,0], 
719										popupAnchor:  [0, -30] 
720									});	 
721									 
722									for (const ruta in route) { 
723										var stretch = route[ruta]; 
724										 
725										var name = stretch.name; 
726										var nameArray = name.split("-"); 
727										var coordinates = stretch.coordinates; 
728										var distance =''+ stretch.distance; 
729										var isStrechAlternative = stretch.isAlternative; 
730										var lineStyle = stretch.lineStyle || { color: '#3c3be3', opacity: 1 }; 
731										var startCoordinates = stretch.start.split(","); 
732										var endCoordinates = stretch.end.split(","); 
733										 
734										var track_node = A.Node.create('<div class="route-resume-track ' + (ruta==1?'route-resume-track-first':'') + '"><a class="route-resume-track-link" href="#track-'+(ruta)+'"></a></div>'); 
735										var track_size = ((distance/totalDistance*100) + '%'); 
736										track_node.setStyles({width: track_size, backgroundColor: '#' + colorSeries[colorSeriesSelector]}); 
737										track_node.appendTo(A.one('.route-resume-tracks')); 
738 
739										 
740										if(distance) 
741											A.one('.template .route-'+ ruta + ' .route-distance').text(distance.replace(".",",") + ' Kms'); 
742										 
743										if(!isStrechAlternative) 
744											generalDistance = generalDistance + stretch.distance; 
745											 
746										if(Object.keys(route).length == 1){ 
747											A.one('.route-resume-track-marker-first .route-point-text').text(nameArray[0]); 
748											A.one('.route-resume-track-marker-last .route-km-text').text('Km ' + distance.replace(".",",")); 
749											A.one('.route-resume-track-marker-last .route-point-text').text(nameArray[nameArray.length-1]); 
750											startMarker = L.marker([startCoordinates[0],startCoordinates[1]], {icon: startIcon}).bindPopup(nameArray[0]).addTo(mapContent); 
751											endMarker = L.marker([endCoordinates[0],endCoordinates[1]], {icon: endIcon}).bindPopup(nameArray.length-1).addTo(mapContent); 
752
753										else{ 
754											var track_point =A.Node.create('<div class="route-resume-point"></div>'); 
755											if(ruta==1){ 
756												A.one('.route-resume-track-marker-first .route-point-text').text(nameArray[0]); 
757												var track_point_text = A.Node.create('<div class="route-point-text">' + nameArray[1] + '</div><div class="route-km-text">Km '+distance+'</div>'); 
758												startMarker = L.marker([startCoordinates[0],startCoordinates[1]], {icon: startIcon}).bindPopup(nameArray[0]).addTo(mapContent); 
759												 
760												if(ruta == Object.keys(route).length-1 && route[Object.keys(route).length].isAlternative) 
761													endMarker = L.marker([endCoordinates[0],endCoordinates[1]], {icon: endIcon}).bindPopup(nameArray.length-1).addTo(mapContent); 
762												else 
763													middleMarker = L.marker([endCoordinates[0],endCoordinates[1]], {icon: middleIcon}).bindPopup(nameArray.length-1).addTo(mapContent); 
764													 
765											track_point_text.appendTo(track_point); 
766											track_point.appendTo(A.one('.route-resume-tracks')); 
767
768											else if(ruta ==  Object.keys(route).length){ 
769												A.one('.route-resume-track-marker-last .route-km-text').text('Km ' + distance.replace(".",",")); 
770												A.one('.route-resume-track-marker-last .route-point-text').text(nameArray[nameArray.length-1]); 
771												 
772												if(isStrechAlternative){ 
773													middleMarker = L.marker([endCoordinates[0],endCoordinates[1]], {icon: middleIcon}).bindPopup(nameArray[nameArray.length-1]).addTo(mapContent); 
774													var alternativetrack_node = A.Node.create('<li class="article-list-item distance-wrapper"><span class="fas fa-ruler-horizontal"><span class="hide-accessible"> ${languageUtil.get(request, "infoasturias-tramo-alternativo")}</span></span><span class="field-wrapper"><span class="field">${languageUtil.get(request, "infoasturias-tramo-alternativo")}: </span><span class="text btn btn-secondary btn-thin text-lowercase"><span class="font-size-11 text-white text-distance-alternative">'+distance +'</span> kms</span></span></li>'); 
775													alternativetrack_node.appendTo(A.one('.template .info-route')); 
776
777												else{ 
778													endMarker = L.marker([endCoordinates[0],endCoordinates[1]], {icon: endIcon}).bindPopup(nameArray[nameArray.length-1]).addTo(mapContent); 
779
780
781											else{ 
782											var track_point_text = A.Node.create('<div class="route-point-text">' + nameArray[nameArray.length-1] + '</div><div class="route-km-text">Km '+distance+'</div>'); 
783											track_point_text.appendTo(track_point); 
784											track_point.appendTo(A.one('.route-resume-tracks')); 
785											middleMarker = L.marker([startCoordinates[0],startCoordinates[1]], {icon: middleIcon}).bindPopup(nameArray[0]).addTo(mapContent); 
786
787
788										 
789										var polyline = new L.Polyline(coordinates, { 
790											color: '' + lineStyle.color, 
791											opacity: lineStyle.opacity 
792										}); 
793										polyline.bindPopup(name).addTo(mapContent); 
794										 
795									 
796									colorSeriesSelector++; 
797									if(colorSeriesSelector == 3) 
798									colorSeriesSelector = 0; 
799									 
800									}//fin rutas 
801									 
802									if(generalDistance) 
803										A.one('.template .text-distance').text(''+ Math.round(generalDistance * 100) / 100); 
804 
805									//Contributor 
806									L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
807										attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.' 
808									}).addTo(mapContent); 
809									 
810								}); //AUI.ready 
811							</script> 
812						</div> 
813						<#if validator.isNotNull(dlFileEntryKML) && tipoRuta!="coche"> 
814							 
815							<#assign params = { 
816								"displayStyle":"ddmTemplate_435797", 
817								"displayStyleGroupId":"${themeDisplay.getCompanyGroupId()}", 
818								"portletId": portletTool.getPortletId(request),  
819								"articleId":"${articleId}", 
820								"dlFileEntryuuId":"${dlFileEntryKML.getUuid()}" 
821							}> 
822							<#assign portletURL = portletTool.createURL(request, "as_asac_adtvisor_portlet_AdtVisorDialogPortlet", themeDisplay.getPlid(), "RENDER_PHASE", "pop_up", params) /> 
823							<div class="button-row button-row-center my-3"> 
824							<button type="button" class="btn btn-primary btn-small text-center text-uppercase" onclick="event.preventDefault(); showDialogIframe('${portletURL}','${languageUtil.get(request,'profile')}', '800px', '','elevationProfile', 'elevationProfileIframe');"> 
825								${languageUtil.get(request,'infoasturias-ver-perfil-elevacion')} 
826							</button> 
827							</div> 
828							 
829						</#if>								 
830					</div> 
831				</div> 
832				<#assign showFirstTab = false> 
833			</#if> 
834			 
835			<#if hasTab4> 
836				<div id="tab4" class="article-section accordion-item hide"> 
837					<a href="#tabContent4" id="tabHeading4" class=" tab <#if !showFirstTab>collapsed</#if>"  aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent4" role="button"><h3 class="h3 accordion-header">${languageUtil.get(request,'infoasturias-itinerario')}</h3></a> 
838					<div id="tabContent4" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading4"> 
839						<#list Informacion.Itinerario.getSiblings() as Item> 
840							<#if Item.data?has_content> 
841								<div class=" itinerario <#if !Item?is_last>pb-5</#if>"><p>${Item.data}</p></div> 
842							</#if> 
843						</#list> 
844					</div> 
845				</div> 
846				<#assign showFirstTab = false> 
847			</#if>	 
848 
849			<#if hasTab5> 
850				<div id="tab5" class="article-section accordion-item"> 
851					<a href="#tabContent5" id="tabHeading5" class="tab <#if !showFirstTab>collapsed</#if>"  aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent5" role="button"><h3 class="h3 accordion-header">${languageUtil.get(request,'detail')}</h3></a> 
852					<div id="tabContent5" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading5"> 
853						<#assign htmlGallery = journalTool.getHTMLGallery(Detalle.DetalleImagen.getSiblings(), 3, "gallery-thumbs") /> 
854						 
855						<#if Detalle.DetalleTexto.data?has_content> 
856							${Detalle.DetalleTexto.data} 
857						</#if> 
858						 
859						<#if validator.isNotNull(htmlGallery)>    
860							<section class="image-gallery"> 
861							<h4 class="h4 pb-0">${languageUtil.get(locale, "image-gallery")}</h4> 
862							${htmlGallery} 
863							</section> 
864						</#if> 
865					</div> 
866				</div> 
867				<#assign showFirstTab = false> 
868			</#if> 
869		</div> 
870		<#if Informacion.Observaciones.data?has_content> 
871			<div class="article-border"> 
872				${Informacion.Observaciones.data} 
873			</div> 
874		</#if> 
875	</div> 
876	 
877	<#-- Related --> 
878	<#assign relatedJournalArticles = assetTool.getRelatedJournalArticlesApproved(assetEntry)/> 
879	<#if validator.isNotNull(relatedJournalArticles) && relatedJournalArticles?size gt 0> 
880		<div class="article-related portlet-background-grey-container"> 
881			<div class="container"> 
882				<h3 class="title-section">${languageUtil.get(request,'related-assets')}</h3> 
883				<div class="slick article-related-slick"> 
884					<#list relatedJournalArticles as currentJournalArticle> 
885						<#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/> 
886							<div class="slide"> 
887								<a class="card background card-background-9-14"  href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}"> 
888									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');"> 
889										<img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}"> 
890										<span class="card-body"> 
891											<span class="card-title">${currentJournalArticle.getTitle(locale)}</span> 
892										</span> 
893									</span> 
894								</a> 
895							</div> 
896					</#list> 
897				</div> 
898			</div> 
899		</div> 
900	</#if> 
901	 
902	<#-- Nearby --> 
903	<#assign classTypeIds = [598853,582814,625593,623117,609431,593783]> 
904	<#assign assetsNearJournalArticles = assetNearTool.getNearJournalArticles(themeDisplay.getScopeGroupId(), assetEntry.getEntryId(), 50.0, classTypeIds, 25)! /> 
905	<#if validator.isNotNull(assetsNearJournalArticles) && assetsNearJournalArticles?size gt 0> 
906		<div class="article-nearby portlet-container-margin"> 
907			<div class="container"> 
908				<div class="article-nearby-container"> 
909					<h3 class="title-section">${languageUtil.get(request,'infoasturias-near-here')}</h3> 
910					<div class="slick article-nearby-slick"> 
911						<#list assetsNearJournalArticles as currentJournalArticle> 
912							<#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/> 
913							<div class="slide"> 
914								<a class="card" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}"> 
915									<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');"> 
916										<img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}"> 
917										<span class="card-hover"> 
918											<span class="card-text">${currentJournalArticle.getDescription(locale)}</span> 
919										</span> 
920									</span> 
921									<span class="card-body"> 
922										<span class="card-title">${currentJournalArticle.getTitle(locale)}</span> 
923										<span class="card-subtitle"> 
924											<span class="d-block">${currentJournalArticle.getVersion()} Kms</span> 
925											<span class="d-block">${journalTool.getCategoriesNames(groupId, currentJournalArticle.getArticleId(), locale, ["Concejos"])}</span> 
926										</span> 
927									</span> 
928								</a> 
929							</div> 
930						</#list> 
931					</div> 
932				</div> 
933			</div> 
934		</div> 
935	</#if> 
936</article>