La storia di Anna - La storia di Anna
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> immagine_banner [in template "20099#20135#33907" at line 78, column 22]
----
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 urlBanner = immagine_banner.g... [in template "20099#20135#33907" at line 78, column 1]
---- 1<#--EVENTO 09022024--> 2<#assign structureService = serviceLocator.findService("it.inera.structure.service.StructureService")> 3 4<#assign eventoStructureKey = structureService.getStructureEventoKey()> 5<#assign eventoStructureId = structureService.getStructureEventoId()> 6 7<#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 8<#assign attrattoreStructureId = structureService.getStructureAttrattoreId()> 9 10<#assign elasticService = serviceLocator.findService("it.inera.elastic.service.ElasticService")> 11<#assign journalArticleId = .vars['reserved-article-id'].data/> 12 13<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 14<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 15<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 16<#assign journalArticleConverter = serviceLocator.findService("it.inera.journalarticleconverter.service.JournalArticleConverter")> 17 18<#assign vocabularyIdUmbria = structureService.getVocabularyIdByVocabularyName("Vocabolario Umbria") > 19<#assign vocabularyIdEventi = structureService.getVocabularyIdByVocabularyName("Eventi") > 20 21 22<#if coordinate_principali.getData()?has_content && coordinate_principali.getData()?trim?length gt 0 > 23 <#assign coordinatePrincipaliJson = coordinate_principali.getData()?eval > 24 <#if coordinatePrincipaliJson.latitude?has_content && coordinatePrincipaliJson.latitude?trim?length gt 0 > 25 <#assign latitude = coordinatePrincipaliJson.latitude?c > 26 </#if> 27 <#if coordinatePrincipaliJson.longitude?has_content && coordinatePrincipaliJson.longitude?trim?length gt 0 > 28 <#assign longitude = coordinatePrincipaliJson.longitude?c > 29 </#if> 30<#else> 31 <#assign latitude = "" > 32 <#assign longitude = "" > 33</#if> 34 35<#assign currentArticle = journalArticleLocalService.getArticle(groupId, journalArticleId) /> 36 37<#-- GESTIONE ASSET LINGUA DI DEFAULT --> 38<#assign currentObjectDefaultLanguage = journalArticleConverter.getEvento(currentArticle, localeUtil.getDefault())> 39 40<#assign titolo1 = "" /> 41 42<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("titolo_fascia_1")?has_content> 43 <#assign titolo1_custom_field = currentArticle.getExpandoBridge().getAttribute("titolo_fascia_1") /> 44 <#list titolo1_custom_field?keys as key> 45 <#if key == locale> 46 <#assign titolo1 = titolo1_custom_field?values[key_index] /> 47 </#if> 48 </#list> 49</#if> 50 51<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() /> 52<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) /> 53<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() /> 54 55<#assign categoryList = assetCategoryLocalService.getAssetEntryAssetCategories(currentArticleAssetEntryId) > 56 57<#assign categoryListIds = [] > 58 59<#list categoryList as category> 60 <#assign categoryListIds = categoryListIds + [category.getCategoryId()]> 61</#list> 62 63<#assign attrattoresByCoord = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), attrattoreStructureKey, attrattoreStructureId?c, locale, "6", null , null, journalArticleId, null, null, null) /> 64 65<#assign dateToday = .now?long /> 66<#assign next15Days = dateToday + (15 * 24 * 60 * 60 * 1000) /> 67 68<#assign startDate = dateToday?number_to_date?string("yyyyMMdd") + "0000000"> 69<#assign endDate = next15Days?number_to_date?string("yyyyMMdd") + "0000000" > 70 71<#assign eventsrelated = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, eventoStructureKey, eventoStructureId?c, locale, "6", null , categoryListIds, journalArticleId, startDate, endDate, true) /> 72 73<#assign widthBannerImg = propsUtil.get("image.scale.fullpage") /> 74<#assign widthSliderImg = propsUtil.get("image.slider.testobarra.height") /> 75<#assign widthRelatedImg = propsUtil.get("image.proplista.height") /> 76<#assign widthCardImg = propsUtil.get("image.scale.allpage") /> 77 78<#assign urlBanner = immagine_banner.getData() > 79<#assign testAlternativoImmagineBanner = testo_alternativo_immagine_banner.getData() > 80<#attempt> 81 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getImmagineBanner()?has_content> 82 <#assign urlBanner = currentObjectDefaultLanguage.getImmagineBanner().getUrl() > 83 </#if> 84 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getTestoAlternativoImmagineBanner()?has_content> 85 <#assign testAlternativoImmagineBanner = currentObjectDefaultLanguage.getTestoAlternativoImmagineBanner() > 86 </#if> 87 <#recover> 88 <#assign urlBanner = immagine_banner.getData() > 89 <#assign testAlternativoImmagineBanner = testo_alternativo_immagine_banner.getData() > 90</#attempt> 91 92<#assign titleCategory = ""> 93<#assign titleParentCategory = ""> 94<#attempt> 95 <#list categoryList as category> 96 <#if vocabularyIdEventi == category.getVocabularyId() > 97 <#assign titleCategory = category.getTitle(themeDisplay.getLocale())> 98 <#assign parentCategoryId = category.getParentCategoryId()> 99 <span class="hidden" id="tagmanager_init_pagegroup">Eventi</span> 100 <span class="hidden" id="tagmanager_init_pagecategory">${titleCategory}</span> 101 </#if> 102 </#list> 103 <#recover> 104</#attempt> 105 106<style> 107 @media (max-width: 768px) { 108 .header-block{ 109 height: auto; 110 padding: 0px !important; 111 .bg{ 112 position: relative; 113 } 114 } 115 116 } 117</style> 118 119<#assign hasImage = 0> 120<#if urlBanner?? && urlBanner?has_content> 121<assign hasImage = 1> 122 <div class="container-fluid"> 123 <div class="row"> 124 <div class="header-block header-block-1 padding-top-em-5 padding-bottom-em-5 header-block-image-main"> 125 <img class="bg img-fluid w-100" src="${urlBanner}?width=${widthBannerImg}" alt="${testAlternativoImmagineBanner}"> 126 </div> 127 <div class="map map-container map-container-header hidden"> 128 <div class="map-content"> 129 <div class="leaflet-interactive-map map-summary-results" id="header-map" data-results="${themeDisplay.getPortalURL()}/o/geolocation/get-positions?articleId=${journalArticleId}" data-config="{"clustering":true}"></div> 130 </div> 131 </div> 132 </div> 133 </div> 134 </#if> 135 136 <#if hasImage?? && hasImage==1> 137 <div class="container-fluid bg-white"> 138 <#else> 139 <div class="container-fluid bg-white"> 140 </#if> 141 <div class="row"> 142 <article class="container bridge bg-white translate-top-md-rem-5 translate-top-lg-rem-10"> 143 <div class="row"> 144 <div class="col-12"> 145 146 <div class="text-left link-back-container margin-left-rem-1"><a 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> 147 148 <div class="text-center padding-top-em-2"> 149 <div class="link-1 link-toggle-map" data-target="#header-map" style="color: #000;"><@liferay.language key="label.visualizza.sulla.mappa" /></div> 150 </div> 151 <div class="link-tripplanner-container"> 152 <#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 153 <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"> 154 <i class="far fa-heart text-red"></i> 155 <i class="fas fa-heart text-red" style="display:none"></i> 156 <span class="label hidden display-lg"><@liferay.language key="label.aggiungi.al.mio.viaggio" /></span> 157 </a> 158 </div> 159 </div> 160 <div class="col-12 col-md-10 offset-md-1"> 161 <div class="text-block text-block-center"> 162 <h1 class="title-2 margin-top-em-0">${titolo.getData()}</h1> 163 <div class="text"></div> 164 </div> 165 </div> 166 167 <div class="row padding-left-md-em-1 padding-right-md-em-1 padding-left-lg-em-4 padding-right-lg-em-4"> 168 <div class="col-12 col-md-8 padding-right-md-em-5"> 169 <div class="text-block text-block-center"> 170 <div class="text text-block-left">${descrizione.getData()}</div> 171 </div> 172 173 <#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> 174 <div class="carousel-container carousel-no-ctrl transparent margin-top-em-1 margin-bottom-em-1 carousel-image-slide carousel-draggable"> 175 <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{"items":1,"autoplay":true,"autoplayHoverPause":true}"> 176 <#if descrizione_immagine?? && descrizione_immagine.getData()?has_content> 177 <#list descrizione_immagine.getSiblings() as cur_descrizione_immagine> 178 <div class="item-with-caption"> 179 <img class="slide-image w-100" src="${cur_descrizione_immagine.immagine.getData()}?width=${widthSliderImg}" alt="${cur_descrizione_immagine.testo_alternativo.getData()}"> 180 <#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"> 181 <p class="caption">${cur_descrizione_immagine.didascalia.getData()}</p> 182 </#if> 183 </div> 184 </#list> 185 </#if> 186 </div> 187 </div> 188 <#else> 189 <#attempt> 190 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getImmagini()?has_content> 191 <div class="carousel-container carousel-no-ctrl transparent margin-top-em-1 margin-bottom-em-1 carousel-image-slide carousel-draggable"> 192 <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{"items":1,"autoplay":true,"autoplayHoverPause":true}"> 193 <#list currentObjectDefaultLanguage.getImmagini() as imm> 194 <div class="item-with-caption"> 195 <#if imm.getImmagine()?? && imm.getImmagine()?has_content && imm.getImmagine().getUrl()?? && imm.getImmagine().getUrl()?has_content> 196 <img class="slide-image w-100" src="${imm.getImmagine().getUrl()}?width=${widthSliderImg}" alt="${imm.getTestoAlternativo()}"> 197 <#if imm.getDidascalia()?? && imm.getDidascalia()?has_content && imm.getDidascalia()?trim?length gt 0 && imm.getDidascalia()?trim != "null"> 198 <p class="caption">${imm.getDidascalia()}</p> 199 </#if> 200 </#if> 201 </div> 202 </#list> 203 </div> 204 </div> 205 </#if> 206 <#recover> 207 208 </#attempt> 209 </#if> 210 211 <div class="text-block text-block-center"> 212 <div class="text text-block-left">${descrizione_due.getData()}</div> 213 </div> 214 </div> 215 216 <aside class="col-12 col-md-4"> 217 <div class="sidebar sidebar-border padding-top-em-4 padding-bottom-em-4 padding-top-md-em-0 padding-bottom-md-em-0 mx-auto px-3"> 218 <#if comune?? && comune.getData()?has_content> 219 <div class="text-block text-block-sidebar text-block-left"> 220 <div class="title-2"> 221 <i class="fas fa-map-pin"></i> 222 <span class="padding-left-em-1"><@liferay.language key="label.dove" /></span> 223 </div> 224 <#list comune.getSiblings() as cur_comune> 225 <#if cur_comune.getData()?? && cur_comune.getData()?has_content && cur_comune.getData()?trim?length gt 0> 226 <div class="text"> 227 ${cur_comune.getData()} 228 <#if cur_comune.via_piazza.getData()?? && cur_comune.via_piazza.getData()?has_content && cur_comune.via_piazza.getData()?trim?length gt 0 && cur_comune.via_piazza.getData()?trim != "null"> 229 ${cur_comune.via_piazza.getData()} 230 </#if> 231 <#if cur_comune.cap.getData()?? && cur_comune.cap.getData()?has_content && cur_comune.cap.getData()?trim?length gt 0 && cur_comune.cap.getData()?trim != "null"> 232 ${cur_comune.cap.getData()} 233 </#if> 234 </div> 235 </#if> 236 </#list> 237 </div> 238 </#if> 239 <#if data.getSiblings()?has_content> 240 <div class="text-block text-block-sidebar text-block-left"> 241 <div class="title-2"> 242 <i class="far fa-calendar"></i> 243 <span class="padding-left-em-1"><@liferay.language key="label.quando" /></span> 244 </div> 245 <#assign dataDa = "" /> 246 <#assign dataA = "" /> 247 248 <#list data.getSiblings() as cur_data> 249 <#assign dataDaT = cur_data.data_da.getData()> 250 <#if dataDaT?has_content && dataDaT?trim?length gt 0> 251 <#assign dataDa = dataDaT /> 252 </#if> 253 <#assign dataAT = cur_data.data_a.getData()> 254 <#if dataAT?has_content && dataAT?trim?length gt 0> 255 <#assign dataA = dataAT /> 256 </#if> 257 </#list> 258 259 <#if dataDa?has_content && dataDa?trim?length gt 0> 260 <#assign dataDa = dataDa?trim /> 261 <#assign dataDaDateObj = dateUtil.parseDate("yyyy-MM-dd", dataDa, locale)> 262 <#assign dataDa = dateUtil.getDate(dataDaDateObj, "dd/MM/yyyy", locale) /> 263 </#if> 264 265 <#if dataA?has_content && dataA?trim?length gt 0> 266 <#assign dataA = dataA?trim /> 267 <#assign dataADateObj = dateUtil.parseDate("yyyy-MM-dd", dataA, locale)> 268 <#assign dataA = dateUtil.getDate(dataADateObj, "dd/MM/yyyy", locale) /> 269 </#if> 270 <div class="text">${dataDa} - ${dataA}</div> 271 </div> 272 </#if> 273 <#if fascia_di_prezzo?? && fascia_di_prezzo.getData()?has_content && fascia_di_prezzo.getSiblings()?has_content> 274 <div class="text-block text-block-sidebar text-block-left"> 275 <div class="title-2"> 276 <i class="fas fa-money-bill-wave"></i> 277 <span class="padding-left-em-1"><@liferay.language key="label.costo" /></span> 278 </div> 279 <#list fascia_di_prezzo.getSiblings() as fascia_di_prezzo_cur> 280 <#if fascia_di_prezzo_cur.getData()?? && fascia_di_prezzo_cur.getData()?has_content> 281 <div class="text">${fascia_di_prezzo_cur.getData()} ${fascia_di_prezzo_cur.valore.getData()}</div> 282 </#if> 283 </#list> 284 </div> 285 </#if> 286 </div> 287 </aside> 288 </div> 289 </div> 290 </article> 291 </div> 292 </div> 293 294 295 <#if eventsrelated?has_content > 296 <div class="container-fluid bg-gray"> 297 <div class="row"> 298 <div class="container padding-top-em-4 padding-bottom-em-5"> 299 <div class="row"> 300 <div class="col-12"> 301 <div class="d-flex flex-justify-content-between flex-align-items-baseline"> 302 <#assign site_eventi_custom_field = layout.getGroup().getExpandoBridge().getAttribute("eventi") /> 303 <#assign value_eventi = "" /> 304 <#list site_eventi_custom_field?keys as key> 305 <#if key == locale> 306 <#assign value_eventi = site_eventi_custom_field?values[key_index] /> 307 </#if> 308 </#list> 309 310 <div class="text text-top-events"> 311 <@liferay.language key="label.ti.potrebbe.interessare" />: 312 </div> 313 <a class="link-showall" href="${value_eventi}"><@liferay.language key="label.vedi.tutti" /> 314 <svg class="svg-inline--fa fa-angle-right fa-w-8" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-right" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512" data-fa-i2svg=""> 315 <path fill="currentColor" d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path> 316 </svg> 317 </a> 318 </div> 319 </div> 320 <div class="col-12"> 321 <div class="carousel-container carousel-no-ctrl transparent margin-top-em-1 tns-overflow-show carousel-draggable carousel-desktop-disabled"> 322 <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{"disable":false,"responsive":{"768":{"items":2},"991":{"disable":true}}}"> 323 <#list eventsrelated as related> 324 <#assign langId = themeDisplay.getLanguageId() /> 325 <#assign contentByLocale = related.getContentByLocale(themeDisplay.getLanguageId()) /> 326 <#assign document = saxReaderUtil.read(contentByLocale) > 327 <#assign rootElement = document.getRootElement()> 328 329 <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 330 <#assign relatedTitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 331 332 <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 333 <#assign relatedImmagineBanner = "" > 334 335 <#if xPathImmagineBanner?? && xPathImmagineBanner?has_content> 336 <#if xPathImmagineBanner.selectSingleNode(rootElement)?? && xPathImmagineBanner.selectSingleNode(rootElement)?has_content> 337 <#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 338 </#if> 339 </#if> 340 341 <#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")> 342 <#assign relatedTestoAlternativoImmagineBanner = "" > 343 <#if xPathTestoAlternativoImmagineBanner?? && xPathTestoAlternativoImmagineBanner?has_content> 344 <#if xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?? && xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?has_content> 345 <#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()> 346 </#if> 347 </#if> 348 349 <#assign url = "" > 350 <#if relatedImmagineBanner?? && relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 > 351 <#attempt> 352 <#assign immagineBannerJson = relatedImmagineBanner?eval > 353 <#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthRelatedImg}"> 354 <#recover> 355 356 </#attempt> 357 <#else> 358 <#assign url = "" > 359 </#if> 360 361 <#assign resourcePrimKey = related.getResourcePrimKey() /> 362 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) /> 363 <#assign assetEntryId = assetEntry.getEntryId() /> 364 365 <#assign categories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntryId) > 366 367 <#assign categoryNames = [] > 368 369 <#list categories as category> 370 <#if vocabularyIdUmbria == category.getVocabularyId() > 371 <#assign categoryNames = categoryNames + [category.getTitle(themeDisplay.getLanguageId())] > 372 </#if> 373 </#list> 374 375 <#assign xPathData = saxReaderUtil.createXPath("dynamic-element[@name='data']")> 376 <#assign xPathDataDa = saxReaderUtil.createXPath("dynamic-element[@name='data_da']")> 377 <#assign xPathDataA = saxReaderUtil.createXPath("dynamic-element[@name='data_a']")> 378 <#assign relatedDatas = xPathData.selectNodes(rootElement)> 379 380 <#assign relatedDataDa = "" /> 381 <#assign relatedDataA = "" /> 382 383 <#list relatedDatas as relatedData> 384 <#assign relatedDataDaT = xPathDataDa.selectSingleNode(relatedData).getStringValue()> 385 <#if relatedDataDaT?has_content && relatedDataDaT?trim?length gt 0 > 386 <#assign relatedDataDa = relatedDataDaT /> 387 </#if> 388 <#assign relatedDataAT = xPathDataA.selectSingleNode(relatedData).getStringValue()> 389 <#if relatedDataAT?has_content && relatedDataAT?trim?length gt 0 > 390 <#assign relatedDataA = relatedDataAT /> 391 </#if> 392 </#list> 393 394 <#if relatedDataDa?has_content && relatedDataDa?trim?length gt 0 > 395 <#assign relatedDataDa = relatedDataDa?trim /> 396 <#assign relatedDataDaDateObj = dateUtil.parseDate("yyyy-MM-dd", relatedDataDa, locale)> 397 <#assign relatedDataDa = dateUtil.getDate(relatedDataDaDateObj, "dd/MM/yyyy", locale) /> 398 </#if> 399 400 <#if relatedDataA?has_content && relatedDataA?trim?length gt 0 > 401 <#assign relatedDataA = relatedDataA?trim /> 402 <#assign relatedDataADateObj = dateUtil.parseDate("yyyy-MM-dd", relatedDataA, locale)> 403 <#assign relatedDataA = dateUtil.getDate(relatedDataADateObj, "dd/MM/yyyy", locale) /> 404 </#if> 405 406 <div> 407 <div class="card card-horizontal card-event-1 card-event-default"> 408 <a class="card-link" href="/-/${related.getUrlTitle(locale)}"></a> 409 <span class="card-row"> 410 <span class="card-image aspect-ratio card-item-first" href="/-/${related.getUrlTitle(locale)}"> 411 <img class="aspect-ratio-item aspect-ratio-item-center-ceil aspect-ratio-item-fluid" src="${url}" alt="${relatedTestoAlternativoImmagineBanner}"> 412 </span> 413 <button data-id="${related.getArticleId()}" data-tom="false" class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-tom="false"> 414 <i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none"></i> 415 </button> 416 <span class="card-body"> 417 <div class="row"> 418 <div class="col-12"> 419 <#list categoryNames as categoryName> 420 <div class="badge badge-red">${categoryName}</div><a class="header-title title-5" href="#"></a> 421 </#list> 422 </div> 423 <div class="col-12"> 424 <span class="card-subtitle title-6"> 425 <i class="far fa-calendar"></i>${relatedDataDa} - ${relatedDataA} 426 </span> 427 </div> 428 <div class="col-12"> 429 <span class="card-title">${relatedTitolo}</span> 430 </div> 431 </div> 432 </span> 433 </span> 434 </div> 435 </div> 436 <#assign relatedDataDa = "" /> 437 <#assign relatedDataA = "" /> 438 </#list> 439 </div> 440 </div> 441 </div> 442 </div> 443 </div> 444 </div> 445 </div> 446 </#if> 447 448 <#if attrattoresByCoord?? && attrattoresByCoord?has_content && attrattoresByCoord?size gt 0 > 449 <aside class="container-fluid bg-white"> 450 <div class="row"> 451 <div class="container"> 452 <div class="row"> 453 <div class="col-12 col-md-10 offset-md-1"> 454 <div class="text-block text-block-center"> 455 <div class="title-2"> 456 <#if titolo1?has_content && titolo1?trim?length gt 0 > 457 ${titolo1} 458 <#else> 459 <@liferay.language key="label.nei.dintorni" /> 460 </#if> 461 </div> 462 </div> 463 </div> 464 </div> 465 466 <div class="row"> 467 <div class="col-12"> 468 <div class="row"> 469 <div class="col-12 padding-bottom-em-3"> 470 <div class="carousel-container transparent margin-top-em-1 margin-bottom-em-2"> 471 <div class="tns-carousel tns-carousel-default"> 472 <#list attrattoresByCoord as relatedCoord> 473 <#assign langId = themeDisplay.getLanguageId() /> 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 = xPathSottotitolo.selectSingleNode(rootElement).getStringValue()> 483 484 <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 485 <#assign relatedImmagineBanner = "" > 486 487 <#if xPathImmagineBanner?? && xPathImmagineBanner?has_content> 488 <#if xPathImmagineBanner.selectSingleNode(rootElement)?? && xPathImmagineBanner.selectSingleNode(rootElement)?has_content> 489 <#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 490 </#if> 491 </#if> 492 493 <#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")> 494 <#assign relatedTestoAlternativoImmagineBanner = "" > 495 <#if xPathTestoAlternativoImmagineBanner?? && xPathTestoAlternativoImmagineBanner?has_content> 496 <#if xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?? && xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?has_content> 497 <#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()> 498 </#if> 499 </#if> 500 501 <#if relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 > 502 <#assign immagineBannerJson = relatedImmagineBanner?eval > 503 <#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthCardImg}"> 504 <#else> 505 <#assign url = "" > 506 </#if> 507 508 <#assign resourcePrimKey = relatedCoord.getResourcePrimKey() /> 509 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) /> 510 <#assign assetEntryId = assetEntry.getEntryId() /> 511 512 <#assign categories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntryId) > 513 514 <#assign categoryNames = [] > 515 516 <#list categories as category> 517 <#if vocabularyIdUmbria == category.getVocabularyId() > 518 <#assign categoryNames = categoryNames + [category.getTitle(themeDisplay.getLanguageId())] > 519 </#if> 520 </#list> 521 522 <div> 523 <div class="card card-1 card-offerta"> 524 <a class="card-link" href="/-/${relatedCoord.getUrlTitle(locale)}"></a> 525 <div class="card-header"> 526 <div class="card-header-bg aspect-ratio aspect-ratio-4-3"> 527 <img src="${url}" alt="${relatedTestoAlternativoImmagineBanner}"> 528 </div> 529 <button data-id="${relatedCoord.getArticleId()}" data-tom="false" class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-tom="false"> 530 <i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none"></i> 531 </button> 532 <div class="card-header-info"> 533 <div class="card-badges"> 534 <#list categoryNames as categoryName> 535 <div class="badge badge-red"> 536 ${categoryName} 537 </div> 538 <div class="hidden" id="tagmanager_item"> 539 <span id="tagmanager_item_id">${relatedCoord.getArticleId()}</span> 540 <span id="tagmanager_item_category">${categoryName}</span> 541 <span id="tagmanager_item_name">${relatedTitolo}</span> 542 <span id="tagmanager_item_list_name">${categoryName}</span> 543 <span id="tagmanager_item_list_id">${categoryName}</span> 544 <span id="tagmanager_item_brand">${categoryName}</span> 545 <span id="tagmanager_index">${relatedCoord_index}</span> 546 </div> 547 <a class="header-title title-5" href="#"></a> 548 </#list> 549 </div> 550 </div> 551 </div> 552 <div class="card-body"> 553 <a class="card-body-title title-4" href="/-/${relatedCoord.getUrlTitle(locale)}"> 554 ${relatedTitolo} 555 </a> 556 <div class="card-body-subtitle"> 557 ${relatedSottotitolo} 558 </div> 559 </div> 560 <div class="card-info"> 561 <span class="info"></span> 562 </div> 563 </div> 564 </div> 565 566 <#assign categoryNames = [] > 567 <#assign categories = [] > 568 </#list> 569 </div> 570 </div> 571 </div> 572 </div> 573 </div> 574 </div> 575 </div> 576 </div> 577 </aside> 578 </#if> 579 580 581 582 <script> 583 $("#backLink").click(function(event) { 584 event.preventDefault(); 585 history.back(1); 586 }); 587 </script> 588 <!-- Go to www.addthis.com/dashboard to customize your tools --> 589 <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5c629e6303f68c9f"></script>