Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> serviceLocator.findService("it.inera.structure.service.StructureService")  [in template "20099#20135#33814" at line 2, column 29]

----
Tip: If the failing expression is known to be 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 structureService = serviceLoc...  [in template "20099#20135#33814" at line 2, column 1]
----
1<#--ATTRATTORE 09022024--> 
2<#assign structureService = serviceLocator.findService("it.inera.structure.service.StructureService")> 
3<#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 
4<#assign attrattoreStructureId = structureService.getStructureAttrattoreId()> 
5<#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 
6<#assign itinerarioStructureId = structureService.getStructureItinerarioId()> 
7 
8<#-- GESTIONE RALATED ASSETS IMPORTS--> 
9<#assign journalArticleConverter = serviceLocator.findService("it.inera.journalarticleconverter.service.JournalArticleConverter")> 
10<#assign searchService = serviceLocator.findService("it.inera.structure.search.service.SearchService")> 
11<#-- FINE GESTIONE RALATED ASSETS IMPORTS--> 
12 
13<#assign elasticService = serviceLocator.findService("it.inera.elastic.service.ElasticService")> 
14<#assign journalArticleId = .vars['reserved-article-id'].data/> 
15 
16<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
17<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
18<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
19 
20<#assign vocabularyIdUmbria = structureService.getVocabularyIdByVocabularyName("Vocabolario Umbria") > 
21<#assign vocabularyIdTerritori = structureService.getVocabularyIdByVocabularyName("Territori") > 
22 
23<#if coordinate_principali.getData()?has_content && coordinate_principali.getData()?trim?length gt 0 > 
24	<#assign coordinatePrincipaliJson = coordinate_principali.getData()?eval > 
25	<#if coordinatePrincipaliJson.latitude?has_content && coordinatePrincipaliJson.latitude?trim?length gt 0 > 
26		<#assign latitude = coordinatePrincipaliJson.latitude?c > 
27	</#if> 
28	<#if coordinatePrincipaliJson.longitude?has_content && coordinatePrincipaliJson.longitude?trim?length gt 0 > 
29		<#assign longitude = coordinatePrincipaliJson.longitude?c > 
30	</#if> 
31<#else> 
32	<#assign latitude = "" > 
33	<#assign longitude = "" > 
34</#if> 
35 
36<#assign currentArticle = journalArticleLocalService.getArticle(groupId, journalArticleId) /> 
37 
38<#-- GESTIONE ASSET LINGUA DI DEFAULT --> 
39<#assign currentObjectDefaultLanguage = journalArticleConverter.getAttrattore(currentArticle, localeUtil.getDefault())> 
40 
41<#-- GESTIONE RALATED ASSETS VALORIZZAZIONE ARRAY--> 
42<#assign currentObject = journalArticleConverter.getItinerario(currentArticle, themeDisplay.getLocale())> 
43<#assign relatedAssets = currentObject.getDirectRelatedAssets()> 
44<#assign relatedResults = []> 
45<#if relatedAssets?? && relatedAssets?has_content> 
46	<#assign relatedResult = searchService.getResponse(relatedAssets, themeDisplay.getLocale(), null, themeDisplay)> 
47	<#if relatedResult?? && relatedResult?has_content> 
48		<#assign relatedResults = relatedResult.getData()> 
49	</#if> 
50</#if> 
51<#-- GESTIONE RALATED ASSETS VALORIZZAZIONE ARRAY--> 
52 
53<#assign titolo1 = "" /> 
54<#assign testo1 = "" /> 
55 
56<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("titolo_fascia_1")?has_content> 
57	<#assign titolo1_custom_field = currentArticle.getExpandoBridge().getAttribute("titolo_fascia_1") /> 
58	<#list titolo1_custom_field?keys as key> 
59		<#if key == locale> 
60			<#assign titolo1 = titolo1_custom_field?values[key_index] /> 
61		</#if> 
62	</#list> 
63</#if> 
64 
65<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("testo_fascia_1")?has_content> 
66	<#assign testo1_custom_field = currentArticle.getExpandoBridge().getAttribute("testo_fascia_1") /> 
67	<#list testo1_custom_field?keys as key> 
68		<#if key == locale> 
69			<#assign testo1 = testo1_custom_field?values[key_index] /> 
70		</#if> 
71	</#list> 
72</#if> 
73 
74<#assign titolo2 = "" /> 
75<#assign testo2 = "" /> 
76 
77<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("titolo_fascia_2")?has_content> 
78	<#assign titolo2_custom_field = currentArticle.getExpandoBridge().getAttribute("titolo_fascia_2") /> 
79	<#list titolo2_custom_field?keys as key> 
80		<#if key == locale> 
81			<#assign titolo2 = titolo2_custom_field?values[key_index] /> 
82		</#if> 
83	</#list> 
84</#if> 
85 
86<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("testo_fascia_2")?has_content> 
87	<#assign testo2_custom_field = currentArticle.getExpandoBridge().getAttribute("testo_fascia_2") /> 
88	<#list testo2_custom_field?keys as key> 
89		<#if key == locale> 
90			<#assign testo2 = testo2_custom_field?values[key_index] /> 
91		</#if> 
92	</#list> 
93</#if> 
94 
95<#assign titolo3 = "" /> 
96<#assign testo3 = "" /> 
97 
98<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("titolo_fascia_3")?has_content> 
99	<#assign titolo3_custom_field = currentArticle.getExpandoBridge().getAttribute("titolo_fascia_3") /> 
100	<#list titolo3_custom_field?keys as key> 
101		<#if key == locale> 
102			<#assign titolo3 = titolo3_custom_field?values[key_index] /> 
103		</#if> 
104	</#list> 
105</#if> 
106 
107<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("testo_fascia_3")?has_content> 
108	<#assign testo3_custom_field = currentArticle.getExpandoBridge().getAttribute("testo_fascia_3") /> 
109	<#list testo3_custom_field?keys as key> 
110		<#if key == locale> 
111			<#assign testo3 = testo3_custom_field?values[key_index] /> 
112		</#if> 
113	</#list> 
114</#if> 
115 
116<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() /> 
117<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 
118<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 
119 
120<#assign categoryList = assetCategoryLocalService.getAssetEntryAssetCategories(currentArticleAssetEntryId) > 
121 
122<#assign categoryListIds = [] > 
123<#assign municipalityName = "" > 
124<#assign municipalityNames = [] > 
125<#assign municipalityNamesString = "" > 
126<#assign territoryNameString = "" > 
127<#assign isTerritorio = false > 
128 
129<#list categoryList as category> 
130	<#assign categoryListIds = categoryListIds + [category.getCategoryId()]> 
131</#list> 
132 
133<#list categoryList as category> 
134	<#if vocabularyIdTerritori == category.getVocabularyId() > 
135		<#assign municipalityName = category.getTitle(themeDisplay.getLanguageId()) > 
136 
137		<#assign childCategories = assetCategoryLocalService.getChildCategories(category.getCategoryId()) > 
138		<#if childCategories?has_content> 
139			<#assign territoryNameString = category.getTitle(themeDisplay.getLanguageId())> 
140			<#list childCategories as curChildCategory> 
141				<#assign isTerritorio = true > 
142				<#assign municipalityNameC = curChildCategory.getTitle(themeDisplay.getLanguageId()) > 
143				<#if curChildCategory?counter != 1 || municipalityNamesString?has_content> 
144					<#assign municipalityNamesString = municipalityNamesString + "," + municipalityNameC> 
145				<#else> 
146					<#assign municipalityNamesString = municipalityNamesString + municipalityNameC> 
147				</#if> 
148				<#assign municipalityNames = municipalityNames + [municipalityNameC]> 
149			</#list> 
150		<#else> 
151			<#assign municipalityNames = municipalityNames + [municipalityName]> 
152			<#if municipalityNamesString?has_content> 
153				<#assign municipalityNamesString = municipalityNamesString + "," + municipalityName> 
154			<#else> 
155				<#assign municipalityNamesString = municipalityNamesString + municipalityName> 
156			</#if> 
157		</#if> 
158	</#if> 
159</#list> 
160 
161<#if !municipalityName?has_content> 
162	<#if comune.getSiblings()?has_content> 
163		<#list comune.getSiblings() as cur_comune> 
164			<#assign municipalityName = cur_comune.getData() > 
165			<#break> 
166		</#list> 
167	</#if> 
168</#if> 
169 
170<#if isTerritorio> 
171	<#assign municipalityName = territoryNameString > 
172</#if> 
173 
174 
175<#assign isgu = structureService.isGroupUmbria(themeDisplay)> 
176<#assign sitiESottositiCategories = ""> 
177<#if !isgu> 
178	<#assign sitiESottositiCategories = structureService.getSiteCategoryIdsByVocabularyName(themeDisplay, "Siti-e-sottositi")> 
179</#if> 
180 
181<#assign attrattoriNeiDintorni = []> 
182<#assign itinerariNeiDintorni = []> 
183 
184<#if isgu> 
185	<#assign attrattoriNeiDintorni = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), attrattoreStructureKey, attrattoreStructureId?c, locale, "12", null , null, journalArticleId, null, null, null) /> 
186	<#assign itinerariNeiDintorni = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), itinerarioStructureKey, itinerarioStructureId?c, locale, "6", null , null, journalArticleId, null, null, null) /> 
187<#else> 
188	<#assign attrattoriNeiDintorni = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), attrattoreStructureKey, attrattoreStructureId?c, locale, "12", null , sitiESottositiCategories, journalArticleId, null, null, null) /> 
189	<#assign itinerariNeiDintorni = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), itinerarioStructureKey, itinerarioStructureId?c, locale, "6", null , sitiESottositiCategories, journalArticleId, null, null, null) /> 
190</#if> 
191 
192<#assign widthBannerImg = propsUtil.get("image.scale.fullpage") /> 
193<#assign widthSliderImg = propsUtil.get("image.slider.testobarra.height") /> 
194<#assign tomBaseImagePath = propsUtil.get("tom.base.image.url") /> 
195<#assign widthCardImg = propsUtil.get("image.scale.allpage") /> 
196 
197<#assign urlBanner = immagine_banner.getData() > 
198<#assign testAlternativoImmagineBanner = testo_alternativo_immagine_banner.getData() > 
199<#attempt> 
200	<#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getImmagineBanner()?has_content> 
201		<#assign urlBanner = currentObjectDefaultLanguage.getImmagineBanner().getUrl() > 
202	</#if> 
203	<#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getTestoAlternativoImmagineBanner()?has_content> 
204		<#assign testAlternativoImmagineBanner = currentObjectDefaultLanguage.getTestoAlternativoImmagineBanner() > 
205	</#if> 
206	<#recover> 
207		<#assign urlBanner = immagine_banner.getData() > 
208		<#assign testAlternativoImmagineBanner = testo_alternativo_immagine_banner.getData() > 
209</#attempt> 
210 
211<#if !testAlternativoImmagineBanner?? || !testAlternativoImmagineBanner?trim?has_content> 
212	<#if titolo.getData()?? && titolo.getData()?has_content> 
213		<#assign testAlternativoImmagineBanner = "Titolo: "+ titolo.getData()> 
214	</#if> 
215</#if> 
216 
217<div class="container-fluid"> 
218	<div class="row"> 
219		<div class="header-block header-block-1 padding-top-em-5 padding-bottom-em-5 header-block-image-main"> 
220			<img class="bg" src="${urlBanner}?width=${widthBannerImg}" alt="${testAlternativoImmagineBanner}"> 
221			<div class="container title title-main"> 
222				<div class="row"> 
223					<div class="col-12"> 
224					</div> 
225				</div> 
226			</div> 
227		</div> 
228		<div class="map map-container map-container-header hidden"> 
229			<div class="map-content"> 
230				<div class="leaflet-interactive-map map-summary-results" id="header-map" data-results="${themeDisplay.getPortalURL()}/o/geolocation/get-positions?articleId=${journalArticleId}" data-config="{&quot;clustering&quot;:true}"></div> 
231			</div> 
232		</div> 
233	</div> 
234</div> 
235 
236<#assign titleParentCategory = ""> 
237<#assign titleCategory = ""> 
238<#attempt> 
239	<#list categoryList as category> 
240		<#if vocabularyIdUmbria == category.getVocabularyId() > 
241			<#assign titleCategory = category.getTitle(themeDisplay.getLocale())> 
242			<#assign parentCategoryId = category.getParentCategoryId()> 
243			<#if parentCategoryId?? && parentCategoryId?has_content> 
244				<#assign pc = assetCategoryLocalService.getCategory(parentCategoryId) > 
245				<#if pc?? && pc?has_content> 
246					<#assign titleParentCategory = pc.getTitle("it_IT")> 
247				</#if> 
248			</#if> 
249			<#if titleCategory?? && titleCategory?has_content> 
250			<#--				<span class="hidden" id="tagmanager-item_category">${titleParentCategory}</span>--> 
251			<#--				<span class="hidden" id="tagmanager-item_category2">${titleCategory}</span>--> 
252				<span class="hidden" id="tagmanager_init_pagegroup">${titleParentCategory}</span> 
253				<span class="hidden" id="tagmanager_init_pagecategory">${titleCategory}</span> 
254			</#if> 
255		</#if> 
256	</#list> 
257	<#recover> 
258</#attempt> 
259 
260<div class="container-fluid bg-white"> 
261	<div class="row"> 
262		<article class="container bridge bg-white translate-top-md-rem-5 translate-top-lg-rem-10"> 
263			<div class="row"> 
264				<div class="col-12"> 
265					<div class="text-left link-back-container margin-left-rem-1"><a style="color:#919191;" class="link-1 link-back margin-top-em-2 padding-left-rem-1" id="backLink" href="#"><i class="im im-angle-left"></i><span class="hidden display-inline-lg"><@liferay.language key="label.indietro" /></span></a></div> 
266					<div class="text-center padding-top-em-2"> 
267						<div style="color:#919191;" class="link-1 link-toggle-map" data-target="#header-map" data-inactive="<@liferay.language key="label.visualizza.sulla.mappa" />" data-active="<@liferay.language key="label.visualizza.foto" />"><@liferay.language key="label.visualizza.sulla.mappa" /></div> 
268					</div> 
269					<div class="link-tripplanner-container"> 
270						<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
271						<a data-id="${journalArticleId}" class="link link-tripplanner link-tripplanner-extended link-tripplanner-top-right margin-right-em-1 padding-right-rem-1" href="${currentUrl}" data-tom="false"> 
272							<i class="far fa-heart text-red"></i> 
273							<i class="fas fa-heart text-red" style="display:none"></i> 
274							<span class="label hidden display-inline-lg"><@liferay.language key="label.aggiungi.al.mio.viaggio" /></span> 
275						</a> 
276					</div> 
277					<div class="hidden infos"> 
278						<div class="hidden" id="tagmanager_item_"> 
279							<span id="tagmanager_item_id">${currentArticleAssetEntryId}</span> 
280							<span id="tagmanager_item_category">${titleParentCategory}</span> 
281							<span id="tagmanager_item_name">${titolo.getData()}</span> 
282							<span id="tagmanager_item_list_name"></span> 
283							<span id="tagmanager_item_list_id"></span> 
284							<span id="tagmanager_item_brand">${titleParentCategory}</span> 
285							<span id="tagmanager_index">1</span> 
286						</div> 
287					</div> 
288 
289				</div> 
290				<div class="col-12 col-md-10 offset-md-1"> 
291					<div class="text-block text-block-center"> 
292 
293						<h1 class="title-2 margin-top-em-0">${titolo.getData()}</h1> 
294						<div class="text text-block-left padding-top-em-1">${descrizione.getData()}</div> 
295					</div> 
296				</div> 
297			</div> 
298		</article> 
299	</div> 
300</div> 
301 
302 
303<#if descrizione_immagine?? && descrizione_immagine.getSiblings()?has_content && descrizione_immagine.getSiblings()?size gt 0 && descrizione_immagine.getSiblings()[0].immagine.getData()?? && descrizione_immagine.getSiblings()[0].immagine.getData()?has_content> 
304	<div class="container-fluid bg-white"> 
305		<div class="row"> 
306			<div class="carousel-container carousel-no-ctrl transparent margin-top-md-em-minus-4 margin-top-lg-em-minus-9 margin-bottom-em-1 tns-overflow-show carousel-image-slide carousel-draggable"> 
307				<div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{&quot;autoWidth&quot;:true,&quot;items&quot;:2,&quot;autoplay&quot;:false,&quot;responsive&quot;:{&quot;768&quot;:{&quot;items&quot;:3},&quot;992&quot;:{&quot;items&quot;:4}}}"> 
308					<#if descrizione_immagine?? && descrizione_immagine.getSiblings()?has_content> 
309					<#-- immagini della document library presenti --> 
310						<#list descrizione_immagine.getSiblings() as cur_descrizione_immagine> 
311							<div class="item-with-caption"> 
312 
313								<#assign linkImmagine = ""> 
314								<#if cur_descrizione_immagine.immagine.getData()?contains("?")> 
315									<#assign linkImmagine = cur_descrizione_immagine.immagine.getData() + "&width=" + widthSliderImg > 
316								<#else> 
317									<#assign linkImmagine = cur_descrizione_immagine.immagine.getData() + "?width=" + widthSliderImg > 
318								</#if> 
319 
320								<img class="slide-image" src="${linkImmagine}" alt="${cur_descrizione_immagine.testo_alternativo.getData()}"> 
321								<#if cur_descrizione_immagine.didascalia.getData()?? && cur_descrizione_immagine.didascalia.getData()?has_content && cur_descrizione_immagine.didascalia.getData()?trim?length gt 0 && cur_descrizione_immagine.didascalia.getData()?trim != "null"> 
322									<p class="caption">${cur_descrizione_immagine.didascalia.getData()}</p> 
323								</#if> 
324							</div> 
325						</#list> 
326					</#if> 
327				</div> 
328			</div> 
329		</div> 
330	</div> 
331<#else> 
332	<#attempt> 
333		<#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getImmagini()?has_content> 
334			<div class="container-fluid bg-white"> 
335				<div class="row"> 
336					<div class="carousel-container carousel-no-ctrl transparent margin-top-md-em-minus-4 margin-top-lg-em-minus-9 margin-bottom-em-1 tns-overflow-show carousel-image-slide carousel-draggable"> 
337						<div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{&quot;autoWidth&quot;:true,&quot;items&quot;:2,&quot;autoplay&quot;:false,&quot;responsive&quot;:{&quot;768&quot;:{&quot;items&quot;:3},&quot;992&quot;:{&quot;items&quot;:4}}}"> 
338							<#list currentObjectDefaultLanguage.getImmagini() as imm> 
339								<div class="item-with-caption"> 
340									<#if imm.getImmagine()?? && imm.getImmagine()?has_content && imm.getImmagine().getUrl()?? && imm.getImmagine().getUrl()?has_content> 
341										<img class="slide-image" src="${imm.getImmagine().getUrl()}?width=${widthSliderImg}" alt="${imm.getTestoAlternativo()}"> 
342										<#if imm.getDidascalia()?? && imm.getDidascalia()?has_content && imm.getDidascalia()?trim?length gt 0 && imm.getDidascalia()?trim != "null"> 
343											<p class="caption">${imm.getDidascalia()}</p> 
344										</#if> 
345									</#if> 
346								</div> 
347							</#list> 
348						</div> 
349					</div> 
350				</div> 
351			</div> 
352		</#if> 
353		<#recover> 
354 
355	</#attempt> 
356</#if> 
357 
358<div class="container-fluid bg-white"> 
359	<div class="row"> 
360		<div class="container"> 
361			<div class="row"> 
362				<div class="col-12 col-md-10 offset-md-1"> 
363					<div class="text-block text-block-center"> 
364						<div class="text text-block-left"> 
365							${descrizione_due.getData()} 
366						</div> 
367 
368						<#if accessibilita.getData()?? && accessibilita.getData()?has_content && accessibilita.getData()?trim?length gt 0 && accessibilita.getData()?trim != "null"> 
369							<div class="text text-block-left"> 
370								<strong>Accessibilità</strong> 
371								${accessibilita.getData()} 
372							</div> 
373						</#if> 
374 
375						<#if sicurezza.getData()?? && sicurezza.getData()?has_content && sicurezza.getData()?trim?length gt 0 && sicurezza.getData()?trim != "null"> 
376							<div class="text text-block-left"> 
377								<strong>Sicurezza</strong> 
378								${sicurezza.getData()} 
379							</div> 
380						</#if> 
381 
382						<#assign showdates = false> 
383 
384						<#if descrizione_orario.getSiblings()?has_content> 
385							<#list descrizione_orario.getSiblings() as cur_descrizione_orario> 
386								<#if cur_descrizione_orario.getData()?? && cur_descrizione_orario.getData()?has_content && cur_descrizione_orario.getData()?trim?length gt 0 && cur_descrizione_orario.getData()?trim != "null"> 
387									<#if cur_descrizione_orario.orario_apertura.getData()?? && cur_descrizione_orario.orario_apertura.getData()?has_content && cur_descrizione_orario.orario_apertura.getData()?trim?length gt 0 && cur_descrizione_orario.orario_apertura.getData()?trim != "null"> 
388										<#assign showdates = true> 
389									</#if> 
390								</#if> 
391							</#list> 
392						</#if> 
393 
394 
395						<#if descrizione_orario.getSiblings()?has_content> 
396							<#if showdates> 
397								<div class="text text-block-left"> 
398									<strong><@liferay.language key="label.orari" /></strong> 
399								</div> 
400							</#if> 
401							<#list descrizione_orario.getSiblings() as cur_descrizione_orario> 
402								<#if cur_descrizione_orario.getData()?? && cur_descrizione_orario.getData()?has_content && cur_descrizione_orario.getData()?trim?length gt 0 && cur_descrizione_orario.getData()?trim != "null"> 
403									<div class="text text-block-left"> 
404										${cur_descrizione_orario.getData()} 
405									</div> 
406									<#assign curorarioapertura = ""> 
407									<#if cur_descrizione_orario.orario_apertura.getData()?? && cur_descrizione_orario.orario_apertura.getData()?has_content && cur_descrizione_orario.orario_apertura.getData()?trim?length gt 0 && cur_descrizione_orario.orario_apertura.getData()?trim != "null"> 
408										<#assign curorarioapertura = cur_descrizione_orario.orario_apertura.getData()> 
409									</#if> 
410 
411									<#assign curorariochiusura = ""> 
412									<#if cur_descrizione_orario.orario_chiusura.getData()?? && cur_descrizione_orario.orario_chiusura.getData()?has_content && cur_descrizione_orario.orario_chiusura.getData()?trim?length gt 0 && cur_descrizione_orario.orario_chiusura.getData()?trim != "null"> 
413										<#assign curorariochiusura = cur_descrizione_orario.orario_chiusura.getData()> 
414									</#if> 
415 
416									<#if curorarioapertura?? && curorarioapertura?has_content && curorariochiusura?? && curorariochiusura?has_content> 
417										<div class="text text-block-left"> 
418											${curorarioapertura} - ${curorariochiusura} 
419										</div> 
420									<#elseif curorarioapertura?? && curorarioapertura?has_content> 
421										<div class="text text-block-left"> 
422											${curorarioapertura} 
423										</div> 
424									</#if> 
425 
426								</#if> 
427							</#list> 
428						</#if> 
429 
430					</div> 
431				</div> 
432			</div> 
433		</div> 
434	</div> 
435</div> 
436 
437<div class="container-fluid bg-white"> 
438	<div class="row"> 
439		<div class="container"> 
440			<div class="row"> 
441				<div class="col-12 col-md-10 offset-md-1"> 
442					<div class="text-block text-block-center"> 
443						<div class="title-2"> 
444							<#if titolo1?has_content && titolo1?trim?length gt 0 > 
445								${titolo1} 
446							<#else> 
447								<@liferay.language key="label.esplora.i.dintorni" /> 
448							</#if> 
449						</div> 
450						<div class="text"> 
451							<#if testo1?has_content && testo1?trim?length gt 0 > 
452								${testo1} 
453							<#else> 
454								<@liferay.language key="label.principali.attrazioni" /> 
455							</#if> 
456						</div> 
457					</div> 
458				</div> 
459			</div> 
460		</div> 
461	</div> 
462</div> 
463 
464<div class="container-fluid bg-white"> 
465	<div class="row"> 
466		<div class="container bridge bridge-md-bottom margin-top-em-2 margin-bottom-em-2 margin-top-md-em-minus-10 margin-bottom-md-em-0"> 
467			<div class="row"> 
468				<div class="col-12"> 
469					<div class="carousel-container transparent carousel-no-nav"> 
470						<div class="tns-carousel tns-carousel-default" data-tns-config="{&quot;nav&quot;:false,&quot;loop&quot;:true,&quot;items&quot;:2,&quot;responsive&quot;:{&quot;768&quot;:{&quot;items&quot;:3},&quot;991&quot;:{&quot;items&quot;:4}}}"> 
471							<#list attrattoriNeiDintorni as relatedCoord> 
472								<#assign langId = themeDisplay.getLanguageId() /> 
473								<#assign contentGroupId = relatedCoord.getGroupId() /> 
474								<#assign contentByLocale = relatedCoord.getContentByLocale(themeDisplay.getLanguageId()) /> 
475								<#assign document = saxReaderUtil.read(contentByLocale) > 
476								<#assign rootElement = document.getRootElement()> 
477 
478								<#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
479								<#assign relatedTitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
480 
481								<#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
482								<#assign relatedSottotitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
483 
484								<#assign xPathCoordinatePrincipali = saxReaderUtil.createXPath("dynamic-element[@name='coordinate_principali']")> 
485								<#assign relatedCoordinatePrincipali = xPathCoordinatePrincipali.selectSingleNode(rootElement).getStringValue()> 
486 
487								<#if relatedCoordinatePrincipali?has_content && relatedCoordinatePrincipali?trim?length gt 0 > 
488									<#assign coordinatePrincipaliRelatedJson = relatedCoordinatePrincipali?eval > 
489									<#assign latitudeRelated = coordinatePrincipaliRelatedJson.latitude > 
490									<#assign longitudeRelated = coordinatePrincipaliRelatedJson.longitude > 
491								<#else> 
492									<#assign latitudeRelated = "" > 
493									<#assign longitudeRelated = "" > 
494								</#if> 
495 
496								<#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 
497								<#assign relatedImmagineBanner = "" > 
498 
499								<#if xPathImmagineBanner?? && xPathImmagineBanner?has_content> 
500									<#if xPathImmagineBanner.selectSingleNode(rootElement)?? && xPathImmagineBanner.selectSingleNode(rootElement)?has_content> 
501										<#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
502									</#if> 
503								</#if> 
504 
505								<#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")> 
506								<#assign relatedTestoAlternativoImmagineBanner = "" > 
507								<#if xPathTestoAlternativoImmagineBanner?? && xPathTestoAlternativoImmagineBanner?has_content> 
508									<#if xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?? && xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?has_content> 
509										<#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
510									</#if> 
511								</#if> 
512 
513 
514								<#if !relatedTestoAlternativoImmagineBanner?? || !relatedTestoAlternativoImmagineBanner?trim?has_content || relatedTestoAlternativoImmagineBanner?trim == "null"> 
515									<#if relatedTitolo?? && relatedTitolo?has_content> 
516										<#assign relatedTestoAlternativoImmagineBanner = relatedTitolo?trim> 
517									</#if> 
518								</#if> 
519 
520 
521								<#if relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 > 
522									<#assign immagineBannerJson = relatedImmagineBanner?eval > 
523									<#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthCardImg}"> 
524								<#else> 
525									<#assign url = "" > 
526								</#if> 
527 
528								<div> 
529									<div class="card card-type-asset image-card card-2 no-desc card-small card-geolocalized card-territory" data-lat="${latitudeRelated}" data-lng="${longitudeRelated}" data-url="/-/${relatedCoord.getUrlTitle(locale)}" data-title="${relatedTitolo}"> 
530										<#if contentGroupId = groupId> 
531										<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
532										<#assign langID = themeDisplay.getLanguageId()> 
533										<#if langID?has_content && langID?contains("_")> 
534											<#assign langID = langID?split("_")[0]> 
535										</#if> 
536										<a class="aspect-ratio card-item-first aspect-ratio-16-20" href="${detailBaseUrl}/-/${relatedCoord.getUrlTitle(locale)}" draggable data-id="${relatedCoord.getArticleId()}" data-tom="false"> 
537											<#else> 
538											<#assign detailBaseUrl = searchService.getDetailBaseUrlNoMinus(themeDisplay, groupId)> 
539											<a class="aspect-ratio card-item-first aspect-ratio-16-20" href="${detailBaseUrl}/search/-/search/attrazione/${relatedCoord.getUrlTitle(locale)}_${contentGroupId}" draggable data-id="${relatedCoord.getArticleId()}" data-tom="false"> 
540												</#if> 
541												<img class="aspect-ratio-item aspect-ratio-item-center-middle aspect-ratio-item-fluid" src="${url}" alt="Immagine: ${relatedTestoAlternativoImmagineBanner}"> 
542												<span class="sticker sticker-bottom-left"> 
543    			                  		        <div class="title title-4"> 
544    			                  		            ${relatedTitolo} 
545    			                  		        </div> 
546    			                    	        <div class="text description"></div> 
547    			                            </span> 
548											</a> 
549									</div> 
550								</div> 
551							</#list> 
552						</div> 
553					</div> 
554				</div> 
555			</div> 
556		</div> 
557 
558 
559		<#assign non_visualizzare_la_mappa = non_visualizzare_la_mappa!false> 
560 
561		<#if non_visualizzare_la_mappa?is_hash> 
562			<#assign non_visualizzare_la_mappa_value = non_visualizzare_la_mappa.getData()?trim> 
563			<#if non_visualizzare_la_mappa_value?has_content> 
564				<#assign non_visualizzare_la_mappa_bool = non_visualizzare_la_mappa_value?boolean> 
565			<#else> 
566				<#assign non_visualizzare_la_mappa = false> 
567				<#assign non_visualizzare_la_mappa_bool = false> 
568			</#if> 
569		<#else> 
570			<#assign non_visualizzare_la_mappa_bool = false> 
571		</#if> 
572 
573		<#if non_visualizzare_la_mappa_bool> 
574			<!-- mappa non visualizzata --> 
575			<div style="height: 200px; width: 100%; background-color: white;"></div> 
576		<#else> 
577			<div class="map map-container map-banner"> 
578				<div class="map-content"> 
579					<div class="leaflet-interactive-map map-summary-territories" id="map-detail" data-kml="../undefined"></div> 
580				</div> 
581			</div> 
582		</#if> 
583 
584 
585	</div> 
586</div> 
587 
588 
589<#assign lang = "it"/> 
590<#if themeDisplay.getLanguageId()?contains("_")> 
591	<#assign lang = themeDisplay.getLanguageId()?split("_")[0]/> 
592<#else> 
593	<#assign lang = themeDisplay.getLanguageId()/> 
594</#if> 
595<#assign tomApi = serviceLocator.findService("it.inera.tom.api.TOMAPI")> 
596 
597<#if municipalityNames?has_content && municipalityNames?size gt 0 && lang?has_content && lang?trim?length gt 0 && tomApi?has_content> 
598 
599	<#assign offerResults = [] /> 
600	<#attempt> 
601		<#assign offerResults = tomApi.getJsonOffersListResultByMunicipalities(municipalityNames, lang) /> 
602		<#recover> 
603 
604	</#attempt> 
605 
606 
607	<#if offerResults?? && offerResults?has_content> 
608		<#assign offerResponse = offerResults.getResponse()> 
609		<#if offerResponse?? && offerResponse?has_content> 
610			<#assign offerResults = offerResponse.getResults()> 
611			<#if offerResults?? && offerResults?has_content> 
612				<aside class="container-fluid bg-white" id="hideable"> 
613					<div class="row"> 
614						<div class="container padding-top-em-3"> 
615							<div class="row"> 
616								<div class="col-12 col-md-10 offset-md-1 margin-bottom-lg-em-0 margin-bottom-em-2"> 
617									<div class="text-block text-block-center"> 
618										<div class="title-2"> 
619											<#if municipalityName?has_content> 
620												<#if isTerritorio> 
621													<@liferay.language key="label.le.migliori.offerte.nel" /> ${municipalityName} 
622												<#else> 
623													<@liferay.language key="label.le.migliori.offerte.a" /> ${municipalityName} 
624												</#if> 
625											<#else> 
626												<@liferay.language key="label.le.migliori.offerte" /> 
627											</#if> 
628										</div> 
629										<div class="text"> 
630											<@liferay.language key="label.proposte.vivere.umbria" /> 
631										</div> 
632									</div> 
633								</div> 
634							</div> 
635 
636							<div class="row"> 
637								<div class="col-12"> 
638									<div class="d-flex flex-justify-content-end"> 
639										<a class="link-showall" href="/offerte-luogo?municipality=${municipalityNamesString}&territory=${territoryNameString}"><@liferay.language key="label.vedi.tutte" /> 
640											<i class="fas fa-angle-right"></i> 
641										</a> 
642									</div> 
643								</div> 
644								<div class="col-12"> 
645									<div class="row"> 
646										<div class="col-12 padding-bottom-em-3"> 
647											<div class="carousel-container transparent margin-top-em-1 margin-bottom-em-2"> 
648												<div class="tns-carousel tns-carousel-default"> 
649													<#list offerResults as offerResult> 
650														<#if offerResult.getGalleries()?has_content && offerResult.getGalleries().getImages()?has_content 
651														&& offerResult.getGalleries().getImages()?size gt 0 
652														&& offerResult.getGalleries().getImages()[0].getFile()?has_content> 
653															<div> 
654																<div class="card card-1 card-offerta has-info-commercial"> 
655																	<a class="card-link" href="/dettaglio-offerta/-/dettaglio/${offerResult.getSlug()}_${offerResult.getId()}_${offerResult.getType()}" aria-label="${offerResult.getTitle()}"></a> 
656																	<div class="card-header"> 
657 
658																		<div class="hidden" id="tagmanager_item_card"> 
659																			<span id="tagmanager_item_id">${offerResult.getId()}</span> 
660																			<span id="tagmanager_item_category_card">${titleParentCategory}</span> 
661																			<span id="tagmanager_item_category2_card">${titleCategory}</span> 
662																			<span id="tagmanager_item_name">${offerResult.getTitle()}</span> 
663																			<span id="tagmanager_item_list_name_card"> 
664																				<#if municipalityName?has_content> 
665																					<#if isTerritorio> 
666																						Le migliori offerte nel ${municipalityName} 
667																					<#else> 
668																						Le migliori offerte a ${municipalityName} 
669																					</#if> 
670																				<#else> 
671																					Le migliori offerte per te 
672																				</#if> 
673																			</span> 
674																			<span id="tagmanager_item_list_id"></span> 
675																			<span id="tagmanager_item_variant"> 
676 
677																				<#if offerResult.getDuration()?has_content && offerResult.getDuration().getCount()?has_content && offerResult.getDuration().getType()?has_content> 
678																					${offerResult.getDuration().getCount()} ${offerResult.getDuration().getType()} 
679																				<#else> 
680																					&nbsp; 
681																				</#if> 
682 
683																			</span> 
684																			<span id="tagmanager_item_brand">${offerResult.getType()}</span> 
685																			<span id="tagmanager_item_price"> 
686 
687																				<#if offerResult.getMinimumPrice()?has_content && offerResult.getMinimumPrice()!=0> 
688																					${offerResult.getMinimumPrice()} 
689																				<#else> 
690
691																				</#if> 
692 
693																			</span> 
694																			<span id="tagmanager_index">${offerResult_index}</span> 
695																		</div> 
696																		<div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 
697																			<#if offerResult.getGalleries()?has_content> 
698																				<#if offerResult.getGalleries().getImages()?has_content && offerResult.getGalleries().getImages()?size gt 0> 
699																					<#assign file = ""/> 
700																					<#assign alt = ""/> 
701																					<#if offerResult.getGalleries().getImages()[0].getFile()?has_content> 
702																						<#assign file = tomBaseImagePath + offerResult.getGalleries().getImages()[0].getFile()/> 
703																					<#else> 
704																						<#assign file = "/o/umbria-theme/images/loghi/logo_no_image.png"/> 
705																					</#if> 
706																					<#if offerResult.getGalleries().getImages()[0].getAlt()?has_content> 
707																						<#assign alt = offerResult.getGalleries().getImages()[0].getAlt()/> 
708																					<#else> 
709																						<#if offerResult.getTitle()?? && offerResult.getTitle()?has_content> 
710																							<#assign alt = "Titolo: " + offerResult.getTitle()?trim/> 
711																						</#if> 
712																					</#if> 
713																					<img src="${file}?params[width]=354" alt="${alt}"> 
714																				</#if> 
715																			<#else> 
716																				<#assign file = "/o/umbria-theme/images/loghi/logo_no_image.png"/> 
717																				<img src="${file}?params[width]=354" alt="logo_no_image"> 
718																			</#if> 
719																		</div> 
720 
721																		<#if offerResult.getType()?? && offerResult.getType()?has_content && offerResult.getType()?trim?length gt 0 && offerResult.getType()?trim != "accommodation"> 
722																			<button class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-detail-type="${offerResult.getType()}/offer" data-id="${offerResult.getId()}" data-tom="true" aria-label="<@liferay.language key="label.aggiungi.elimina.viaggio"/>"> 
723																				<i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none;"></i></a> 
724																			</button> 
725																		<#else> 
726																			<button class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-detail-type="${offerResult.getType()}" data-id="${offerResult.getId()}" data-tom="true" aria-label="<@liferay.language key="label.aggiungi.elimina.viaggio"/>"> 
727																				<i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none;"></i></a> 
728																			</button> 
729																		</#if> 
730																		<div class="card-header-info"> 
731																			<div class="card-badges"> 
732																				<div class="badge badge-light-blue"> 
733																					<#if offerResult.getType() == 'guide'> 
734																						<@liferay.language key="label.guide" /> 
735																					</#if> 
736																					<#if offerResult.getType() == 'travelagency'> 
737																						<@liferay.language key="label.pacchetti.turistici" /> 
738																					</#if> 
739																					<#if offerResult.getType() == 'consortium'> 
740																						<@liferay.language key="label.pacchetti.turistici" /> 
741																					</#if> 
742																					<#if offerResult.getType() == 'accommodation'> 
743																						<@liferay.language key="label.accommodation" /> 
744																					</#if> 
745																					<#if offerResult.getType() == 'service'> 
746																						<@liferay.language key="label.esperienze.in.azienda" /> 
747																					</#if> 
748																					<#if offerResult.getType() == 'educationalfarm'> 
749																						<@liferay.language key="label.percorsi.didattici" /> 
750																					</#if> 
751																				</div> 
752																			</div> 
753																			<div class="header-title title-5"> 
754																				${offerResult.getTitle()} 
755																			</div> 
756																		</div> 
757																	</div> 
758																	<#if offerResult?has_content> 
759																		<div class="card-body"> 
760																			<div class="card-body-title title-4"> 
761																				${offerResult.getTitle()} 
762																			</div> 
763																			<#if offerResult.getSubtitle()?has_content> 
764																				<div class="card-body-subtitle"> 
765																					${offerResult.getSubtitle()} 
766																				</div> 
767																			</#if> 
768																		</div> 
769																	</#if> 
770																	<div class="card-info card-info-readmore"> 
771																		<div class="info hidden"><@liferay.language key="label.continua.a.leggere" /></div> 
772																	</div> 
773																	<div class="card-info"> 
774    			                        	                    <span class="info"> 
775    			                        		                    <!--<a href="#" class="text-light-blue text-bold"> 
776    			                        		                            <i class="fas fa-map-pin"></i> 
777    	                        		                            </a>--> 
778    		                        		                    </span> 
779																	</div> 
780																	<div class="card-info card-info-commercial"> 
781																		<#if offerResult.getDuration()?has_content && offerResult.getDuration().getCount()?has_content && offerResult.getDuration().getType()?has_content> 
782																			<div class="info info-commercial"> 
783																				<div class="label"><@liferay.language key="label.durata" /></div> 
784																				<div class="title text-bold"> 
785																					${offerResult.getDuration().getCount()} ${offerResult.getDuration().getType()} 
786																				</div> 
787																			</div> 
788																		<#else> 
789																			<div class="info info-commercial"> 
790																				<div class="label">&nbsp;</div> 
791																				<div class="title text-bold"> 
792																					&nbsp; 
793																				</div> 
794																			</div> 
795																		</#if> 
796																		<div class="info info-commercial"> 
797																			<#if offerResult.getMinimumPrice()?has_content && offerResult.getMinimumPrice()!=0> 
798																				<div class="label"> 
799																					<@liferay.language key="label.a.partire.da" /> 
800																				</div> 
801																				<div class="title text-bold"> 
802																					<@liferay.language key="label.euro" /> ${offerResult.getMinimumPrice()} 
803																				</div> 
804																			<#else> 
805																				<div class="label"> 
806																					<@liferay.language key="label.prezzo.su.richiesta" /> 
807																				</div> 
808																				<div class="title text-bold"> 
809																					&nbsp; 
810																				</div> 
811																			</#if> 
812																		</div> 
813																	</div> 
814																</div> 
815															</div> 
816														</#if> 
817													</#list> 
818												</div> 
819											</div> 
820										</div> 
821									</div> 
822								</div> 
823							</div> 
824						</div> 
825					</div> 
826				</aside> 
827			</#if> 
828		</#if> 
829	</#if> 
830 
831</#if> 
832 
833<#if itinerariNeiDintorni?size gt 0 || relatedResults?size gt 0> 
834	<aside class="container-fluid bg-white"> 
835		<div class="row"> 
836			<div class="container padding-top-em-3"> 
837				<div class="row"> 
838					<div class="col-12 col-md-10 offset-md-1"> 
839						<div class="text-block text-block-center"> 
840							<div class="title-2"> 
841								<#if titolo2?has_content && titolo2?trim?length gt 0 > 
842									${titolo2} 
843								<#else> 
844									<@liferay.language key="label.potrebbe.interessarti.anche" /> 
845								</#if> 
846							</div> 
847							<div class="text"> 
848								<#if testo2?has_content && testo2?trim?length gt 0 > 
849									${testo2} 
850								<#else> 
851									<@liferay.language key="label.scopri.proposte.uniche" /> 
852								</#if> 
853							</div> 
854						</div> 
855					</div> 
856				</div> 
857			</div> 
858		</div> 
859 
860		<div class="row"> 
861			<div class="container padding-top-em-1 padding-bottom-em-5"> 
862				<div class="row"> 
863					<div class="col-12"> 
864						<div class="row"> 
865							<div class="col-12 padding-bottom-em-3"> 
866								<div class="carousel-container transparent margin-top-em-1 margin-bottom-em-2"> 
867									<div class="tns-carousel tns-carousel-default"> 
868 
869										<#-- GESTIONE RALATED ASSETS RENDERIZZAZIONE--> 
870										<#list relatedResults as relatedResult> 
871											<div> 
872												<div class="card card-1 card-offerta"> 
873													<#if contentGroupId = groupId> 
874														<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
875														<a class="card-link" href="${detailBaseUrl}/-/${relatedCoord.getUrlTitle(locale)}" aria-label="${relatedResult.getTitle()}"></a> 
876													<#else> 
877														<#assign detailBaseUrl = searchService.getDetailBaseUrlNoMinus(themeDisplay, groupId)> 
878														<a class="card-link" href="${detailBaseUrl}/search/-/search/itinerario/${relatedCoord.getUrlTitle(locale)}_${contentGroupId}" aria-label="${relatedResult.getTitle()}"></a> 
879													</#if> 
880													<div class="card-header"> 
881														<div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 
882															<#assign altPotrebbeInteressarti = ""> 
883															<#if !relatedResult.getImg().getAlt()?? || !relatedResult.getImg().getAlt()?trim?has_content || relatedResult.getImg().getAlt()?trim == "null"> 
884																<#if relatedResult.getTitle()?? && relatedResult.getTitle()?has_content> 
885																	<#assign altPotrebbeInteressarti = relatedResult.getTitle()?trim> 
886																</#if> 
887															</#if> 
888															<img src="${relatedResult.getImg().getSrc()}" alt="Titolo: ${altPotrebbeInteressarti}"> 
889														</div> 
890														<button class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-id="${relatedResult.getId()}" data-tom="false" aria-label="<@liferay.language key="label.aggiungi.elimina.viaggio"/>"> 
891															<i class="far fa-heart text-red"></i> 
892															<i class="fas fa-heart text-red" style="display:none"></i> 
893														</button> 
894														<div class="card-header-info"> 
895															<div class="card-badges"> 
896																<#assign categoryNames = relatedResult.getHeader().getInfo() > 
897																<#list categoryNames as categoryName> 
898																	<div class="badge badge-red"> 
899																		${categoryName} 
900																	</div> 
901																	<a class="header-title title-5" href="#">${relatedResult.getTitle()}</a> 
902																</#list> 
903															</div> 
904														</div> 
905													</div> 
906													<div class="card-body"> 
907														<#if contentGroupId = groupId> 
908														<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
909														<a class="card-link" href="${relatedResult.getHref()}"> 
910															<#else> 
911															<#assign detailBaseUrl = searchService.getDetailBaseUrlNoMinus(themeDisplay, groupId)> 
912															<a class="card-link" href="${detailBaseUrl}/search/-/search/itinerario/${relatedResult.getUrlTitle(locale)}_${contentGroupId}"> 
913																</#if> 
914																${relatedResult.getTitle()} 
915															</a> 
916															<div class="card-body-subtitle"> 
917																<#if relatedResult.getSubtitle()?? && relatedResult.getSubtitle()?has_content && relatedResult.getSubtitle()?trim?length gt 0 && relatedResult.getSubtitle()?trim != "null"> 
918																	${relatedResult.getSubtitle()} 
919																</#if> 
920															</div> 
921 
922													</div> 
923													<div class="card-info"> 
924														<span class="info"></span> 
925													</div> 
926												</div> 
927											</div> 
928										</#list> 
929										<#-- GESTIONE RALATED ASSETS FINE RENDERIZZAZIONE--> 
930										<#list itinerariNeiDintorni as related> 
931											<#assign langId = themeDisplay.getLanguageId() /> 
932											<#assign contentByLocale = related.getContentByLocale(themeDisplay.getLanguageId()) /> 
933											<#assign contentGroupId = related.getGroupId() /> 
934											<#assign document = saxReaderUtil.read(contentByLocale) > 
935											<#assign rootElement = document.getRootElement()> 
936 
937											<#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 
938											<#assign relatedTitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 
939 
940											<#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 
941											<#assign relatedSottotitolo = xPathSottotitolo.selectSingleNode(rootElement).getStringValue()> 
942 
943											<#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 
944											<#assign relatedImmagineBanner = "" > 
945 
946											<#if xPathImmagineBanner?? && xPathImmagineBanner?has_content> 
947												<#if xPathImmagineBanner.selectSingleNode(rootElement)?? && xPathImmagineBanner.selectSingleNode(rootElement)?has_content> 
948													<#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
949												</#if> 
950											</#if> 
951 
952											<#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")> 
953											<#assign relatedTestoAlternativoImmagineBanner = "" > 
954											<#if xPathTestoAlternativoImmagineBanner?? && xPathTestoAlternativoImmagineBanner?has_content> 
955												<#if xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?? && xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?has_content> 
956													<#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()> 
957												</#if> 
958											</#if> 
959 
960											<#if relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 > 
961												<#assign immagineBannerJson = relatedImmagineBanner?eval > 
962												<#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthCardImg}"> 
963											<#else> 
964												<#assign url = "" > 
965											</#if> 
966 
967											<#assign resourcePrimKey = related.getResourcePrimKey() /> 
968											<#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) /> 
969											<#assign assetEntryId = assetEntry.getEntryId() /> 
970 
971											<#assign categories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntryId) > 
972 
973											<#assign categoryNames = [] > 
974 
975											<#list categories as category> 
976												<#if vocabularyIdUmbria == category.getVocabularyId() > 
977													<#assign categoryNames = categoryNames + [category.getTitle(themeDisplay.getLanguageId())] > 
978												</#if> 
979											</#list> 
980											<div> 
981												<div class="card card-1 card-offerta"> 
982													<#if contentGroupId = groupId> 
983														<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
984														<a class="card-link" href="${detailBaseUrl}/-/${related.getUrlTitle(locale)}" aria-label="${related.getTitle()}"></a> 
985													<#else> 
986														<#assign detailBaseUrl = searchService.getDetailBaseUrlNoMinus(themeDisplay, groupId)> 
987														<a class="card-link" href="${detailBaseUrl}/search/-/search/itinerario/${related.getUrlTitle(locale)}_${contentGroupId}" aria-label="${related.getTitle()}"></a> 
988													</#if> 
989													<div class="card-header"> 
990 
991														<div class="hidden" id="tagmanager_item_card_potrebbe_interessarti"> 
992															<span id="tagmanager_item_id_potrebbe_interessarti">${related.getId()}</span> 
993															<span id="tagmanager_item_category_card_potrebbe_interessarti">${titleCategory}</span> 
994															<span id="tagmanager_item_name_potrebbe_interessarti">${related.getTitle()}</span> 
995															<span id="tagmanager_item_list_name_card_potrebbe_interessarti">Potrebbe interessarti</span> 
996															<span id="tagmanager_item_list_id_potrebbe_interessarti"></span> 
997															<span id="tagmanager_item_brand_potrebbe_interessarti">${titleCategory}</span> 
998															<span id="tagmanager_index_potrebbe_interessarti">${related_index}</span> 
999														</div> 
1000 
1001														<div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 
1002															<#if !relatedTestoAlternativoImmagineBanner?? || !relatedTestoAlternativoImmagineBanner?trim?has_content || relatedTestoAlternativoImmagineBanner?trim == "null"> 
1003																<#if related.getTitle()?? && related.getTitle()?has_content> 
1004																	<#assign relatedTestoAlternativoImmagineBanner = relatedTitolo?trim> 
1005																</#if> 
1006															</#if> 
1007															<img src="${url}" alt="Titolo: ${relatedTestoAlternativoImmagineBanner}"> 
1008														</div> 
1009														<button class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-id="${related.getArticleId()}" data-tom="false" aria-label="<@liferay.language key="label.aggiungi.elimina.viaggio"/>"> 
1010															<i class="far fa-heart text-red"></i> 
1011															<i class="fas fa-heart text-red" style="display:none"></i> 
1012														</button> 
1013														<div class="card-header-info"> 
1014															<div class="card-badges"> 
1015																<#list categoryNames as categoryName> 
1016																	<div class="badge badge-red"> 
1017																		${categoryName} 
1018																	</div> 
1019																	<a class="header-title title-5" href="#">${related.getTitle()}</a> 
1020																</#list> 
1021															</div> 
1022														</div> 
1023													</div> 
1024													<div class="card-body"> 
1025														<#if contentGroupId = groupId> 
1026															<#assign detailBaseUrl = structureService.getSiteBaseUrl(themeDisplay)> 
1027															<a class="card-body-title title-4" href="${detailBaseUrl}/-/${related.getUrlTitle(locale)}">${relatedTitolo}</a> 
1028														<#else> 
1029															<#assign detailBaseUrl = searchService.getDetailBaseUrlNoMinus(themeDisplay, groupId)> 
1030															<a class="card-body-title title-4" href="${detailBaseUrl}/search/-/search/itinerario/${related.getUrlTitle(locale)}_${contentGroupId}">${relatedTitolo}</a> 
1031														</#if> 
1032														<div class="card-body-subtitle">${relatedSottotitolo}</div> 
1033													</div> 
1034													<div class="card-info"> 
1035														<span class="info"></span> 
1036													</div> 
1037												</div> 
1038											</div> 
1039											<#assign categoryNames = [] > 
1040											<#assign categories = [] > 
1041										</#list> 
1042									</div> 
1043								</div> 
1044							</div> 
1045						</div> 
1046					</div> 
1047				</div> 
1048			</div> 
1049		</div> 
1050	</aside> 
1051</#if> 
1052 
1053<#if !isgu> 
1054	<script> 
1055		$(".link-tripplanner").hide(); 
1056	</script> 
1057</#if> 
1058 
1059<script id="map-popup-1-template" type="text/x-handlebars-template"> 
1060	<div class="map-popup map-popup-1"> 
1061		<a href="{{href}}"> 
1062			<div class="title">{{title}}</div> 
1063		</a> 
1064	</div> 
1065</script> 
1066 
1067<script> 
1068	$("#backLink").click(function(event) { 
1069		event.preventDefault(); 
1070		history.back(1); 
1071	}); 
1072</script> 
1073<!-- Go to www.addthis.com/dashboard to customize your tools --> 
1074<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5c629e6303f68c9f"></script>