A pochi km dal mare, Le Marche offrono la combinazione perfetta tra relax e sport. Un territorio tutto da scoprire, preservato grazie ai Parchi e alle Riserve Naturali.

Il patrimonio naturalistico marchigiano è imponente: due parchi nazionali (Monti Sibillini, Gran Sasso e Monti della Laga), quattro parchi regionali (Monte Conero, Sasso Simone e Simoncello, Monte San Bartolo, Gola della Rossa e di Frasassi), insieme a sei riserve naturali (Abbadia di Fiastra, Montagna di Torricchio, Ripa Bianca, Sentina, Gola del Furlo e Monte San Vicino e Monte Canfaito) e molto altro. 

Le montagne delle Marche e i loro torrenti sono una splendida occasione per praticare tutti gli sport invernali, dall’alpinismo alle escursioni su neve, dalla canoa, al kayak, al rafting, al volo libero, alla speleologia e al torrentismo. La natura marchigiana inoltre offre ampi spazi anche al cicloturismo, al golf, all'equitazione, oppure - scendendo verso la costa - alla vela.

Leggi tutto Riduci
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> getFieldValue(journalArticle, 'itineraryImage')  [in template "20097#20123#231508" at line 150, column 71]

----
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: #assign itineraryImage = getFieldValu...  [in template "20097#20123#231508" at line 150, column 45]
----
1<#-- instanceId --> 
2<#assign instanceId = themeDisplay.getPortletDisplay().getId()?keep_after("INSTANCE_") /> 
3 
4<#-- Etichette --> 
5<#assign label_esplora_local = languageUtil.get(locale , "label_esplora_local")/> 
6<#assign label_ecco_alcuni_itinerari_per_scoprire_marche = languageUtil.get(locale , "label_ecco_alcuni_itinerari_per_scoprire_marche")/> 
7<#assign label_giorni = languageUtil.get(locale , "label_giorni")/> 
8<#assign label_itinerario_prevede = languageUtil.get(locale , "label_itinerario_prevede")/> 
9<#assign label_vai_dettaglio = languageUtil.get(locale , "label_vai_dettaglio")/> 
10<#assign label_vai_itinerario_precedente = languageUtil.get(locale , "label_vai_itinerario_precedente")/> 
11<#assign label_vai_itinerario_successivo = languageUtil.get(locale , "label_vai_itinerario_successivo")/> 
12<#assign label_tutti_gli_itinerari = languageUtil.get(locale , "label_tutti_gli_itinerari")/> 
13 
14<#-- Ricavo servizi utili in seguito --> 
15<#-- Servizio per ricavare l'oggetto layout --> 
16<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
17<#-- Servizio utile per ricavare i documenti della DM --> 
18<#assign dlFileEntryLocalService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryLocalService') /> 
19<#-- Servizio utilizzato per recupare le properties di una categoria --> 
20<#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") /> 
21 
22<#-- Inclusione widget template con macros e relativi servizi --> 
23<#include "${templatesPath}/COMMON_MACROS" /> 
24 
25<#assign ITINERARI_PAGE_URL = "" /> 
26<#if (( themeDisplay.getLayout().getGroup().getExpandoBridge().hasAttribute("itinerari_page_url"))) > 
27	<#if themeDisplay.getLayout().getGroup().getExpandoBridge().getAttribute("itinerari_page_url")??> 
28		<#assign ITINERARI_PAGE_URL = themeDisplay.getLayout().getGroup().getExpandoBridge().getAttribute("itinerari_page_url")/> 
29		<#-- data la pagina dell'elenco, ne ricavo la regular url --> 
30		<#if ITINERARI_PAGE_URL?has_content> 
31			<#assign itinerariPageLayout = layoutLocalService.getFriendlyURLLayout(groupId, false, ITINERARI_PAGE_URL) /> 
32			<#if itinerariPageLayout??> 
33				<#assign itinerariPageUrl = itinerariPageLayout.getRegularURL(request) /> 
34				<#if itinerariPageUrl??>						 
35					<#assign ITINERARI_PAGE_URL = itinerariPageUrl /> 
36				</#if> 
37			</#if> 
38		</#if>	 
39	</#if> 
40</#if> 
41 
42<#-- campi personalizzati --> 
43<#-- ricavo il valore del vocabolario ITINERARI, che serve per recuperare le relative categorie --> 
44<#assign ITINERARI_VOCABULARY_ID = "" /> 
45<#if validator.isNotNull(themeDisplay.getLayout().getGroup().getExpandoBridge()) > 
46	<#if (( themeDisplay.getLayout().getGroup().getExpandoBridge().hasAttribute("itinerari_vocabulary_id"))) > 
47		<#if themeDisplay.getLayout().getGroup().getExpandoBridge().getAttribute("itinerari_vocabulary_id")??> 
48			<#assign ITINERARI_VOCABULARY_ID = themeDisplay.getLayout().getGroup().getExpandoBridge().getAttribute("itinerari_vocabulary_id")/> 
49		</#if> 
50	</#if> 
51</#if> 
52 
53<#-- HTML --> 
54<#-- INIZIO ADT --> 
55<#if !entries?has_content> 
56	<#if !themeDisplay.isSignedIn()> 
57		${renderRequest.setAttribute("PORTLET_CONFIGURATOR_VISIBILITY", true)} 
58	</#if> 
59	<section class="adt-elenco adt-elenco-itinerari"> 
60		<div class="cluster-slider-container"> 
61			<#-- titolo principale --> 
62			<div class="container-center"> 
63				<#-- aggiunta classe m-0 --> 
64		        <div class="row text-center intro-section pady m-0"> 
65		            <div class="col-12"> 
66		                <p class="h2 par">${label_esplora_local}</p> 
67		                <span class="tit-link"> 
68		                	${label_ecco_alcuni_itinerari_per_scoprire_marche} 
69		                </span> 
70		            </div> 
71		        </div> 
72		    </div> 
73	 
74			<div class="alert alert-info"> 
75				<@liferay_ui["message"] key="there-are-no-results" />  
76			</div> 
77		</div> 
78	</section>	 
79</#if> 
80 
81<#if entries?has_content> 
82	<section class="adt-elenco adt-elenco-itinerari"> 
83		<div class="cluster-slider-container"> 
84			 
85			<#-- titolo principale --> 
86			<div class="container-center"> 
87				<#-- aggiunta classe m-0 --> 
88		        <div class="row text-center intro-section pady m-0"> 
89		            <div class="col-12"> 
90		                <p class="h2 par">${label_esplora_local}</p> 
91		                <span class="tit-link"> 
92		                	${label_ecco_alcuni_itinerari_per_scoprire_marche} 
93		                </span> 
94		            </div> 
95		        </div> 
96		    </div> 
97		     
98		    <#-- slider centrale --> 
99			<div class="slider-container pb-0"> 
100				<div class="uk-position-relative uk-visible-toggle" tabindex="-1" uk-slider="center: true; autoplay: true; autoplay-interval: 3000; pause-on-hover: true; clsActivated: active;"> 
101					 <ul class="uk-slider-items uk-child-width-1-2 uk-child-width-1-2@s uk-child-width-1-4@m"> 
102		    			<#assign contatore = 0 /> 
103	    				<#list entries as curEntry> 
104							<#if curEntry.getClassName() == "com.liferay.journal.model.JournalArticle"> 
105								<#assign contatore = contatore + 1 />			 
106 
107								<#-- ricavo il journalArticle --> 
108								<#assign assetRenderer = curEntry.getAssetRenderer()/> 
109		           				<#assign journalArticle = assetRenderer.getAssetObject() /> 
110		           				 
111		           				<#-- primary key journal article --> 
112								<#assign journalArticlePrimKey = journalArticle.resourcePrimKey/> 
113		           				 
114		           				<#-- ricavo la view url --> 
115					    		<#assign viewUrl = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) /> 
116								<#if assetLinkBehavior != "showFullContent"> 
117									<#assign viewUrl = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewUrl) />			 
118								</#if> 
119								 
120								<#-- categorie -->				 
121								<#assign categorie = [] /> 
122								<#-- creo variabili di appoggio per separare le categorie in base al vocabolario --> 
123								<#assign categorieItinerari = [] /> 
124								<#assign altreCategorie = [] /> 
125								 
126								<#-- recupero l'elenco delle categorie da visualizzare --> 
127								<#assign categorie = getListCategoryByArticlePrimKey( journalArticlePrimKey ) /> 
128								 
129								<#-- ciclo le categorie e prendo solo quelle che appartengono al vocabolario Area Geografica --> 
130								<#if categorie?? && (categorie?size > 0)> 
131									<#list categorie as curCat> 
132										<#if validator.isNotNull(curCat) && curCat != ""> 
133											<#if curCat.getVocabularyId() == getterUtil.getLong(ITINERARI_VOCABULARY_ID)> 
134												<#assign categorieItinerari = categorieItinerari + [curCat] /> 
135											<#else> 
136												<#assign altreCategorie = altreCategorie + [curCat] /> 
137											</#if> 
138										</#if> 
139									</#list> 
140								</#if> 
141								 
142								<#-- inizializzo le variabili usate in seguito --> 
143								<#assign itineraryTitle = "", itineraryImage = "", imageUrl = "", imageTitle = "", itineraryDuration = 0 /> 
144								 
145								<#-- ricavo dalla struttura i dati che mi servono per creare le card --> 
146								<#-- struttura: title - campo obbligatorio --> 
147			                    <#assign itineraryTitle = getFieldValue(journalArticle, 'itineraryTitle') /> 
148 
149								<#-- struttura: image - blocco ripetibile, prendo la prima --> 
150			                    <#assign itineraryImage = getFieldValue(journalArticle, 'itineraryImage') /> 
151			                    <#attempt> 
152				                    <#assign imageJson = jsonFactoryUtil.createJSONObject(itineraryImage) /> 
153				                    <#if imageJson?? && imageJson?has_content && imageJson.uuid?? && imageJson.groupId??> 
154										<#assign imageDlFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(imageJson.uuid,imageJson.groupId?number) /> 
155										<#assign imageUrl = "/documents/"+groupId+"/"+imageDlFileEntry.getFolderId()+"/"+imageDlFileEntry.getFileName()+"/"+imageJson.uuid /> 
156	 
157										<#-- se esiste l'immagine, prelevo i dati relativi al tipo di documento --> 
158										<#if validator.isNotNull(imageUrl)> 
159											<#-- a partire dal link, lo splitto e ricavo il secondo ed il 5 argomento che mi servono per il metodo successivo --> 
160											<#assign parts = (imageUrl)?split("/") /> 
161											<#assign groupId = getterUtil.getLong(parts[2]) /> 
162											<#assign uuId = parts[5]?split("?")[0] /> 
163											 
164											<#assign dlFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(uuId,groupId) /> 
165											<#assign versionId = dlFileEntry.getLatestFileVersion(true).getFileVersionId() /> 
166										 	 
167										 	<#-- ricavo i valori del tipo di documento --> 
168										 	<#assign formMap = dlFileEntry.getDDMFormValuesMap(versionId) /> 
169											 
170											<#-- inizializzo la variabile, con il titolo dell'articolo che è obbligatorio --> 
171										 	<#assign imageTitle = "${itineraryTitle}" />		 
172										 	 
173										 	<#-- ricavo i metadata associati al tipo di documento, se esistono--> 
174										 	<#list formMap?keys as formKey> 
175												<#assign formValues = formMap[formKey].getDDMFormFieldValues() /> 
176												<#if formValues??> 
177													<#list formValues as formValue> 
178														<#if formValue.getDDMFormField().getFieldReference() == "imageTitle"> 
179															<#if formValue.getValue().getString(locale) != ""> 
180																<#assign imageTitle = formValue.getValue().getString(locale) /> 
181															</#if>	 
182														</#if> 
183													</#list> 
184												</#if> 
185											</#list> 
186										</#if> 
187									</#if> 
188			                    <#recover> 
189			                    	<#-- in caso di problemi non visualizzo nulla --> 
190			                    </#attempt> 
191								 
192								<#-- struttura: itineraryDuration - campo obbligatorio --> 
193			                    <#-- 
194			                    <#assign itineraryDuration = getFieldValue(journalArticle, 'itineraryDuration') /> 
195								--> 
196								 
197								<#-- costruisco l'html della slider --> 
198								<#if validator.isNotNull(itineraryTitle)> 
199									<li class="link-container"> 
200										<div class="content bg-gray"> 
201											<a href="${viewUrl}" title="${label_vai_dettaglio} ${htmlUtil.escapeAttribute(itineraryTitle)}" class="position-relative"> 
202												<#if validator.isNotNull(imageUrl)> 
203													<img class="card-object-fit" src="${imageUrl}" alt="${htmlUtil.escapeAttribute(imageTitle)}"> 
204												</#if> 
205												<div class="d-flex justify-content-center align-items-center position-absolute info transition"> 
206													<div class="position-absolute text-center"> 
207														<#-- 
208														<#if validator.isNotNull(itineraryDuration)> 
209															<#assign numDays = getterUtil.getLong(itineraryDuration) / 24 /> 
210															<span class="d-inline-block mb-3 durata">${numDays} ${label_giorni}</span> 
211														</#if> 
212														--> 
213														<span class="d-block tit-link attivita">${itineraryTitle}</span> 
214													</div> 
215												</div> 
216											</a> 
217											<#-- categorie --> 
218                    						<#if categorieItinerari?? && (categorieItinerari?size gt 0)> 
219												<div class="itinerario-bottom px-3 py-3"> 
220													<div class="text-center"> 
221														<span>${label_itinerario_prevede}</span> 
222														<#-- aggiunte classi mb-0 e my-0 --> 
223														<div class="row d-flex justify-content-center mt-3 mb-0 my-0"> 
224															<#list categorieItinerari as curCat> 
225																<#if validator.isNotNull(curCat) && curCat != ""> 
226																	<#attempt> 
227																		<#-- se la categoria ha la property categoryImgUuid, ricavo il relativo valore --> 
228																		<#assign catImgUuid = "" /> 
229																		<#if assetCategoryPropertyLocalService.getCategoryProperty(curCat.getCategoryId(), "categoryImgUuid")??> 
230																			<#assign catImgUuid = assetCategoryPropertyLocalService.getCategoryProperty(curCat.getCategoryId(), "categoryImgUuid") /> 
231																			<#if catImgUuid != ""> 
232																				<#assign catImg = dlFileEntryLocalService.fetchDLFileEntryByUuidAndGroupId(catImgUuid.getValue(), groupId) /> 
233																				 
234																				<#-- inizializzo le variabili usate in seguito --> 
235																				<#assign catImgUrl = "" /> 
236																				 
237																			 	<#-- ricavo l'url dell'img --> 
238														                    	<#if catImg?? && catImg?has_content && catImg.uuid?? && catImg.groupId??> 
239																					<#assign catImgDlFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(catImg.uuid,catImg.groupId?number) /> 
240																					<#assign catImgUrl = "/documents/"+groupId+"/"+catImgDlFileEntry.getFolderId()+"/"+catImgDlFileEntry.getFileName()+"/"+catImg.uuid /> 
241																				 
242																					<div class="col-3 px-2"> 
243																						<img class="extra" src="${catImgUrl}" alt="${curCat.getTitle(locale)}" title="${curCat.getTitle(locale)}"> 
244																					</div> 
245																				</#if> 
246																			</#if> 
247																		</#if> 
248																	<#recover> 
249																		<#-- in caso di problemi non visualizzo nulla --> 
250																	</#attempt> 
251																</#if> 
252															</#list> 
253														</div> 
254													</div> 
255												</div> 
256											</#if> 
257										</div> 
258									</li> 
259								</#if> 
260								 
261		    				</#if> 
262		    			</#list> 
263		    		</ul> 
264					<div class="position-absolute nav-arrows"> 
265						<a class="prev" href="#" uk-slidenav-previous uk-slider-item="previous" title="${label_vai_itinerario_precedente}"></a> 
266						<a class="next" href="#" uk-slidenav-next uk-slider-item="next" title="${label_vai_itinerario_successivo}"></a> 
267					</div> 
268		    	</div> 
269		    	 
270		    	<#-- pagina itinerari --> 
271				<#if validator.isNotNull(ITINERARI_PAGE_URL)> 
272					<div class="d-flex justify-content-center align-items-center mt-5"> 
273						<a class="btn-light" href="${ITINERARI_PAGE_URL}" title="${label_tutti_gli_itinerari}"> 
274							<span>${label_tutti_gli_itinerari}</span> 
275						</a> 
276					</div> 
277				</#if> 
278				 
279		    </div> 
280		     
281		</div>			 
282	</section> 
283</#if>