ArticleDetails

Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> embed.descrizioneEmbedAudio  [in template "1315478#1315513#1674018" at line 396, column 290]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if (embed.AudioFields.titoloEmbedAud...  [in template "1315478#1315513#1674018" at line 396, column 137]
----
1<#include "_TEMPLATE_CONTEXT_/1315478/1331017/23609/1656602"> 
2<#-- porting 74 v2 --> 
3<#assign 
4    articleId = .vars['reserved-article-id'].data 
5    territorioCategories = getContentVocabularyCategories(articleId, "TERRITORIO", groupId) 
6    slides = 0 
7    hasSlides = false 
8    hasDownloads = false 
9    hasGallery = false 
10    sliderCategories = [] 
11    lat = 0 
12    lng = 0 
13     
14    groupedCategories = getNavCircCategories(articleId, groupId) 
15/> 
16 
17<#-- MASONRY  --> 
18<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.js"></script> 
19 
20<#list territorioCategories as tCat> 
21    <#if tCat.parentCategoryId != 0> 
22        <#assign sliderCategories += [tCat.name]> 
23    </#if> 
24</#list> 
25 
26<#if tourismItem.slideHeader?? && tourismItem.slideHeader.getSiblings()?has_content> 
27    <#list tourismItem.slideHeader.getSiblings() as slide> 
28        <#if slide.getData()?has_content> 
29            <#assign 
30                hasSlides = true 
31                slides = tourismItem.slideHeader.getSiblings()?size 
32            /> 
33            <#break> 
34        </#if> 
35    </#list> 
36</#if> 
37<#-- 
38<#if geoRef.getData()?has_content> 
39    <#assign 
40        geoObj = createObject(geoRef.getData()) 
41        lat = geoObj.getDouble("latitude") 
42        lng = geoObj.getDouble("longitude") 
43    /> 
44</#if> 
45--> 
46<#if tourismItem.coordinateTestuali.getData()?has_content> 
47    <#assign 
48        lat = tourismItem.coordinateTestuali.getData()?keep_before(",")?number 
49        lng = tourismItem.coordinateTestuali.getData()?keep_after(",")?number 
50    /> 
51</#if> 
52 
53<#if tourismItem.ImmagineGallery?? && tourismItem.ImmagineGallery.getSiblings()?has_content> 
54    <#list tourismItem.ImmagineGallery.getSiblings() as item> 
55        <#if item.getData()?has_content> 
56            <#assign hasGallery = true> 
57            <#break> 
58        </#if> 
59    </#list> 
60</#if> 
61 
62<style> 
63    .no-shadow{ 
64        box-shadow: none; 
65
66</style> 
67 
68<!-- Modello località --> 
69 
70<div id="${portletNamespace}" v-cloak> 
71     
72     
73    <#if themeDisplay.getLayout().getAncestors()?has_content> 
74        <section id="breadcrumb" class="mt-4"> 
75            <div class="container-fluid custom-container d-flex align-items-center"> 
76                <ol class="breadcrumb"> 
77                    <li class="breadcrumb-item"> 
78                        <a href="/" class="breadcrumb-link" title="Home"> 
79                            <span class="breadcrumb-text-truncate tw:text-dark tw:uppercase">Home</span> 
80                        </a> 
81                    </li> 
82                     
83                    <#list themeDisplay.getLayout().getAncestors()?reverse as ancestor> 
84                        <li class="breadcrumb-item"> 
85                            <a href="${ancestor.getFriendlyURL()}" class="breadcrumb-link" title="${escape(ancestor.getHTMLTitle(themeDisplay.getLocale()))}"> 
86                                <span class="breadcrumb-text-truncate tw:text-dark tw:uppercase">${escape(ancestor.getHTMLTitle(themeDisplay.getLocale()))}</span> 
87                            </a> 
88                        </li> 
89                    </#list> 
90                     
91                    <li class="breadcrumb-item active"> 
92                        <span class="tw:text-green tw:uppercase" title="${tourismItem.title.getData()?js_string}"> 
93                            ${tourismItem.title.getData()} 
94                        </span> 
95                    </li> 
96                </ol> 
97                 
98                <div class="tw:flex tw:align-center"> 
99                    <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)}`"> 
100                        <i :class="(isFavorite(item.id) ? 'fas' : 'fal') + ' fa-heart fa-2x tw:text-green'"></i> 
101                    </button> 
102                     
103                    <div class="btn dropdown tw:px-0"> 
104                        <button type="button" class="btn btn-link dropdown-toggle tw:no-underline tw:text-green" data-toggle="dropdown"> 
105                            <i class="fas fa-share-alt fa-2x"></i> 
106                        </button> 
107                        <div class="dropdown-menu dropdown-menu-center"> 
108                            <button type="button" @click="customShare('facebook', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
109                                <i class="fab fa-facebook-f fa-lg tw:text-green"></i> 
110                                <span class="tw:text-dark"> 
111                                    Facebook 
112                                </span> 
113                            </button> 
114                             
115                            <button type="button" @click="customShare('twitter', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
116                                <i class="fab fa-twitter fa-lg tw:text-green"></i> 
117                                <span class="tw:text-dark"> 
118                                    Twitter 
119                                </span> 
120                            </button> 
121                             
122                            <button type="button" @click="customShare('pinterest', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
123                                <i class="fab fa-pinterest fa-lg tw:text-green"></i> 
124                                <span class="tw:text-dark"> 
125                                    Pinterest 
126                                </span> 
127                            </button> 
128                             
129                            <button type="button" @click="customShare('whatsapp', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
130                                <i class="fab fa-whatsapp fa-lg tw:text-green"></i> 
131                                <span class="tw:text-dark"> 
132                                    WhatsApp 
133                                </span> 
134                            </button> 
135                             
136                            <button type="button" @click="customShare('telegram', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
137                                <i class="fab fa-telegram fa-lg tw:text-green"></i> 
138                                <span class="tw:text-dark"> 
139                                    Telegram 
140                                </span> 
141                            </button> 
142                             
143                            <button type="button" @click="customShare('print', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
144                                <i class="fas fa-print fa-lg tw:text-green"></i> 
145                                <span class="tw:text-dark"> 
146                                    Print 
147                                </span> 
148                            </button> 
149                             
150                            <a :href="'mailto:inserisci indirizzo email?subject=' + item.contentJSON.title + '&body=${currentUrl} ' + item.contentJSON.description" class="dropdown-item tw:space-x-2"> 
151                                <i class="fas fa-envelope fa-lg tw:text-green"></i> 
152                                <span class="tw:text-dark"> 
153                                    Email 
154                                </span> 
155                            </a> 
156                             
157                            <button type="button" @click="customShare('link', item.contentJSON.title, item.contentJSON.description, item.contentJSON.previewPicture)" class="dropdown-item tw:space-x-2"> 
158                                <i class="fas fa-link fa-lg tw:text-green"></i> 
159                                <span class="tw:text-dark"> 
160                                    Link 
161                                </span> 
162                            </button> 
163                        </div> 
164                    </div> 
165                </div> 
166            </div> 
167        </section> 
168    </#if> 
169		 
170		 
171		<section id="slideshow" class="container-fluid custom-container"> 
172        <div class="swiper-container"> 
173            <div class="swiper-wrapper"> 
174                <#if hasSlides> 
175                    <#list tourismItem.slideHeader.getSiblings() as slide> 
176                        <div class="swiper-slide"> 
177                            <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')}"/> 
178                            <div class="card-img-overlay tw:bg-dark tw:bg-opacity-40"></div> 
179                             
180                            <div class="carousel-caption tw:flex tw:text-left tw:transform lg:tw:top-2/4 lg:tw:-translate-y-2/4"> 
181                                <#if tourismItem.testoHeader?? && tourismItem.testoHeader.getData()?has_content> 
182                                    <#assign locationClass = "tw:my-auto"> 
183                                <#else> 
184                                    <#assign locationClass = "tw:mt-auto tw:mb-20"> 
185                                </#if> 
186                                 
187                                <div class="tw:flex tw:flex-col ${locationClass}"> 
188                                    <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"> 
189                                        <#if testoHeader?? && testoHeader.getData()?has_content> 
190                                            <p>${tourismItem.testoHeader.getData()}</p> 
191                                            <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> 
192                                        </#if> 
193                                    </div> 
194                                     
195                                    <#if sliderCategories?has_content> 
196                                        <#assign cleanedCategories = cleanCategories(sliderCategories)> 
197                                         
198                                        <div class="tw:flex tw:mt-7"> 
199                                            <i class="fas fa-map-marker-alt fa-2x tw:text-white"></i> 
200                                            <p class="tw:text-white tw:uppercase tw:font-heading tw:font-medium tw:my-auto tw:ml-3"> 
201                                                ${cleanedCategories?join(", ")} 
202                                            </p> 
203                                        </div> 
204                                    </#if> 
205                                </div> 
206                            </div> 
207                        </div> 
208                    </#list> 
209                <#else> 
210                    <div class="swiper-slide"> 
211                        <img data-src="https://via.placeholder.com/1920x730" loading="lazy" class="lazyload tw:object-cover tw:h-full tw:w-full" alt=""/> 
212                        <div class="card-img-overlay tw:bg-dark tw:bg-opacity-40"></div> 
213     
214                        <div class="carousel-caption tw:flex tw:text-left tw:transform lg:tw:top-2/4 lg:tw:-translate-y-2/4"> 
215                            <#if tourismItem.testoHeader?? && tourismItem.testoHeader.getData()?has_content> 
216                                <#assign locationClass = "tw:my-auto"> 
217                            <#else> 
218                                <#assign locationClass = "tw:mt-auto tw:mb-20"> 
219                            </#if> 
220                                 
221                            <div class="tw:flex tw:flex-col ${locationClass}"> 
222                                <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"> 
223                                    <#if tourismItem.testoHeader?? && tourismItem.testoHeader.getData()?has_content> 
224                                        <p>${tourismItem.testoHeader.getData()}</p> 
225                                        <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> 
226                                    </#if> 
227                                </div> 
228     
229                                <#if territorioCategories?has_content> 
230                                    <div class="tw:flex tw:mt-7"> 
231                                        <i class="fas fa-map-marker-alt fa-2x tw:text-white"></i> 
232                                        <p class="tw:text-white tw:uppercase tw:font-heading tw:font-medium tw:my-auto tw:ml-3"> 
233                                            <#list territorioCategories as cat> 
234                                                <#if cat.parentCategoryId != 0> 
235                                                    ${cat.name} 
236     
237                                                    <#if cat?has_next>,</#if> 
238                                                </#if> 
239                                            </#list> 
240                                        </p> 
241                                    </div> 
242                                </#if> 
243                            </div> 
244                        </div> 
245                    </div> 
246                </#if> 
247            </div> 
248        </div> 
249    </section> 
250     
251    <section id="intro-description" class="tw:font-text tw:mt-5"> 
252        <div class="d-flex container-fluid custom-container"> 
253            <div class="mt-4"> 
254                <#if tourismItem.title?? && tourismItem.title.getData()?has_content> 
255                    <h1>${tourismItem.title.getData()}</h1> 
256                </#if> 
257                 
258                <#if tourismItem.subTitle?? && tourismItem.subTitle.getData()?has_content> 
259                    <h3>${tourismItem.subTitle.getData()}</h3> 
260                </#if>   
261            </div> 
262            <div class="tw:flex tw:mt-9 lg:tw:hidden"> 
263                <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)}`"> 
264                    <i :class="(isFavorite(item.id) ? 'fas' : 'fal') + ' fa-heart fa-lg tw:text-green'"></i> 
265                </button> 
266                <button type="button" @click="share(item.contentJSON.title, item.contentJSON.description)" class="btn btn-link tw:no-underline"> 
267                    <i class="fas fa-share-alt fa-lg tw:text-green"></i> 
268                </button> 
269            </div> 
270        </div> 
271     
272        <div class="container"> 
273            <div class="row"> 
274                <div class="col-12 col-lg-7"> 
275                    <#if tourismItem.introDescription?? && tourismItem.introDescription.getData()?has_content> 
276                        <div class="mt-4"> 
277                            ${tourismItem.introDescription.getData()} 
278                        </div> 
279                        <@contatti/>  
280                    </#if> 
281                     
282                </div> 
283                <div class="col-12 col-lg-5"> 
284                    <div id="suggesto-map" class="map-image map-styled tw:mt-15" style="height: 350px;"></div> 
285                </div> 
286            </div> 
287        </div> 
288    </section> 
289     
290    <#-- MASONRY GALLERY --> 
291    <#if hasGallery> 
292        <section id="gallery" class="mt-4"> 
293            <div class="container-fluid custom-container"> 
294                    <div class="gallery-grid grid"> 
295                        <#list tourismItem.ImmagineGallery.getSiblings() as pic> 
296                            <div class="grid-item"> 
297                                <a href="javascript:void(0);" data-toggle="modal" data-target="#lightbox-modal" data-slider="${pic?index}"> 
298																		<img src="${getKitPrefix(pic.getData(), 'tr:w-900,fo-center')}" alt="${pic.getAttribute('alt')!''}"  /> 
299                                </a> 
300                            </div> 
301                        </#list> 
302                    </div> 
303            </div> 
304             
305            <div id="lightbox-modal" tabindex="-1" role="dialog" class="modal fade"> 
306                <div class="modal-dialog modal-full-screen tw:inset-0 tw:border-none tw:shadow-none"> 
307                    <div class="modal-content tw:bg-transparent"> 
308                        <div class="modal-body tw:overflow-hidden"> 
309                            <div class="tw:absolute tw:top-0 tw:right-0 tw:z-5"> 
310                                <button type="button" data-dismiss="modal" class="btn btn-monospaced btn-secondary m-3"> 
311                                    <i class="fal fa-times fa-lg"></i> 
312                                </button> 
313                            </div> 
314                             
315                            <#-- lightbox --> 
316            				<div id="lightbox-swiper" class="swiper-container h-75 my-auto"> 
317            				    <div class="swiper-button-prev tw:w-12 tw:h-12"> 
318                                    <span class="sticker sticker-circle hcm-bg-capable tw:bg-green tw:w-full tw:h-full"> 
319                                        <span class="sticker-overlay"> 
320                                            <i class="fas fa-chevron-left fa-2x tw:text-white"></i> 
321                                        </span> 
322                                    </span> 
323                                </div> 
324                                 
325                                <div class="swiper-button-next tw:w-12 tw:h-12"> 
326                                    <span class="sticker sticker-circle hcm-bg-capable tw:bg-green tw:w-full tw:h-full"> 
327                                        <span class="sticker-overlay"> 
328                                            <i class="fas fa-chevron-right fa-2x tw:text-white"></i> 
329                                        </span> 
330                                    </span> 
331                                </div> 
332                                 
333                                <div class="swiper-wrapper tw:h-full"> 
334                                    <#list tourismItem.ImmagineGallery.getSiblings() as pic> 
335                                        <div class="swiper-slide tw:h-full"> 
336                                            <img data-src="${getPrefix(pic.getData(), 1920, '')}" loading="lazy" class="lazyload tw:h-full tw:object-contain tw:mx-auto" alt="${pic.getAttribute('alt')!''}"> 
337                                        </div> 
338                                    </#list> 
339                                </div> 
340                            </div> 
341                             
342                            <#-- thumbnails --> 
343            				<div id="thumbnail-swiper" class="swiper-container" thumbsSlider=""> 
344                                <div class="swiper-wrapper"> 
345                                    <#list tourismItem.ImmagineGallery.getSiblings() as pic> 
346                                        <div class="swiper-slide"> 
347                                            <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')!''}"> 
348                                        </div> 
349                                    </#list> 
350                                </div> 
351                            </div> 
352                        </div> 
353                    </div> 
354                </div> 
355            </div> 
356        </section> 
357    </#if> 
358 
359    <#if tourismItem.descriptionFieldSet.description?? && tourismItem.descriptionFieldSet.description.getData()?has_content> 
360        <section id="description" class="tw:font-text tw:mt-20"> 
361            <div class="container-fluid custom-container"> 
362                <div class="tw:space-x-2 tw:mt-10"> 
363                    <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> 
364                    <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> 
365                </div> 
366                <div class="tw:border-t-2 tw:border-gray-50 tw:pt-10 tw:mt-5"> 
367                    <div class="tw:flow-root"> 
368                        <#if tourismItem.descriptionFieldSet.descriptionFieldSetFieldSet.ImmagineMain?? && tourismItem.descriptionFieldSet.descriptionFieldSetFieldSet.ImmagineMain.getData()?has_content> 
369                            <div class="tw:w-full lg:tw:float-left lg:tw:w-5/12 lg:pr-5"> 
370                                <div class="aspect-ratio aspect-ratio-4-to-3 tw:rounded-md tw:shadow-md"> 
371                                    <img data-src="${getPrefix(tourismItem.descriptionFieldSet.descriptionFieldSetFieldSet.ImmagineMain.getData(), 400, 300)}" loading="lazy" class="lazyload aspect-ratio-item-fluid tw:object-cover tw:w-full tw:h-full" alt="${tourismItem.descriptionFieldSet.descriptionFieldSetFieldSet.ImmagineMain.getAttribute('alt')}" /> 
372                                </div> 
373                            </div> 
374                        </#if> 
375                        <div class="tw:text-dark tw:font-light tw:mt-5 lg:tw:mt-0"> 
376                            ${tourismItem.descriptionFieldSet.description.getData()} 
377                        </div> 
378                         
379                    </div> 
380                </div> 
381            </div> 
382        </section> 
383    </#if> 
384     
385 
386    <#if AudioBlock.CodiceEmbedAudioAltro?? && AudioBlock.CodiceEmbedAudioAltro.data?has_content> 
387        <section id="embeds" class="mt-20"> 
388            <div class="d-flex container-fluid custom-container"> 
389                <div class="row"> 
390											<#list AudioBlock.getSiblings() as embed> 
391													<div class="col-12 col-lg-6 m-auto"> 
392															<div class="card"> 
393																	<div class="embed-responsive embed-responsive-16by9 tw:rounded-md"> 
394																			${embed.CodiceEmbedAudioAltro.getData()} 
395																	</div> 
396																	<#if (embed.AudioFields.titoloEmbedAudio?? && embed.AudioFields.titoloEmbedAudio.getData()?has_content) || (embed.AudioFields.descrizioneEmbedAudio?? && embed.descrizioneEmbedAudio.getData()?has_content)> 
397																	<div class="card-body tw:px-0"> 
398																			<#if embed.AudioFields.titoloEmbedAudio?? && embed.AudioFields.titoloEmbedAudio.getData()?has_content > 
399																			<p class="tw:text-dark tw:uppercase tw:font-heading tw:font-bold tw:text-xl lg:tw:text-2xl mb-4">${embed.AudioFields.titoloEmbedAudio.getData()}</p> 
400																			</#if> 
401																			<#if embed.AudioFields.descrizioneEmbedAudio?? && embed.AudioFields.descrizioneEmbedAudio.getData()?has_content> 
402																			<p class="tw:text-dark tw:font-light">${embed.AudioFields.descrizioneEmbedAudio.getData()}</p> 
403																			</#if> 
404																	</div> 
405																	</#if> 
406															</div> 
407													</div> 
408											</#list> 
409                </div> 
410            </div> 
411        </section> 
412    </#if> 
413     
414    <#if VideoBlock.embed_video?? && VideoBlock.embed_video.data?has_content> 
415        <section id="videos" class="mt-5"> 
416            <div class="d-flex container-fluid custom-container"> 
417                <div class="row w-100"> 
418                    <#list VideoBlock.getSiblings() as video> 
419                        <div class="col-12 col-lg-6 offset-lg-2"> 
420                            <div class="card"> 
421                                <div class="embed-responsive embed-responsive-16by9"> 
422                                    <iframe class="embed-responsive-item" src="${video.embed_video.getData()}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe> 
423                                </div> 
424                                <#if (video.VideoFields.titoloEmbedVideo?? && video.VideoFields.titoloEmbedVideo.getData()?has_content) || (video.VideoFields.descrizioneEmbedVideo?? && video.VideoFields.descrizioneEmbedVideo.getData()?has_content)> 
425                                <div class="card-body py-3 px-0"> 
426                                    <#if video.VideoFields.titoloEmbedVideo?? && video.VideoFields.titoloEmbedVideo.getData()?has_content > 
427                                        <p class="vid-title">${video.VideoFields.titoloEmbedVideo.getData()}</p> 
428                                    </#if> 
429                                    <#if video.VideoFields.descrizioneEmbedVideo?? && video.VideoFields.descrizioneEmbedVideo.getData()?has_content> 
430                                        <p class="vid-desc">${video.VideoFields.titoloEmbedVideo.getData()}</p> 
431                                    </#if> 
432                                </div> 
433                                </#if> 
434                            </div> 
435                        </div> 
436                    </#list> 
437                </div> 
438            </div> 
439        </section> 
440    </#if> 
441 
442 
443    <#if downloads??> 
444    <section id="downloads" > 
445        <#list downloads.getSiblings() as item> 
446            <#if item.downloadUrl.getData()?has_content> 
447                <#assign hasDownloads = true> 
448                <#break> 
449            </#if> 
450        </#list> 
451    </#if> 
452     
453    <#if hasDownloads> 
454        <section id="downloads"> 
455            <div class="d-flex container-fluid custom-container mt-20"> 
456                <div class="sheet tw-bg-light tw:space-y-4 p-3"> 
457                    <#list tourismItem.downloadsFieldSet.downloadsFieldSetFieldSet.getSiblings() as item> 
458                        <#-- #assign doc = getFileFromUuid(createObject(item.downloadUrl.data).uuid, groupId) --> 
459                         
460                        <div class="card tw:bg-transparent tw:border-0 tw:shadow-none"> 
461                            <div class="card-row"> 
462                                <div class="autofit-col"> 
463                                    <div class="autofit-section"> 
464                                        <i class="fal fa-file-pdf fa-lg tw:text-dark"></i> 
465                                    </div> 
466                                </div> 
467                                <div class="autofit-col autofit-col-expand autofit-col-gutters"> 
468                                    <div class="autofit-section"> 
469                                        <a href="${item.downloadUrl.getData()}" class="tw:text-dark tw:font-bold" download> 
470                                            <#-- ${doc.fileName} --> 
471                                            ${item.downloadText.getData()} 
472                                             
473                                            <span class="tw:font-light muted tw:ml-2">(${getLabel('scarica_qui')})</span> 
474                                        </a> 
475                                    </div> 
476                                </div> 
477                            </div> 
478                        </div> 
479                    </#list> 
480                </div> 
481            </div> 
482        </section> 
483    </#if> 
484		 
485    <#macro contatti> 
486    <#assign  
487            contactNameSz="" 
488            street_number1Sz="" 
489            localitaSz="" 
490            comuneSz="" 
491            countrySz="" 
492            zipCodeSz="" 
493            telSz="" 
494            emailSz="" 
495            email2Sz="" 
496            webSiteSz="" 
497            facebookSz="" 
498            instagramSz="" 
499            thereAreContcats="false" 
500    /> 
501 
502    <#if tourismItem.contactFields.singleContact.contactName?? && tourismItem.contactFields.singleContact.contactName.getData()?has_content> 
503        <#assign contactNameSz=tourismItem.contactFields.singleContact.contactName.getData()> 
504        <#assign thereAreContcats="true"> 
505    </#if> 
506    <#if tourismItem.contactFields.singleContact.street_number1?? && tourismItem.contactFields.singleContact.street_number1.getData()?has_content> 
507        <#assign street_number1Sz=tourismItem.contactFields.singleContact.street_number1.getData()> 
508        <#assign thereAreContcats="true"> 
509    </#if> 
510    <#if tourismItem.contactFields.singleContact.localita?? && tourismItem.contactFields.singleContact.localita.getData()?has_content> 
511        <#assign localitaSz=tourismItem.contactFields.singleContact.localita.getData()> 
512        <#assign thereAreContcats="true"> 
513    </#if> 
514    <#if tourismItem.contactFields.singleContact.comune?? && tourismItem.contactFields.singleContact.comune.getData()?has_content> 
515        <#assign comuneSz=tourismItem.contactFields.singleContact.comune.getData()> 
516        <#assign thereAreContcats="true"> 
517    </#if> 
518    <#if tourismItem.contactFields.singleContact.country?? && tourismItem.contactFields.singleContact.country.getData()?has_content> 
519        <#assign countrySz=tourismItem.contactFields.singleContact.country.getData()> 
520        <#assign thereAreContcats="true"> 
521    </#if> 
522    <#if tourismItem.contactFields.singleContact.zipCode?? && tourismItem.contactFields.singleContact.zipCode.getData()?has_content> 
523        <#assign zipCodeSz=tourismItem.contactFields.singleContact.zipCode.getData()> 
524        <#assign thereAreContcats="true"> 
525    </#if> 
526    <#if tourismItem.contactFields.singleContact.tel?? && tourismItem.contactFields.singleContact.tel.getData()?has_content> 
527        <#assign telSz=tourismItem.contactFields.singleContact.tel.getData()> 
528        <#assign thereAreContcats="true"> 
529    </#if> 
530    <#if tourismItem.contactFields.singleContact.email?? && tourismItem.contactFields.singleContact.email.getData()?has_content> 
531        <#assign emailSz=tourismItem.contactFields.singleContact.email.getData()> 
532        <#assign thereAreContcats="true"> 
533    </#if> 
534    <#if tourismItem.contactFields.singleContact.email2?? && tourismItem.contactFields.singleContact.email2.getData()?has_content> 
535        <#assign email2Sz=tourismItem.contactFields.singleContact.email2.getData()> 
536        <#assign thereAreContcats="true"> 
537    </#if> 
538    <#if tourismItem.contactFields.singleContact.webSite?? && tourismItem.contactFields.singleContact.webSite.getData()?has_content> 
539        <#assign webSiteSz=tourismItem.contactFields.singleContact.webSite.getData()> 
540        <#assign thereAreContcats="true"> 
541    </#if> 
542    <#if tourismItem.contactFields.singleContact.facebook?? && tourismItem.contactFields.singleContact.facebook.getData()?has_content> 
543        <#assign facebookSz=tourismItem.contactFields.singleContact.facebook.getData()> 
544        <#assign thereAreContcats="true"> 
545    </#if> 
546    <#if tourismItem.contactFields.singleContact.instagram?? && tourismItem.contactFields.singleContact.instagram.getData()?has_content> 
547        <#assign instagramSz=tourismItem.contactFields.singleContact.instagram.getData()> 
548        <#assign thereAreContcats="true"> 
549    </#if> 
550     
551    <#assign acapo="false"> 
552    <#if thereAreContcats == "true"> 
553    <div class="tw:text-dark tw:font-light tw:mt-8">         
554            <#if contactNameSz != ""> 
555                ${contactNameSz} 
556                <#assign acapo="true"> 
557            </#if> 
558            <#if street_number1Sz != ""> 
559                <#if acapo == "true"><br/></#if> 
560                ${street_number1Sz} 
561                <#assign acapo="true"> 
562            </#if> 
563            <#if localitaSz  != ""> 
564                <#if acapo == "true"><br/></#if> 
565                ${localitaSz} 
566                <#assign acapo="true"> 
567            </#if> 
568     
569            <#if zipCodeSz != "" || comuneSz != "" || countrySz != ""> 
570                <#if acapo == "true"><br/></#if> 
571                ${zipCodeSz} ${comuneSz} ${countrySz} 
572                <#assign acapo="true"> 
573            </#if> 
574            
575            <#if telSz != ""> 
576                <#if acapo == "true"><br/></#if> 
577                ${getLabel('tel')}: ${telSz} 
578                <#assign acapo="true"> 
579            </#if> 
580            <#if emailSz != ""> 
581                <#if acapo == "true"><br/></#if> 
582                ${getLabel('email')}: <a href="mailto:${emailSz}" >${emailSz}</a> 
583                <#if email2Sz != ""> 
584                    <a href="mailto:${email2Sz}" style="margin-left: 20px;">${email2Sz}</a> 
585                 </#if> 
586                <#assign acapo="true"> 
587            </#if> 
588     
589            <#if webSiteSz != "" || facebookSz != "" || instagramSz != ""> 
590                <#if acapo == "true"><br/></#if> 
591                <#if webSiteSz != ""> 
592                    <a href="${webSiteSz}" title="${webSiteSz}" alt="${webSiteSz}" target="_blank">${getLabel('sito-web')}</a>      
593                </#if> 
594                <#if facebookSz != "">   
595                    <a href="${facebookSz}" title="${facebookSz}" alt="${facebookSz}" target="_blank"><i class="fab fa-facebook-f" style="margin-left: 20px;"></i></a>      
596                </#if> 
597                <#if instagramSz != "">  
598                    <a href="${instagramSz}" title="${instagramSz}" alt="${instagramSz}" target="_blank"><i class="fab fa-instagram" style="margin-left: 20px;"></i></a>  
599                </#if> 
600     
601            </#if> 
602                   
603    </div> 
604    </#if> 
605     
606     
607    </#macro> 
608</div> 
609 
610<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/components/securityV2.js"></script> 
611<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/components/initVueApp.js"></script> 
612<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/mixins/js/favorites.js"></script> 
613<script src="https://s3-eu-west-1.amazonaws.com/mkspresstage.suggesto.eu/mixins/js/share.js"></script> 
614 
615<script> 
616    var ${portletNamespace}_custom_hook = { 
617        data: { 
618            title: "${tourismItem.title.getData()?js_string}", 
619            item: { 
620                id: "${articleId}", 
621                contentJSON: { 
622                    title: "${tourismItem.title.getData()?js_string}", 
623                    description: "${tourismItem.introDescription.getData()?js_string}", 
624                    geoRef: '${tourismItem.geoRef.getData()}', 
625                    previewPicture: "${tourismItem.previewPicture.getData()}", 
626                    viewUrl: window.location.href 
627
628            }, 
629            loading: true, 
630            coords: { 
631                lat: "${lat}", 
632                lng: "${lng}" 
633            }, 
634            regionLat: "44.3921388", 
635            regionLng: "7.5211695", 
636            slider: null, 
637            gallery: null, 
638            thumbnails: null, 
639            lightbox: null, 
640            map: null 
641        }, 
642        mounted(){ 
643            var that = this; 
644         
645            this.createMap(); 
646             
647            if(${hasSlides?c}){ 
648                this.initSlider(); 
649
650             
651            if(${hasGallery?c}){ 
652                this.initGallery(); 
653             
654                $("#lightbox-modal").on("shown.bs.modal", function(e){ 
655                    that.lightbox.update(); 
656                    that.thumbnails.update(); 
657                    that.lightbox.slideTo($(e.relatedTarget).data("slider")); 
658                    that.lightbox.update(); 
659                }); 
660                 
661                $("#lightbox-modal .swiper-wrapper").on("click", function(e){ 
662                    if($(e.target).attr("class").includes("swiper-slide")){ 
663                        $("#lightbox-modal").modal("hide"); 
664
665                }); 
666
667             
668            this.loading = false; 
669        }, 
670        methods: { 
671            createMap: function(){ 
672                var map = new SuggestoMap("suggesto-map"), 
673                    maskImage = "${images_folder}/cuneo-mask-styled.png", 
674                    maskBounds = [[ 44.86534447171959, 6.845056749880314 ], [ 44.04193085127058, 8.226587511599066 ]], 
675                    location = [ 
676                        parseFloat(this.coords.lat), 
677                        parseFloat(this.coords.lng) 
678                    ], 
679                    mapData = { 
680                        tilelayer: "none", 
681                        tilelayers: [''], 
682                        mapcenter: [ 
683                            parseFloat(this.regionLat), 
684                            parseFloat(this.regionLng) 
685                        ], 
686                        zoom: 9, 
687                        zoomControl: false, 
688                        attributionControl: false, 
689                        markersFilter: "*", 
690                        gestureHandling: false, 
691                        fitBounds: false, 
692                        markers: [], 
693                        layers: [] 
694                    }; 
695                 
696                map.sm.createMap(mapData); 
697                map.sm.disableMapTouch(); 
698         
699                var marker = L.circleMarker(location, { 
700                    radius: 3, 
701                    color: "#000", 
702                    fillOpacity: 1 
703                }).addTo(map.sm.lmap); 
704                 
705                var svgIcon = L.divIcon({ 
706                    html: ` 
707                        <svg xmlns="http://www.w3.org/2000/svg" width="30.5" height="39.555" viewBox="0 0 30.5 39.555"> 
708                          <g id="Raggruppa_1" data-name="Raggruppa 1" transform="translate(-1.656)"> 
709                            <g id="Raggruppa_197" data-name="Raggruppa 197" transform="translate(1.656 0)"> 
710                              <path id="Tracciato_29905" data-name="Tracciato 29905" d="M291.2,382.292c.123.489.508.9.453,1.441a5.186,5.186,0,0,1-1.152.226c-2.214-.065-4.426-.07-6.639.041-.163-.174-.338-.339-.488-.524a7.653,7.653,0,0,0-7.322-2.9,7.871,7.871,0,0,0-5.667,3.643c-2.009-.458-4.048-.145-6.07-.247-.456-.023-.971.185-1.342-.275a14.837,14.837,0,0,1,3.257-5.7,15.783,15.783,0,0,1,11.209-4.732,15.2,15.2,0,0,1,9.883,3.76A14.417,14.417,0,0,1,291.2,382.292Z" transform="translate(-262.079 -373.262)" fill="#ba0249"/> 
711                              <path id="Tracciato_29906" data-name="Tracciato 29906" d="M262.011,394.926c.37.459.886.252,1.342.275,2.023.1,4.062-.211,6.07.247a8.371,8.371,0,0,0-.167,7.943c-2.22-.527-4.517.042-6.737-.482-.389-.394-.449-1.105-1.154-1.2-.57-2.213-.03-4.357.4-6.508Z" transform="translate(-261.119 -384.491)" fill="#ba0249"/> 
712                              <path id="Tracciato_29907" data-name="Tracciato 29907" d="M264.026,411.459c2.22.524,4.518-.045,6.737.482,1.547,2.288,3.556,3.883,6.415,4.06,3.6.222,6.01-1.643,7.771-4.579.328.433.8.268,1.219.272,2.11.02,4.219.018,6.329.023l-.078.705a3.382,3.382,0,0,0-.507,1.376,8.046,8.046,0,0,0-1.019,1.989,45.823,45.823,0,0,1-5.219,7.925,2.579,2.579,0,0,0-.534-.212,36.093,36.093,0,0,1-6.628-1.489A31.219,31.219,0,0,1,264.026,411.459Z" transform="translate(-262.626 -393.041)" fill="#ba0249"/> 
713                              <path id="Tracciato_29908" data-name="Tracciato 29908" d="M262.784,410.212a31.218,31.218,0,0,0,14.486,10.551,36.1,36.1,0,0,0,6.628,1.489,2.576,2.576,0,0,1,.534.212c-1.551,2.332-3.712,4.163-5.309,6.458a5.116,5.116,0,0,0-1.173,1.284,2.131,2.131,0,0,0-.866.916c-.464.529-.738-.008-1.076-.191a1.256,1.256,0,0,0-.716-.689q-2.756-3.27-5.515-6.538c-.152-.18-.327-.34-.49-.509l-3.1-4.184-2.5-4.222a22.765,22.765,0,0,1-2.059-5.772C262.335,409.107,262.395,409.819,262.784,410.212Z" transform="translate(-261.384 -391.794)" fill="#ba0249"/> 
714                              <path id="Tracciato_29909" data-name="Tracciato 29909" d="M314.427,403.206c-2.11-.005-4.219,0-6.329-.023-.416,0-.89.161-1.219-.272a8.88,8.88,0,0,0-.542-7.642c2.212-.111,4.424-.106,6.639-.041a5.189,5.189,0,0,0,1.152-.226,9.128,9.128,0,0,1,.771,2.445A11.385,11.385,0,0,1,314.427,403.206Z" transform="translate(-284.556 -384.53)" fill="#ba0249"/> 
715                              <path id="Tracciato_29910" data-name="Tracciato 29910" d="M290.666,391.787a8.88,8.88,0,0,1,.542,7.642c-1.761,2.935-4.174,4.8-7.771,4.579-2.859-.176-4.867-1.772-6.415-4.06a8.371,8.371,0,0,1,.167-7.943,7.871,7.871,0,0,1,5.667-3.643,7.653,7.653,0,0,1,7.322,2.9C290.329,391.448,290.5,391.613,290.666,391.787Z" transform="translate(-268.885 -381.048)" fill="#fdfdfd"/> 
716                            </g> 
717                          </g> 
718                        </svg>` + '<div class="leaflet-div-icon">' + this.title.toUpperCase() + '</div>', 
719                    className: "", 
720                    iconSize: [30.5, 39.555], 
721                    iconAnchor: [15.25, 39.555], 
722                }); 
723         
724                var icon = L.divIcon({ 
725                    iconSize: -10, 
726                    html: this.title.toUpperCase() 
727                }); 
728                 
729                L.marker(location, { 
730                    icon: svgIcon 
731                }).addTo(map.sm.lmap); 
732                 
733                L.imageOverlay(maskImage, maskBounds).addTo(map.sm.lmap); 
734                L.imageOverlay(maskImage, maskBounds).bringToFront(); 
735                 
736                this.map = map; 
737            }, 
738            initSlider: function(){ 
739                this.slider = new Swiper("#slideshow .swiper-container", { 
740        			loop: ${(slides > 0)?c}, 
741        			effect: "fade", 
742        			speed: 3000, 
743        			allowTouchMove: false, 
744        			autoplay: { 
745        				delay: 3000, 
746        				disableOnInteraction: false, 
747        			}, 
748        			fadeEffect: { 
749        				crossFade: true, 
750        			}, 
751        		}); 
752            }, 
753            initGallery: function(){ 
754                this.gallery = new Swiper("#gallery .swiper-container", { 
755        			slidesPerView: 1, 
756        			spaceBetween: 25, 
757        			centerSlides: true, 
758        			centerInsufficientSlides: true, 
759        			navigation: { 
760        				prevEl: ".btn-prev", 
761        				nextEl: ".btn-next", 
762        			}, 
763        			breakpoints: { 
764        				768: { 
765        					slidesPerView: 2, 
766        					spaceBetween: 25, 
767        				}, 
768        				992: { 
769        					slidesPerView: 3, 
770        					spaceBetween: 25, 
771        				}, 
772        			}, 
773        		}); 
774        		 
775        		this.thumbnails = new Swiper("#thumbnail-swiper", { 
776                    spaceBetween: 10, 
777                    slidesPerView: 2, 
778                    centerInsufficientSlides: true, 
779                    freeMode: true, 
780                    watchSlidesVisibility: true, 
781                    watchSlidesProgress: true, 
782        			breakpoints: { 
783        				768: { 
784        					slidesPerView: 3 
785        				}, 
786        				992: { 
787        					slidesPerView: 4 
788        				}, 
789        				1200: { 
790        					slidesPerView: 5 
791
792        			}, 
793                }); 
794                 
795                this.lightbox = new Swiper("#lightbox-swiper", { 
796        		    spaceBetween: 10, 
797                    autoHeight: true, 
798                    observer: true, 
799                    observeSlideChildren: true, 
800                    keyboard: { 
801                        enabled: true 
802                    }, 
803                    navigation: { 
804                        nextEl: ".swiper-button-next", 
805                        prevEl: ".swiper-button-prev" 
806                    }, 
807                    thumbs: { 
808                        swiper: this.thumbnails 
809
810                }); 
811            }, 
812            customShare: function(type, title, description, image = ""){ 
813                if(type == "facebook"){ 
814                    var winHeight = 450, 
815                        winWidth = 600, 
816                        winTop = window.screen.height / 2 - winHeight / 2, 
817                        winLeft = window.screen.width / 2 - winWidth / 2, 
818                        params = "scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=" + winWidth + ",height=" + winHeight + ",left=" + winLeft + ",top=" + winTop, 
819                        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; 
820     
821                    window.open(link, "Facebook", params); 
822
823                 
824                if(type == "twitter"){ 
825                    var link = "https://twitter.com/intent/tweet?text=" + encodeURIComponent(title) + "&url=" + encodeURIComponent(window.location.href); 
826                     
827                    window.open(link, "_blank").focus(); 
828
829                 
830                if(type == "pinterest"){ 
831                    var link = "https://pinterest.com/pin/create/button/?url=" + encodeURIComponent(window.location.href) + "&description=" + encodeURIComponent(title); 
832                     
833                    window.open(link, "_blank").focus(); 
834
835                 
836                if(type == "whatsapp"){ 
837                    var link = "https://wa.me?text=" + encodeURIComponent(title + ": " + window.location.href); 
838                     
839                    window.open(link, "_blank").focus(); 
840
841                 
842                if(type == "telegram"){ 
843                    var link = "https://t.me/share/url?url=" + window.location.href + "&text=" + encodeURIComponent(title); 
844                     
845                    window.open(link, "_blank").focus(); 
846
847                 
848                if(type == "print"){ 
849                    window.print(); 
850
851                 
852                if(type == "link"){ 
853                    this.legacyShare(); 
854
855
856
857
858 
859    document.addEventListener("DOMContentLoaded",function(){ 
860		var app = initVueApp( 
861            "#${portletNamespace}", 
862            "${portletNamespace}", 
863            [d40_favorites, d40_share, ${portletNamespace}_custom_hook] 
864        ); 
865    }); 
866     
867    var groupedCategories = '${groupedCategories?js_string}'; 
868    var contentCoords = [${lat}, ${lng}]; 
869    console.log("espongo " + groupedCategories); 
870</script> 
871 
872<#function cleanCategories categories> 
873    <#assign 
874        url = themeDisplay.getURLCurrent() 
875        fixedCats = [] 
876    /> 
877     
878    <#if url?contains("villafalletto-il-paese-di-vanzetti")> 
879        <#list categories as cat> 
880            <#if cat?lower_case != "busca"> 
881                <#assign fixedCats += [cat]> 
882            </#if> 
883        </#list> 
884    <#elseif url?contains("margarita-nel-verde-della-campagna")> 
885        <#list categories as cat> 
886            <#if cat?lower_case != "cuneo"> 
887                <#assign fixedCats += [cat]> 
888            </#if> 
889        </#list> 
890    <#elseif url?contains("cervere-il-paese-dei-porri")> 
891        <#list categories as cat> 
892            <#if cat?lower_case != "fossano"> 
893                <#assign fixedCats += [cat]> 
894            </#if> 
895        </#list> 
896    <#elseif url?contains("piozzo-citta-della-zucca")> 
897        <#list categories as cat> 
898            <#if cat?lower_case != "bene vagienna" && cat?lower_case != "carru"> 
899                <#assign fixedCats += [cat]> 
900            </#if> 
901        </#list> 
902    <#elseif url?contains("i-gatt-ross-di-farigliano")> 
903        <#list categories as cat> 
904            <#if cat?lower_case != "mondovi" && cat?lower_case != "fossano"> 
905                <#assign fixedCats += [cat]> 
906            </#if> 
907        </#list> 
908    <#elseif url?contains("moretta-tra-storia-e-prodotti-del-territorio")> 
909        <#list categories as cat> 
910            <#if cat?lower_case != "saluzzo" && cat?lower_case != "racconigi"> 
911                <#assign fixedCats += [cat]> 
912            </#if> 
913        </#list> 
914    <#elseif url?contains("magliano-alpi-e-i-resti-romani")> 
915        <#list categories as cat> 
916            <#if cat?lower_case != "fossano" && cat?lower_case != "mondovi"> 
917                <#assign fixedCats += [cat]> 
918            </#if> 
919        </#list> 
920    <#elseif url?contains("vottignasco-lungo-il-sentiero-del-maira")> 
921        <#list categories as cat> 
922            <#if cat?lower_case != "saluzzo" && cat?lower_case != "fossano"> 
923                <#assign fixedCats += [cat]> 
924            </#if> 
925        </#list> 
926    <#elseif url?contains("trinita-feudo-dei-conti-costa")> 
927        <#list categories as cat> 
928            <#if cat?lower_case != "fossano"> 
929                <#assign fixedCats += [cat]> 
930            </#if> 
931        </#list> 
932    <#elseif url?contains("faule-e-la-festa-della-bagna-caoda")> 
933        <#list categories as cat> 
934            <#if cat?lower_case != "racconigi"> 
935                <#assign fixedCats += [cat]> 
936            </#if> 
937        </#list> 
938    <#elseif url?contains("carde-angolo-di-nobile-piemonte")> 
939        <#list categories as cat> 
940            <#if cat?lower_case != "valli po bronda e infernotto"> 
941                <#assign fixedCats += [cat]> 
942            </#if> 
943        </#list> 
944    <#else> 
945        <#assign fixedCats = categories> 
946    </#if> 
947     
948    <#return fixedCats> 
949</#function> 

Aggregatore Risorse

it_IT

Cosa

fare

Nessun risultato trovato

it_IT

Esperienze

Nessun risultato trovato

it_IT

Dove

dormire

Nessun risultato trovato

it_IT

Offerte

Nessun risultato trovato

it_IT

Info

Nessun risultato trovato