Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> coordinateTestuali [in template "1315478#1315513#1688155" at line 33, column 6]
----
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: #if coordinateTestuali.getData()?has_... [in template "1315478#1315513#1688155" at line 33, column 1]
---- 1<#include "_TEMPLATE_CONTEXT_/1315478/1331017/23609/1656602"> 2 3<#assign 4 articleId = .vars['reserved-article-id'].data 5 territorioCategories = getContentVocabularyCategories(articleId, "TERRITORIO", groupId) 6 stagioneCategories = getContentVocabularyCategories(articleId, "STAGIONI", groupId) 7 targetCategories = getContentVocabularyCategories(articleId, "TARGET", groupId) 8 groupedCategories = getNavCircCategories(articleId, groupId) 9 sliderCategories = [] 10 slides = 0 11 hasSlides = false 12 hasGallery = false 13 hasTappe = false 14 hasGPX = false 15 lat = 0 16 lng = 0 17/> 18 19<#list territorioCategories as tCat> 20 <#if tCat.parentCategoryId != 0> 21 <#assign sliderCategories += [tCat.name]> 22 </#if> 23</#list> 24 25<#if geoRef?? && geoRef.getData()?has_content> 26 <#assign 27 geolocationJSONObject = jsonFactoryUtil.createJSONObject(geoRef.getData()) 28 lat = geolocationJSONObject.getDouble("latitude") 29 lng = geolocationJSONObject.getDouble("longitude") 30 /> 31</#if> 32 33<#if coordinateTestuali.getData()?has_content> 34 <#assign 35 lat = coordinateTestuali.getData()?keep_before(",")?number 36 lng = coordinateTestuali.getData()?keep_after(",")?number 37 /> 38</#if> 39 40<#list tappa.getSiblings() as t> 41 <#if t.titolo.getData()?has_content> 42 <#assign hasTappe = true> 43 <#break> 44 </#if> 45</#list> 46 47<#if slideHeader?? && slideHeader.getSiblings()?has_content> 48 <#list slideHeader.getSiblings() as slide> 49 <#if slide.getData()?has_content> 50 <#assign 51 hasSlides = true 52 slides = slideHeader.getSiblings()?size 53 /> 54 <#break> 55 </#if> 56 </#list> 57</#if> 58 59<#if ImmagineGallery?? && ImmagineGallery.getSiblings()?has_content> 60 <#list ImmagineGallery.getSiblings() as item> 61 <#if item.getData()?has_content> 62 <#assign hasGallery = true> 63 <#break> 64 </#if> 65 </#list> 66</#if> 67 68<style> 69 .no-shadow{ 70 box-shadow: none; 71 } 72</style> 73 74<!-- Modello itinerario --> 75 76<div id="${portletNamespace}" v-cloak> 77 <section id="slideshow" class="diagonal-divider tw:h-partial-screen"> 78 <div class="swiper-container tw:h-full"> 79 <div class="swiper-wrapper"> 80 <#if hasSlides> 81 <#list slideHeader.getSiblings() as slide> 82 <div class="swiper-slide"> 83 <img data-src="${getPrefix(slide.getData(), 1920, 730)}" loading="lazy" class="lazyload tw:object-cover tw:h-full tw:w-full" alt="${slide.getAttribute('alt')}"/> 84 <div class="card-img-overlay tw:bg-dark tw:bg-opacity-40"></div> 85 86 <div class="carousel-caption tw:flex tw:text-left tw:transform lg:tw:top-2/4 lg:tw:-translate-y-2/4"> 87 <#if testoHeader?? && testoHeader.getData()?has_content> 88 <#assign locationClass = "tw:my-auto"> 89 <#else> 90 <#assign locationClass = "tw:mt-auto tw:mb-20"> 91 </#if> 92 93 <div class="tw:flex tw:flex-col ${locationClass}"> 94 <div class="hcm-bg-capable tw:text-white tw:font-heading tw:uppercase tw:text-2xl tw:mr-auto tw:p-4 tw:rounded-md lg:tw:text-4xl"> 95 <#if testoHeader?? && testoHeader.getData()?has_content> 96 <p>${testoHeader.getData()}</p> 97 <div class="dropdown-divider tw:border-green tw:border-t-3 tw:w-3/5 tw:mt-5 tw:mr-auto lg:tw:w-1/5 lg:tw:mt-10"></div> 98 </#if> 99 </div> 100 <#if sliderCategories?has_content> 101 <div class="tw:flex tw:mt-7"> 102 <i class="fas fa-map-marker-alt fa-2x tw:text-white"></i> 103 <p class="tw:text-white tw:uppercase tw:font-heading tw:font-medium tw:my-auto tw:ml-3"> 104 ${sliderCategories?join(", ")} 105 </p> 106 </div> 107 </#if> 108 </div> 109 </div> 110 </div> 111 </#list> 112 <#else> 113 <div class="swiper-slide"> 114 <img data-src="https://via.placeholder.com/1920x730" loading="lazy" class="lazyload tw:object-cover tw:h-full tw:w-full" alt=""/> 115 <div class="card-img-overlay tw:bg-dark tw:bg-opacity-40"></div> 116 117 <div class="carousel-caption tw:flex tw:text-left tw:transform lg:tw:top-2/4 lg:tw:-translate-y-2/4"> 118 <#if testoHeader?? && testoHeader.getData()?has_content> 119 <#assign locationClass = "tw:my-auto"> 120 <#else> 121 <#assign locationClass = "tw:mt-auto tw:mb-20"> 122 </#if> 123 124 <div class="tw:flex tw:flex-col ${locationClass}"> 125 <div class="hcm-bg-capable tw:text-white tw:font-heading tw:uppercase tw:text-2xl tw:mr-auto tw:p-4 tw:rounded-md lg:tw:text-4xl"> 126 <#if testoHeader?? && testoHeader.getData()?has_content> 127 <p>${testoHeader.getData()}</p> 128 <div class="dropdown-divider tw:border-green tw:border-t-3 tw:w-3/5 tw:mt-5 tw:mr-auto lg:tw:w-1/5 lg:tw:mt-10"></div> 129 </#if> 130 </div> 131 132 <#if territorioCategories?has_content> 133 <div class="tw:flex tw:mt-7"> 134 <i class="fas fa-map-marker-alt fa-2x tw:text-white"></i> 135 <p class="tw:text-white tw:uppercase tw:font-heading tw:font-medium tw:my-auto tw:ml-3"> 136 <#list territorioCategories as cat> 137 <#if cat.parentCategoryId != 0> 138 ${cat.name} 139 140 <#if cat?has_next>,</#if> 141 </#if> 142 </#list> 143 </p> 144 </div> 145 </#if> 146 </div> 147 </div> 148 </div> 149 </#if> 150 </div> 151 </div> 152 </section> 153 154 <#if themeDisplay.getLayout().getAncestors()?has_content> 155 <section id="breadcrumb" class="tw:font-heading tw:text-base tw:mt-4 <lg:tw:hidden"> 156 <div class="container tw:flex tw:flex-row tw:justify-between"> 157 <ol class="breadcrumb tw-space-x-2"> 158 <li class="breadcrumb-item"> 159 <a href="/" class="breadcrumb-link" title="Home"> 160 <span class="breadcrumb-text-truncate tw:text-dark tw:uppercase">Home</span> 161 </a> 162 </li> 163 164 <#list themeDisplay.getLayout().getAncestors()?reverse as ancestor> 165 <li class="breadcrumb-item"> 166 <a href="${ancestor.getFriendlyURL()}" class="breadcrumb-link" title="${escape(ancestor.getHTMLTitle(themeDisplay.getLocale()))}"> 167 <span class="breadcrumb-text-truncate tw:text-dark tw:uppercase">${escape(ancestor.getHTMLTitle(themeDisplay.getLocale()))}</span> 168 </a> 169 </li> 170 </#list> 171 172 <li class="breadcrumb-item active"> 173 <span class="tw:text-green tw:uppercase" title="${title.getData()?js_string}"> 174 ${title.getData()} 175 </span> 176 </li> 177 </ol> 178 179 <div class="tw:flex tw:align-center"> 180 <button type="button" @click="isFavorite(item.id) ? removeFavorite(item) : setFavorite(item);" class="btn btn-link tw:no-underline" :title="isFavorite(item.id) ? `${getLabel('rimuovi_preferiti', groupId)}` : `${getLabel('aggiungi_preferiti', groupId)}`"> 181 <i :class="(isFavorite(item.id) ? 'fas' : 'fal') + ' fa-heart fa-2x tw:text-green'"></i> 182 </button> 183 184 <div class="btn dropdown tw:px-0"> 185 <button type="button" class="btn btn-link dropdown-toggle tw:no-underline tw:text-green" data-toggle="dropdown"> 186 <i class="fas fa-share-alt fa-2x"></i> 187 </button> 188 <div class="dropdown-menu dropdown-menu-center"> 189 <button type="button" @click="customShare('facebook', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 190 <i class="fab fa-facebook-f fa-lg tw:text-green"></i> 191 <span class="tw:text-dark"> 192 Facebook 193 </span> 194 </button> 195 196 <button type="button" @click="customShare('twitter', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 197 <i class="fab fa-twitter fa-lg tw:text-green"></i> 198 <span class="tw:text-dark"> 199 Twitter 200 </span> 201 </button> 202 203 <button type="button" @click="customShare('pinterest', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 204 <i class="fab fa-pinterest fa-lg tw:text-green"></i> 205 <span class="tw:text-dark"> 206 Pinterest 207 </span> 208 </button> 209 210 <button type="button" @click="customShare('whatsapp', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 211 <i class="fab fa-whatsapp fa-lg tw:text-green"></i> 212 <span class="tw:text-dark"> 213 WhatsApp 214 </span> 215 </button> 216 217 <button type="button" @click="customShare('telegram', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 218 <i class="fab fa-telegram fa-lg tw:text-green"></i> 219 <span class="tw:text-dark"> 220 Telegram 221 </span> 222 </button> 223 224 <button type="button" @click="customShare('print', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 225 <i class="fas fa-print fa-lg tw:text-green"></i> 226 <span class="tw:text-dark"> 227 Print 228 </span> 229 </button> 230 231 <a :href="'mailto:inserisci indirizzo email?subject=' + item.contentJSON.title + '&body=${currentUrl} ' + item.contentJSON.description" class="dropdown-item tw:space-x-2"> 232 <i class="fas fa-envelope fa-lg tw:text-green"></i> 233 <span class="tw:text-dark"> 234 Email 235 </span> 236 </a> 237 238 <button type="button" @click="customShare('link', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 239 <i class="fas fa-link fa-lg tw:text-green"></i> 240 <span class="tw:text-dark"> 241 Link 242 </span> 243 </button> 244 </div> 245 </div> 246 </div> 247 </div> 248 </section> 249 </#if> 250 251 <section id="intro-description" class="tw:font-text tw:mt-5"> 252 <div class="container tw:flex tw:flex-row tw:space-x-2 tw:justify-between tw:border-t-2 tw:border-gray-50"> 253 <div class="tw:mt-10"> 254 <#if title?? && title.getData()?has_content> 255 <p class="tw:text-green tw:font-heading tw:font-extrabold tw:text-2xl tw:uppercase lg:tw:text-4xl">${title.getData()}</p> 256 </#if> 257 258 <#if subTitle?? && subTitle.getData()?has_content> 259 <p class="tw:text-dark tw:font-heading tw:font-light tw:text-2xl tw:uppercase lg:tw:text-4xl"> 260 ${subTitle.getData()} 261 </p> 262 </#if> 263 </div> 264 <div class="tw:flex tw:mt-9 lg:tw:hidden"> 265 <button type="button" @click="isFavorite(item.id) ? removeFavorite(item) : setFavorite(item);" class="btn btn-link tw:no-underline" :title="isFavorite(item.id) ? `${getLabel('rimuovi_preferiti', groupId)}` : `${getLabel('aggiungi_preferiti', groupId)}`"> 266 <i :class="(isFavorite(item.id) ? 'fas' : 'fal') + ' fa-heart fa-lg tw:text-green'"></i> 267 </button> 268 <button type="button" @click="share(item.contentJSON.title, item.contentJSON.description)" class="btn btn-link tw:no-underline"> 269 <i class="fas fa-share-alt fa-lg tw:text-green"></i> 270 </button> 271 </div> 272 </div> 273 <div class="tw:flex tw:justify-end tw:mt-5 lg:tw:-mt-7"> 274 <p class="tw:text-dark tw:uppercase tw:font-heading tw:font-bold tw:border-b-3 tw:border-gray-100 tw:pr-10 lg:tw:pr-30"> 275 ${pathLengthText.getData()} 276 </p> 277 </div> 278 279 <div class="container"> 280 <div class="row"> 281 <div class="col-12 col-lg-7"> 282 <#if introDescription?? && introDescription.getData()?has_content> 283 <div class="tw:text-dark tw:font-light tw:mt-14"> 284 ${introDescription.getData()} 285 </div> 286 </#if> 287 288 <#-- 289 <button type="button" class="btn btn-link tw:underline tw:text-dark tw:font-bold tw:italic tw:px-0 tw:mt-4">Leggi tutto</button> 290 --> 291 </div> 292 <div class="col-12 col-lg-5"> 293 <!-- ? QUI IMMAGINE previewPicture ? --> 294 </div> 295 </div> 296 </div> 297 </section> 298 299 <section id="itinerary-detail" class="tw:font-text tw:mt-20"> 300 <div class="container"> 301 <div class="tw:mt-10"> 302 <!-- ? QUI TITOLO FISSO O TITOLO DEL CONTENUTO --> 303 </div> 304 <div class="card hcm-bg-capable tw:relative tw:bg-green tw:border-0 tw:rounded-md tw:shadow-2xl tw:mt-10 tw:z-10"> 305 <div class="card-body"> 306 <div class="container"> 307 <div class="row"> 308 309 310 311 <#if difficoltaText?? && difficoltaText.getData()?has_content> 312 <div class="col-12 col-md-6 col-lg-3"> 313 <div class="card-row tw:space-x-4 tw:mb-10"> 314 <div class="autofit-col"> 315 <div class="autofit-section"> 316 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 317 <i class="fas fa-tachometer-fast fa-lg tw:text-white"></i> 318 </div> 319 </div> 320 </div> 321 <div class="autofit-col autofit-col-expand"> 322 <div class="autofit-section"> 323 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("difficolta")}</p> 324 <p class="tw:text-white">${difficoltaText.getData()}</p> 325 </div> 326 </div> 327 </div> 328 </div> 329 </#if> 330 331 <#if esposizioneText?? && esposizioneText.getData()?has_content> 332 <div class="col-12 col-md-6 col-lg-3"> 333 <div class="card-row tw:space-x-4 tw:mb-10"> 334 <div class="autofit-col"> 335 <div class="autofit-section"> 336 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 337 <i class="fas fa-signal fa-lg tw:text-white"></i> 338 </div> 339 </div> 340 </div> 341 <div class="autofit-col autofit-col-expand"> 342 <div class="autofit-section"> 343 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("esposizione")}</p> 344 <p class="tw:text-white">${esposizioneText.getData()}</p> 345 </div> 346 </div> 347 </div> 348 </div> 349 </#if> 350 <#if pathLengthText?? && pathLengthText.getData()?has_content> 351 <div class="col-12 col-md-6 col-lg-3"> 352 <div class="card-row tw:space-x-4 tw:mb-10"> 353 <div class="autofit-col"> 354 <div class="autofit-section"> 355 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 356 <i class="fas fa-arrows-h fa-lg tw:text-white"></i> 357 </div> 358 </div> 359 </div> 360 <div class="autofit-col autofit-col-expand"> 361 <div class="autofit-section"> 362 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("distanza")}</p> 363 <p class="tw:text-white">${pathLengthText.getData()}</p> 364 </div> 365 </div> 366 </div> 367 </div> 368 </#if> 369 <#if totalTimeText?? && totalTimeText.getData()?has_content> 370 <div class="col-12 col-md-6 col-lg-3"> 371 <div class="card-row tw:space-x-4 tw:mb-10"> 372 <div class="autofit-col"> 373 <div class="autofit-section"> 374 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 375 <i class="fas fa-clock fa-lg tw:text-white"></i> 376 </div> 377 </div> 378 </div> 379 <div class="autofit-col autofit-col-expand"> 380 <div class="autofit-section"> 381 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("tempo_necessario")}</p> 382 <p class="tw:text-white">${totalTimeText.getData()}</p> 383 </div> 384 </div> 385 </div> 386 </div> 387 </#if> 388 <#if timeText?? && timeText.getData()?has_content> 389 <div class="col-12 col-md-6 col-lg-3"> 390 <div class="card-row tw:space-x-4 tw:mb-10"> 391 <div class="autofit-col"> 392 <div class="autofit-section"> 393 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 394 <i class="fas fa-clock fa-lg tw:text-white"></i> 395 </div> 396 </div> 397 </div> 398 <div class="autofit-col autofit-col-expand"> 399 <div class="autofit-section"> 400 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("tempo_di_percorso")}</p> 401 <p class="tw:text-white">${timeText.getData()}</p> 402 </div> 403 </div> 404 </div> 405 </div> 406 </#if> 407 <#if startingAltitude?? && startingAltitude.getData()?has_content> 408 <div class="col-12 col-md-6 col-lg-3"> 409 <div class="card-row tw:space-x-4 tw:mb-10"> 410 <div class="autofit-col"> 411 <div class="autofit-section"> 412 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 413 <i class="fas fa-arrow-to-bottom fa-lg tw:text-white"></i> 414 </div> 415 </div> 416 </div> 417 <div class="autofit-col autofit-col-expand"> 418 <div class="autofit-section"> 419 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("quota_di_partenza")}</p> 420 <p class="tw:text-white">${startingAltitude.getData()} mt</p> 421 </div> 422 </div> 423 </div> 424 </div> 425 </#if> 426 <#if endingAltitude?? && endingAltitude.getData()?has_content> 427 <div class="col-12 col-md-6 col-lg-3"> 428 <div class="card-row tw:space-x-4 tw:mb-10"> 429 <div class="autofit-col"> 430 <div class="autofit-section"> 431 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 432 <i class="fas fa-arrow-to-top fa-lg tw:text-white"></i> 433 </div> 434 </div> 435 </div> 436 <div class="autofit-col autofit-col-expand"> 437 <div class="autofit-section"> 438 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("quota_di_arrivo")}</p> 439 <p class="tw:text-white">${endingAltitude.getData()} mt</p> 440 </div> 441 </div> 442 </div> 443 </div> 444 </#if> 445 <#if levelDifference?? && levelDifference.getData()?has_content> 446 <div class="col-12 col-md-6 col-lg-3"> 447 <div class="card-row tw:space-x-4 tw:mb-10"> 448 <div class="autofit-col"> 449 <div class="autofit-section"> 450 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 451 <i class="fas fa-arrows-v fa-lg tw:text-white"></i> 452 </div> 453 </div> 454 </div> 455 <div class="autofit-col autofit-col-expand"> 456 <div class="autofit-section"> 457 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("dislivello")}</p> 458 <p class="tw:text-white">${levelDifference.getData()} mt</p> 459 </div> 460 </div> 461 </div> 462 </div> 463 </#if> 464 <#if puntoPiuAltoBassoText?? && puntoPiuAltoBassoText.getData()?has_content> 465 <div class="col-12 col-md-6 col-lg-3"> 466 <div class="card-row tw:space-x-4 tw:mb-10"> 467 <div class="autofit-col"> 468 <div class="autofit-section"> 469 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 470 <i class="fas fa-arrows-v fa-lg tw:text-white"></i> 471 </div> 472 </div> 473 </div> 474 <div class="autofit-col autofit-col-expand"> 475 <div class="autofit-section"> 476 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("punto_piu_basso_piu_alto")}</p> 477 <p class="tw:text-white">${puntoPiuAltoBassoText.getData()}</p> 478 </div> 479 </div> 480 </div> 481 </div> 482 </#if> 483 484 <#if stagioneCategories?has_content> 485 <div class="col-12 col-md-6 col-lg-3"> 486 <div class="card-row tw:space-x-4 tw:mb-10"> 487 <div class="autofit-col"> 488 <div class="autofit-section"> 489 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 490 <i class="fas fa-calendar-alt fa-lg tw:text-white"></i> 491 </div> 492 </div> 493 </div> 494 <div class="autofit-col autofit-col-expand"> 495 <div class="autofit-section"> 496 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("stagione")}</p> 497 <p class="tw:text-white"> 498 <#list stagioneCategories as cat> 499 500 ${cat.getTitle(locale)} 501 <#if cat?has_next>,</#if> 502 503 </#list> 504 </p> 505 </div> 506 </div> 507 </div> 508 </div> 509 </#if> 510 <#if periodoConsigliatoText?? && periodoConsigliatoText.getData()?has_content> 511 <div class="col-12 col-md-6 col-lg-3"> 512 <div class="card-row tw:space-x-4 tw:mb-10"> 513 <div class="autofit-col"> 514 <div class="autofit-section"> 515 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 516 <i class="fas fa-calendar-alt fa-lg tw:text-white"></i> 517 </div> 518 </div> 519 </div> 520 <div class="autofit-col autofit-col-expand"> 521 <div class="autofit-section"> 522 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("periodo_consigliato")}</p> 523 <p class="tw:text-white">${periodoConsigliatoText.getData()}</p> 524 </div> 525 </div> 526 </div> 527 </div> 528 </#if> 529 <#if percorsoTipoText?? && percorsoTipoText.getData()?has_content> 530 <div class="col-12 col-md-6 col-lg-3"> 531 <div class="card-row tw:space-x-4 tw:mb-10"> 532 <div class="autofit-col"> 533 <div class="autofit-section"> 534 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 535 <i class="fas fa-sync fa-lg tw:text-white"></i> 536 </div> 537 </div> 538 </div> 539 <div class="autofit-col autofit-col-expand"> 540 <div class="autofit-section"> 541 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("tipo_di_percorso")}</p> 542 <p class="tw:text-white">${percorsoTipoText.getData()}</p> 543 </div> 544 </div> 545 </div> 546 </div> 547 </#if> 548 <#if biciTipoText?? && biciTipoText.getData()?has_content> 549 <div class="col-12 col-md-6 col-lg-3"> 550 <div class="card-row tw:space-x-4 tw:mb-10"> 551 <div class="autofit-col"> 552 <div class="autofit-section"> 553 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 554 <i class="fas fa-bicycle fa-lg tw:text-white"></i> 555 </div> 556 </div> 557 </div> 558 <div class="autofit-col autofit-col-expand"> 559 <div class="autofit-section"> 560 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("adatto_a")}</p> 561 <p class="tw:text-white">${biciTipoText.getData()}</p> 562 </div> 563 </div> 564 </div> 565 </div> 566 </#if> 567 <#if targetCategories?has_content> 568 <div class="col-12 col-md-6 col-lg-3"> 569 <div class="card-row tw:space-x-4 tw:mb-10"> 570 <div class="autofit-col"> 571 <div class="autofit-section"> 572 <div class="sticker sticker-circle sticker-lg tw:border-2 border-white"> 573 <i class="fas fa-chart-pie-alt fa-lg tw:text-white"></i> 574 </div> 575 </div> 576 </div> 577 <div class="autofit-col autofit-col-expand"> 578 <div class="autofit-section"> 579 <p class="tw:text-white tw:uppercase tw:font-bold tw:font-heading">${getLabel("target")}</p> 580 <p class="tw:text-white"> 581 <#list targetCategories as cat2> 582 583 ${cat2.getTitle(locale)} 584 <#if cat2?has_next>,</#if> 585 586 </#list> 587 </p> 588 </div> 589 </div> 590 </div> 591 </div> 592 </#if> 593 </div> 594 </div> 595 </div> 596 </div> 597 <#if noteAggiuntive?? && noteAggiuntive.getData()?has_content> 598 <div class="card-body tw:relative tw:py-0 tw:-mt-15 tw:z-15"> 599 <div class="container"> 600 <button type="button" class="btn btn-link card tw:bg-white tw:border-none tw:shadow-2xl tw:rounded-md tw:p-0" data-toggle="collapse" data-target="#notes"> 601 <div class="card-body"> 602 <div class="card-row tw:space-x-4"> 603 <div class="autofit-col"> 604 <div class="autofit-section"> 605 <div class="sticker sticker-circle tw:border-2 border-white"><i class="plus-icon fas fa-plus fa-2x tw:text-dark"></i><i class="minus-icon fas fa-minus fa-2x tw:text-dark tw:hidden"></i></div> 606 </div> 607 </div> 608 <div class="autofit-col autofit-col-expand tw:pr-20"> 609 <div class="autofit-section"> 610 <p class="tw:text-dark tw:font-bold tw:font-heading tw:uppercase">${getLabel("note")}</p> 611 </div> 612 </div> 613 </div> 614 </div> 615 </button> 616 </div> 617 </div> 618 619 <div class="tw:-mt-15 tw:z-5"> 620 <div id="notes" class="collapse"> 621 <div class="card tw:bg-white tw:border-0 tw:rounded-md tw:shadow-2xl tw:mb-0 tw:z-5"> 622 <div class="card-body"> 623 <div class="container"> 624 <div class="tw:text-dark tw:font-light tw:mt-10">${noteAggiuntive.getData()}</div> 625 </div> 626 </div> 627 </div> 628 </div> 629 </div> 630 </div> 631 </#if> 632 </section> 633 634 <#if gpx?? && gpx.getData()?has_content> 635 <#assign hasGPX = true> 636 637 <section id="download" class="tw:font-text tw:pt-20 tw:mt-20"> 638 <div class="container"> 639 <a href="${gpx.getData()}" class="btn btn-link tw:bg-green tw:text-white tw:uppercase tw:font-heading tw:rounded-md tw:py-2 tw:px-3" title="${getLabel('download-gpx')}"> 640 ${getLabel("download-gpx")} 641 <i class="fal fa-download fa-lg ml-2"></i> 642 </a> 643 </div> 644 </section> 645 </#if> 646 647 <section id="map" class="tw:font-text tw:mt-20"> 648 <div class="container"> 649 <div class="card-row tw:mb-5 <lg:tw:flex-col"> <#-- tw:pt-20 --> 650 <div class="autofit-col"> 651 <div class="tw:mt-10"> 652 <p class="tw:text-dark tw:font-heading tw:font-extrabold tw:text-2xl tw:uppercase lg:tw:text-4xl">${getLabel("le_tappe_itinerario1")}</p> 653 <p class="tw:text-dark tw:font-heading tw:font-light tw:text-2xl tw:uppercase lg:tw:text-4xl">${getLabel("le_tappe_itinerario2")}</p> 654 </div> 655 </div> 656 <div class="autofit-col autofit-col-expand"> 657 <div class="tw:flex tw:mt-3 lg:tw:ml-auto lg:mt-0"> 658 <ul role="tablist" class="nav nav-tabs tw:order-1 tw:space-x-4 tw:ml-auto lg:tw:order-2 lg:ml-4"> 659 <li class="nav-item"> 660 <a href="#tab_grid" class="sticker sticker-lg tw:flex tw:bg-dark tw:text-white tw:rounded-none tw:no-underline" data-toggle="tab"> 661 <i class="fas fa-th fa-lg"></i> 662 </a> 663 </li> 664 <li class="nav-item"> 665 <a href="#tab_list" class="sticker sticker-lg tw:flex tw:bg-dark tw:text-white tw:rounded-none tw:no-underline" data-toggle="tab"> 666 <i class="fas fa-list fa-lg"></i> 667 </a> 668 </li> 669 <li class="nav-item"> 670 <a href="#tab_map" class="sticker sticker-lg hcm-text-capable tw:flex tw:bg-dark tw:text-white tw:rounded-none tw:no-underline active show" data-toggle="tab"> 671 <i class="fas fa-map-marker-alt fa-lg"></i> 672 </a> 673 </li> 674 </ul> 675 </div> 676 </div> 677 </div> 678 </div> 679 <div class="tab-content tw:border-t-2 tw:border-gray-100 tw:pt-10"> 680 <div id="tab_grid" class="tab-pane fade"> 681 <div class="container"> 682 <div class="row"> 683 684 <#if hasTappe> 685 <#list tappa.getSiblings() as item> 686 <div class="col-12 col-lg-6"> 687 <div class="card tw:border-0 tw:shadow-2xl tw:rounded-md"> 688 <div class="aspect-ratio aspect-ratio-4-to-3 tw:rounded-md"> 689 <img data-src="${getPrefix(item.immaginePreview.getData(), 900, 675)}" loading="lazy" class="lazyload aspect-ratio-item-fluid tw:object-cover tw:w-full tw:h-full" alt="${item.getAttribute('alt')!''}" /> 690 </div> 691 <div class="card-img-overlay tw:rounded-b-md tw:bg-gradient-to-t tw:from-dark tw:to-transparent tw:opacity-60 tw:h-2/5 tw:mt-auto"></div> 692 <div class="card-img-overlay tw:pointer-events-none tw:rounded-t-md tw:p-0"> 693 <div class="tw:flex tw:justify-end tw:w-full"> 694 <div class="triangle-top-right"> 695 <div class="shape"></div> 696 <button type="button" class="btn btn-link btn-monospaced tw:absolute tw:inset-0 tw:pointer-events-auto tw:ml-auto tw:mt-3 tw:mr-3"> 697 <i class="fal fa-heart fa-lg tw:text-white"></i> 698 </button> 699 </div> 700 </div> 701 </div> 702 <div class="xl:tw:h-1/4 card-img-overlay hcm-bg-capable tw:rounded-b-md tw:h-2/5 tw:mt-auto"> 703 <div class="card-body tw:border-l-2 tw:border-green tw:pb-0"> 704 <div class="card-row"> 705 <div class="autofit-col autofit-col-expand"> 706 <p class="tw:text-white tw:uppercase tw:font-heading tw:font-bold tw:mt-4 tw:mb-2">${item.titolo.getData()}</p> 707 <p class="tw:text-white tw:uppercase tw:font-heading tw:text-xs">#hashtag #hashtag</p> 708 </div> 709 <div class="autofit-col"> 710 <div class="autofit-section"> 711 <div class="sticker sticker-xl sticker-circle tw:ring-white tw:ring-2"> 712 <i class="fas fa-trees fa-lg tw:text-white"></i> 713 </div> 714 </div> 715 </div> 716 </div> 717 </div> 718 </div> 719 </div> 720 </div> 721 </#list> 722 <#else> 723 <div class="col-12"> 724 <div class="tw:text-center"> 725 <p class="tw:text-dark">${getLabel('nessun_risultato')}</p> 726 </div> 727 </div> 728 </#if> 729 </div> 730 </div> 731 </div> 732 <div id="tab_list" class="tab-pane fade"> 733 <div class="container"> 734 <div class="row"> 735 <#if hasTappe> 736 737 <#else> 738 <div class="col-12"> 739 <div class="tw:text-center"> 740 <p class="tw:text-dark">${getLabel('nessun_risultato')}</p> 741 </div> 742 </div> 743 </#if> 744 </div> 745 </div> 746 </div> 747 <div id="tab_map" class="tab-pane fade show active"> 748 <div id="suggesto-map" class="monochrome-map primary-path" style="height: 500px;"></div> 749 </div> 750 </div> 751 752 <#if altimetria?? && altimetria.getData()?has_content> 753 <div class="container tw:mt-10"> 754 <div class="aspect-ratio aspect-ratio-16-to-9 tw:rounded-md"> 755 <img data-src="${getPrefix(altimetria.getData(), 1280, '')}" loading="lazy" class="lazyload aspect-ratio-item-fluid tw:object-cover tw:w-full tw:h-full" alt="${altimetria.getAttribute('alt')!''}" /> 756 </div> 757 </div> 758 </#if> 759 </section> 760 761 <#if hasGallery> 762 <section id="gallery"> 763 <div class="container"> 764 <div class="swiper-container tw:pt-10"> 765 <#if (ImmagineGallery.getSiblings()?size > 1)> 766 <div class="swiper-button-prev tw:w-12 tw:h-12"> 767 <span class="sticker sticker-circle hcm-bg-capable tw:bg-green tw:w-full tw:h-full"> 768 <span class="sticker-overlay"> 769 <i class="fas fa-chevron-left fa-2x text-white"></i> 770 </span> 771 </span> 772 </div> 773 <div class="swiper-button-next tw:w-12 tw:h-12"> 774 <span class="sticker sticker-circle hcm-bg-capable tw:bg-green tw:w-full tw:h-full"> 775 <span class="sticker-overlay"> 776 <i class="fas fa-chevron-right fa-2x text-white"></i> 777 </span> 778 </span> 779 </div> 780 </#if> 781 782 <div class="swiper-wrapper"> 783 <#list ImmagineGallery.getSiblings() as pic> 784 <div class="swiper-slide"> 785 <a href="javascript:void(0);" class="card no-shadow tw:no-underline mb-0" data-toggle="modal" data-target="#lightbox-modal" data-slider="${pic?index}"> 786 <div class="aspect-ratio aspect-ratio-4-to-3 tw:rounded-md tw:shadow-2xl"> 787 <img data-src="${getPrefix(pic.getData(), 900, 675)}" loading="lazy" class="lazyload aspect-ratio-item-fluid tw:object-cover tw:w-full tw:h-full" alt="${pic.getAttribute('alt')!''}" /> 788 </div> 789 790 <#if pic.getAttribute("alt")?has_content> 791 <div class="card-body bg-transparent px-0 pb-0"> 792 <p class="text-dark small mb-0"> 793 ${pic.getAttribute('alt')!''} 794 </p> 795 </div> 796 </#if> 797 </a> 798 </div> 799 </#list> 800 </div> 801 </div> 802 </div> 803 804 <div id="lightbox-modal" tabindex="-1" role="dialog" class="modal fade"> 805 <div class="modal-dialog modal-full-screen tw:inset-0 tw:border-none tw:shadow-none"> 806 <div class="modal-content tw:bg-transparent"> 807 <div class="modal-body tw:overflow-hidden"> 808 <div class="tw:absolute tw:top-0 tw:right-0 tw:z-5"> 809 <button type="button" data-dismiss="modal" class="btn btn-monospaced btn-secondary m-3"> 810 <i class="fal fa-times fa-lg"></i> 811 </button> 812 </div> 813 814 <#-- lightbox --> 815 <div id="lightbox-swiper" class="swiper-container h-75 my-auto"> 816 <div class="swiper-button-prev tw:w-12 tw:h-12"> 817 <span class="sticker sticker-circle hcm-bg-capable tw:bg-green tw:w-full tw:h-full"> 818 <span class="sticker-overlay"> 819 <i class="fas fa-chevron-left fa-2x tw:text-white"></i> 820 </span> 821 </span> 822 </div> 823 824 <div class="swiper-button-next tw:w-12 tw:h-12"> 825 <span class="sticker sticker-circle hcm-bg-capable tw:bg-green tw:w-full tw:h-full"> 826 <span class="sticker-overlay"> 827 <i class="fas fa-chevron-right fa-2x tw:text-white"></i> 828 </span> 829 </span> 830 </div> 831 832 <div class="swiper-wrapper tw:h-full"> 833 <#list ImmagineGallery.getSiblings() as pic> 834 <div class="swiper-slide tw:h-full"> 835 <img data-src="${getPrefix(pic.getData(), 1920, '')}" loading="lazy" class="lazyload tw:h-full tw:object-contain tw:mx-auto" alt="${pic.getAttribute('alt')!''}"> 836 </div> 837 </#list> 838 </div> 839 </div> 840 841 <#-- thumbnails --> 842 <div id="thumbnail-swiper" class="swiper-container" thumbsSlider=""> 843 <div class="swiper-wrapper"> 844 <#list ImmagineGallery.getSiblings() as pic> 845 <div class="swiper-slide"> 846 <img data-src="${getPrefix(pic.getData(), 300, '')}" loading="lazy" class="lazyload tw:object-cover tw:cursor-pointer tw:h-full tw:w-full" alt="${pic.getAttribute('alt')!''}"> 847 </div> 848 </#list> 849 </div> 850 </div> 851 </div> 852 </div> 853 </div> 854 </div> 855 </section> 856 </#if> 857 858 <#if description?? && description.getData()?has_content> 859 <section id="description" class="tw:font-text tw:mt-20"> 860 <div class="container"> 861 <div class="tw:space-x-2 tw:mt-10"> 862 <p class="tw:inline tw:text-dark tw:font-heading tw:font-extrabold tw:text-2xl tw:uppercase lg:tw:text-4xl">${getLabel('scopri-di-piu-parte1')}</p> 863 <p class="tw:inline tw:text-dark tw:font-heading tw:font-light tw:text-2xl tw:uppercase lg:tw:text-4xl">${getLabel('scopri-di-piu-parte2')}</p> 864 </div> 865 <div class="tw:border-t-2 tw:border-gray-50 tw:pt-10 tw:mt-5"> 866 <div class="tw:flow-root"> 867 <#if description.ImmagineMain?? && description.ImmagineMain.getData()?has_content> 868 <div class="tw:w-full lg:tw:float-left lg:tw:w-5/12 lg:pr-5"> 869 <div class="aspect-ratio aspect-ratio-4-to-3 tw:rounded-md tw:shadow-2xl"> 870 <img data-src="${getPrefix(description.ImmagineMain.getData(), 400, 300)}" loading="lazy" class="lazyload aspect-ratio-item-fluid tw:object-cover tw:w-full tw:h-full" alt="${description.ImmagineMain.getAttribute('alt')}" /> 871 </div> 872 </div> 873 </#if> 874 875 <div class="tw:text-dark tw:font-light tw:mt-5 lg:tw:mt-0"> 876 ${description.getData()} 877 </div> 878 </div> 879 </div> 880 </div> 881 </section> 882 </#if> 883</div> 884 885<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/components/securityV2.js"></script> 886 887<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/components/initVueApp.js"></script> 888<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/mixins/js/favorites.js"></script> 889<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/mixins/js/share.js"></script> 890 891<script> 892 var ${portletNamespace}_custom_hook = { 893 data: { 894 debugMode: true, 895 item: { 896 id: "${articleId}", 897 contentJSON: { 898 title: "${title.getData()?js_string}", 899 description: "${introDescription.getData()?js_string}", 900 geoRef: '${geoRef.getData()}', 901 previewPicture: "${previewPicture.getData()}", 902 viewUrl: window.location.href 903 } 904 }, 905 regionLat: "44.3921388", 906 regionLng: "7.5211695", 907 map: null, 908 slider: null, 909 gallery: null, 910 thumbnails: null, 911 lightbox: null, 912 docs: [], 913 }, 914 mounted(){ 915 var that = this; 916 917 this.buildStages(); 918 919 if(${hasSlides?c}){ 920 this.initSlider(); 921 } 922 923 if(${hasGallery?c}){ 924 this.initGallery(); 925 926 $("#lightbox-modal").on("shown.bs.modal", function(e){ 927 that.lightbox.update(); 928 that.thumbnails.update(); 929 that.lightbox.slideTo($(e.relatedTarget).data("slider")); 930 that.lightbox.update(); 931 }); 932 933 $("#lightbox-modal .swiper-wrapper").on("click", function(e){ 934 if($(e.target).attr("class").includes("swiper-slide")){ 935 $("#lightbox-modal").modal("hide"); 936 } 937 }); 938 } 939 }, 940 methods: { 941 buildStages: function(){ 942 var layers = [], 943 markers = [], 944 map = new SuggestoMap("suggesto-map"); 945 946 this.docs.forEach(function (doc) { 947 if (doc.contentJSON.geoRef) { 948 var marker = { 949 group: "1", 950 latlng: [parseFloat(doc.contentJSON.geoRef.latitude), parseFloat(doc.contentJSON.geoRef.longitude)], 951 value: "", 952 type: "svgNumIcon", 953 size: "10", 954 color: "#7eba27", 955 html: "<div style='width:400px;' class='pure-g'>" + 956 "<div class='pure-u-1-3'>" + 957 "<img class='pure-img' src='" + doc.contentJSON.previewPicture + "' alt='" + doc.contentJSON.title + "'>" + 958 "</div>" + 959 "<div class='pure-u'>" + 960 "<div class='l-box'>" + 961 "<h5 class='l-boxh3 tw:text-green' style='width: 225px'>" + doc.contentJSON.title + "</h5>" + 962 "<div class='l-boxp' style='width: 225px'>" + doc.contentJSON.introDescription + "</div>" + 963 "<a class='pure-button tw:bg-green tw:text-white' href='" + doc.contentJSON.viewUrl + "' data-senna-off='true'>${getLabel('vedi')}</a>" + 964 "</div>" + 965 "</div>" + 966 "</div>" 967 }; 968 969 markers.push(marker); 970 } 971 }); 972 973 /* 974 if(this.docs.length == 0 && ${(lat != 0)?c} && ${(lng != 0)?c}){ 975 var marker = { 976 group: "1", 977 latlng: [parseFloat(${lat}), parseFloat(${lng})], 978 value: "A", 979 type: "svgNumIcon", 980 size: "10", 981 color: "#7eba27", 982 html: "" 983 }; 984 985 markers.push(marker); 986 } 987 */ 988 989 <#if hasGPX> 990 var layer = { 991 id: "1", 992 group: "1", 993 type: "gpxurl", 994 value: "${gpx.getData()}" 995 } 996 997 layers.push(layer); 998 </#if> 999 1000 var mapData = { 1001 tilelayer: "osm", 1002 gestureHandling: true, 1003 fitBounds: false, 1004 mapcenter: [parseFloat(this.regionLat), parseFloat(this.regionLng)], 1005 zoom: 11, 1006 markersFilter: "*", 1007 markers: markers, 1008 layers: layers 1009 }; 1010 1011 console.log("mapData is: ", mapData); 1012 1013 map.sm.createMap(mapData); 1014 1015 map.sm.llist[0].layer.on("ready", function(){ 1016 map.sm.lmap.fitBounds(map.sm.llist[0].layer.getBounds()) 1017 }); 1018 1019 this.map = map; 1020 }, 1021 initSlider: function(){ 1022 this.slider = new Swiper("#slideshow .swiper-container", { 1023 loop: ${(slides > 0)?c}, 1024 effect: "fade", 1025 speed: 3000, 1026 allowTouchMove: false, 1027 autoplay: { 1028 delay: 3000, 1029 disableOnInteraction: false, 1030 }, 1031 fadeEffect: { 1032 crossFade: true, 1033 }, 1034 }); 1035 }, 1036 initGallery: function(){ 1037 this.gallery = new Swiper("#gallery .swiper-container", { 1038 slidesPerView: 1, 1039 spaceBetween: 25, 1040 centerSlides: true, 1041 centerInsufficientSlides: true, 1042 navigation: { 1043 prevEl: ".btn-prev", 1044 nextEl: ".btn-next", 1045 }, 1046 breakpoints: { 1047 768: { 1048 slidesPerView: 2, 1049 spaceBetween: 25, 1050 }, 1051 992: { 1052 slidesPerView: 3, 1053 spaceBetween: 25, 1054 }, 1055 }, 1056 }); 1057 1058 this.thumbnails = new Swiper("#thumbnail-swiper", { 1059 spaceBetween: 10, 1060 slidesPerView: 2, 1061 centerInsufficientSlides: true, 1062 freeMode: true, 1063 watchSlidesVisibility: true, 1064 watchSlidesProgress: true, 1065 breakpoints: { 1066 768: { 1067 slidesPerView: 3 1068 }, 1069 992: { 1070 slidesPerView: 4 1071 }, 1072 1200: { 1073 slidesPerView: 5 1074 } 1075 }, 1076 }); 1077 1078 this.lightbox = new Swiper("#lightbox-swiper", { 1079 spaceBetween: 10, 1080 autoHeight: true, 1081 observer: true, 1082 observeSlideChildren: true, 1083 keyboard: { 1084 enabled: true 1085 }, 1086 navigation: { 1087 nextEl: ".swiper-button-next", 1088 prevEl: ".swiper-button-prev" 1089 }, 1090 thumbs: { 1091 swiper: this.thumbnails 1092 } 1093 }); 1094 }, 1095 customShare: function(type, title, description, image = ""){ 1096 if(type == "facebook"){ 1097 var winHeight = 450, 1098 winWidth = 600, 1099 winTop = window.screen.height / 2 - winHeight / 2, 1100 winLeft = window.screen.width / 2 - winWidth / 2, 1101 params = "scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=" + winWidth + ",height=" + winHeight + ",left=" + winLeft + ",top=" + winTop, 1102 link = "http://www.facebook.com/sharer.php?s=100&p[title]=" + encodeURIComponent(title) + "&p[summary]=" + encodeURIComponent(description) + "&p[url]=" + window.location.href + "&p[images][0]=" + image; 1103 1104 window.open(link, "Facebook", params); 1105 } 1106 1107 if(type == "twitter"){ 1108 var link = "https://twitter.com/intent/tweet?text=" + encodeURIComponent(title) + "&url=" + encodeURIComponent(window.location.href); 1109 1110 window.open(link, "_blank").focus(); 1111 } 1112 1113 if(type == "pinterest"){ 1114 var link = "https://pinterest.com/pin/create/button/?url=" + encodeURIComponent(window.location.href) + "&description=" + encodeURIComponent(title); 1115 1116 window.open(link, "_blank").focus(); 1117 } 1118 1119 if(type == "whatsapp"){ 1120 var link = "https://wa.me?text=" + encodeURIComponent(title + ": " + window.location.href); 1121 1122 window.open(link, "_blank").focus(); 1123 } 1124 1125 if(type == "telegram"){ 1126 var link = "https://t.me/share/url?url=" + window.location.href + "&text=" + encodeURIComponent(title); 1127 1128 window.open(link, "_blank").focus(); 1129 } 1130 1131 if(type == "print"){ 1132 window.print(); 1133 } 1134 1135 if(type == "link"){ 1136 this.legacyShare(); 1137 } 1138 } 1139 } 1140 } 1141 1142 document.addEventListener("DOMContentLoaded", function(){ 1143 var app = initVueApp( 1144 "#${portletNamespace}", 1145 "${portletNamespace}", 1146 [d40_favorites, d40_share, ${portletNamespace}_custom_hook] 1147 ); 1148 }); 1149 1150 var groupedCategories = '${groupedCategories?js_string}'; 1151 var contentCoords = [${lat}, ${lng}]; 1152 console.log("espongo " + groupedCategories); 1153</script> esempi di as xml: xml serveResource con templateId (chiave)
esempi di as json: json serveResource con templateId (chiave)
esempi di as json e siteId: json serveResource con siteid
fr_FR
À faire
Aucun résultat trouvé
Aucun résultat trouvé
fr_FR
Expériences
Aucun résultat trouvé
Aucun résultat trouvé
Aucun résultat trouvé
fr_FR
Où
dormir
Aucun résultat trouvé
Aucun résultat trouvé
fr_FR
Offres
Aucun résultat trouvé
Aucun résultat trouvé
fr_FR
Informations
Aucun résultat trouvé
Aucun résultat trouvé