Turismo Asturias

Asturias is a place with incredible landscapes of sea and mountains, being a sustainable, friendly and welcoming destination with a strong cultural identity and a unique landscape cuisine.

Asturias is a destination with a wide range of themed products, which translates into enjoyable and varied leisure plans.

A unique destination, and good proof of this are the different themed products that are in vogue and in full swing, and which provide you with new and exclusive experiences.

An error occurred while processing the template.
Template inclusion failed (for parameter value "_TEMPLATE_CONTEXT_/37703/39908/35601/NAVIGATION-MACRO-FTL"):
Unable to find FreeMarker template with ID _TEMPLATE_CONTEXT_/37703/39908/35601/NAVIGATION-MACRO-FTL

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #include "${templatesPath}/NAVIGATION...  [in template "37703#37743#40235" at line 1, column 1]
----
1<#include "${templatesPath}/NAVIGATION-MACRO-FTL" /> 
2 
3<#assign colsValue = "col-12 col-sm-6 col-lg-3" /> 
4<#if cols?has_content && cols=="custom" && colsCssClass?has_content> 
5	<#assign colsValue = colsCssClass /> 
6<#else> 
7	<#if cols?has_content && cols!="0" && cols!="auto" && cols!="custom"> 
8		<#assign colsMap = { 
9			"0": "col", 
10			"auto": "col", 
11			"custom": colsCssClass, 
12			"1": "col-12",  
13			"2": "col-sm-6 col-12",  
14			"3": "col-lg-4 col-md-6 col-sm-6 col-12", 
15			"4": "col-lg-3 col-md-4 col-sm-6 col-12", 
16			"5": "col-lg-2dot4 col-md-6", 
17			"6": "col-sm-2 col-12", 
18			"7": "col-lg-1dot7 col-12" 
19		} /> 
20		<#assign colsValue = colsMap[cols]/>	 
21	</#if> 
22</#if> 
23 
24<#assign navItems = entries /> 
25<#if navItems?has_content> 
26 
27	<#assign uuidBannerDefault = themeDisplay.getLayoutSet().getSettingsProperty("banner")!""/> 
28	<#assign pathBannerDefault = ""/> 
29	<#if uuidBannerDefault!=""> 
30		<#assign pathBannerDefault= dlTool.getPathByUuid(uuidBannerDefault, groupId)/> 
31	</#if> 
32	<nav class="template template-image"> 
33		<div class="row gx-5 gy-5"> 
34			<#list navItems as navItem>	 
35				<#if validator.isNotNull(navItem.getLayout())> 
36					<#assign layout = navItem.getLayout()! /> 
37					<#assign layoutName = layout.getName(locale) /> 
38					<#assign layoutTitle = layoutTool.getTitle(layout, locale)! /> 
39					<#assign layoutDescription = layoutTool.getDescription(layout, locale)! /> 
40					<#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! /> 
41					<#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! /> 
42					<div class="${colsValue}"> 
43						<a class="card card-background card-background-9-16" href="${navItem.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}"> 
44							<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');"> 
45								<img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>								 
46 
47								<span class="card-body"> 
48									<h3 class="card-title" >${navItem.getName()}</h3> 
49								</span> 
50							</span> 
51						</a> 
52					</div> 
53				</#if> 
54			</#list>			 
55		</div> 
56	</nav> 
57</#if> 
An error occurred while processing the template.
Template inclusion failed (for parameter value "_TEMPLATE_CONTEXT_/37703/39908/35601/NAVIGATION-MACRO-FTL"):
Unable to find FreeMarker template with ID _TEMPLATE_CONTEXT_/37703/39908/35601/NAVIGATION-MACRO-FTL

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #include "${templatesPath}/NAVIGATION...  [in template "37703#37743#40244" at line 1, column 1]
----
1<#include "${templatesPath}/NAVIGATION-MACRO-FTL" /> 
2 
3<#assign navItems = entries /> 
4<#if navItems?has_content> 
5	<#assign size = navItems?size /> 
6	<#assign portletSetupCustomTitle = "" /> 
7	<#assign portletSetupCustomDescription = "" /> 
8	<#if portletDisplay.getPortletSetup()??> 
9		<#assign portletSetupCustomTitle = portletDisplay.getPortletSetup().getValue("portletSetupTitle_${themeDisplay.getLanguageId()}", "") /> 
10		<#assign portletSetupCustomDescription = portletDisplay.getPortletSetup().getValue("portletSetupDescription_${themeDisplay.getLanguageId()}", "") /> 
11	</#if> 
12	<#assign uuidBannerDefault = themeDisplay.getLayoutSet().getSettingsProperty("banner")!""/> 
13	<#assign pathBannerDefault = ""/> 
14	<#if uuidBannerDefault!=""> 
15		<#assign pathBannerDefault= dlTool.getPathByUuid(uuidBannerDefault, groupId)/> 
16	</#if> 
17	<nav class="template template-background-mosaic-2-2"> 
18	 
19		<div class="row align-items-center"> 
20			<#if portletSetupCustomTitle?has_content || portletSetupCustomDescription?has_content> 
21				<div class="col-12 col-lg-3"> 
22					<div class="portlet-header px-xxl-5"> 
23						<div class="portlet-custom-title"> 
24							<#if portletSetupCustomTitle?has_content> 
25								 
26								<#switch portletSetupCustomTitleHTMLMarkup> 
27									<#case "h2"> 
28										<h2 class="portlet-title-text">${portletSetupCustomTitle}</h2> 
29										<#break> 
30									<#case "h3"> 
31										<h3 class="portlet-title-text">${portletSetupCustomTitle}</h3> 
32										<#break> 
33									<#case "h4"> 
34										<h4 class="portlet-title-text">${portletSetupCustomTitle}</h4> 
35										<#break> 
36									<#default> 
37										<span class="portlet-title-text">${portletSetupCustomTitle}</span> 
38								</#switch> 
39								 
40							</#if> 
41							<#if portletSetupCustomDescription?has_content> 
42								<div class="portlet-description-text">${portletSetupCustomDescription}</div> 
43							</#if> 
44						</div> 
45					</div> 
46				</div> 
47			</#if> 
48	 
49			<div class="<#if portletSetupCustomTitle?has_content || portletSetupCustomDescription?has_content>col-12 col-lg-9 <#else> col-12 </#if>"> 
50					<div class="row row-mosaic gx-5 gy-5">	 
51					<#if validator.isNotNull(navItems[0])>					 
52						<#assign navItem1= navItems[0]!/> 
53						<#if validator.isNotNull(navItem1.getLayout()) && validator.isNotNull(navItem1.getLayout())> 
54							<#assign layout = navItem1.getLayout()! /> 
55							<#assign layoutName = layout.getName(locale) /> 
56							<#assign layoutTitle = layoutTool.getTitle(layout, locale)! /> 
57							<#assign layoutDescription = layoutTool.getDescription(layout, locale)! /> 
58							<#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! /> 
59							<#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! /> 
60							<div class="col-xl-6 col-md-4 col-sm-6 col-mosaic"> 
61								<a class="card card-background card-background-title-middle" href="${navItem1.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}"> 
62									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');"> 
63										<img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>								 
64										<span class="card-body"> 
65											<h3 class="card-title" >${navItem1.getName()}</h3> 
66										</span> 
67									</span> 
68								</a> 
69							</div> 
70						</#if> 
71					</#if> 
72					 
73					<#if navItems[1]?has_content>					 
74						<#assign navItem2 = navItems[1]!/> 
75						<#if validator.isNotNull(navItem2.getLayout()) && validator.isNotNull(navItem2.getLayout())> 
76							<#assign layout = navItem2.getLayout()! /> 
77							<#assign layoutName = layout.getName(locale) /> 
78							<#assign layoutTitle = layoutTool.getTitle(layout, locale)! /> 
79							<#assign layoutDescription = layoutTool.getDescription(layout, locale)! /> 
80							<#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! /> 
81							<#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! /> 
82							<div class="col-xl-6 col-md-4 col-sm-6 col-mosaic"> 
83								<a class="card card-background card-background-title-middle" href="${navItem2.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}"> 
84									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');"> 
85										<img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>								 
86										<span class="card-body"> 
87											<h3 class="card-title" >${navItem2.getName()}</h3> 
88										</span> 
89									</span> 
90								</a> 
91							</div> 
92						</#if> 
93					</#if> 
94					 
95					<#if navItems[2]?has_content>					 
96						<#assign navItem3 = navItems[2]!/> 
97						<#if validator.isNotNull(navItem3.getLayout()) && validator.isNotNull(navItem3.getLayout())> 
98							<#assign layout = navItem3.getLayout()! /> 
99							<#assign layoutName = layout.getName(locale) /> 
100							<#assign layoutTitle = layoutTool.getTitle(layout, locale)! /> 
101							<#assign layoutDescription = layoutTool.getDescription(layout, locale)! /> 
102							<#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! /> 
103							<#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! /> 
104							<div class="col-xl-6 col-md-4 col-sm-6 col-mosaic"> 
105								<a class="card card-background card-background-title-middle" href="${navItem3.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}"> 
106									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');"> 
107										<img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>								 
108										<span class="card-body"> 
109											<h3 class="card-title" >${navItem3.getName()}</h3> 
110										</span> 
111									</span> 
112								</a> 
113							</div> 
114						</#if> 
115					</#if> 
116 
117					<#if navItems[3]?has_content> 
118						<#assign navItem4 = navItems[3]!/> 
119						<#if validator.isNotNull(navItem4.getLayout()) && validator.isNotNull(navItem4.getLayout())> 
120							<#assign layout = navItem4.getLayout()! /> 
121							<#assign layoutName = layout.getName(locale) /> 
122							<#assign layoutTitle = layoutTool.getTitle(layout, locale)! /> 
123							<#assign layoutDescription = layoutTool.getDescription(layout, locale)! /> 
124							<#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! /> 
125							<#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! /> 
126							<div class="col-xl-6 col-md-4 col-sm-6 col-mosaic"> 
127								<a class="card card-background card-background-title-middle" href="${navItem4.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}"> 
128									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');"> 
129										<img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>								 
130										<span class="card-body"> 
131											<h3 class="card-title" >${navItem4.getName()}</h3> 
132										</span> 
133									</span> 
134								</a> 
135							</div> 
136						</#if> 
137					</#if> 
138							 
139					<#if navItems[4]?has_content> 
140						<#assign navItem5 = navItems[4]!/> 
141						<#if validator.isNotNull(navItem5.getLayout()) && validator.isNotNull(navItem5.getLayout())> 
142							<#assign layout = navItem5.getLayout()! /> 
143							<#assign layoutName = layout.getName(locale) /> 
144							<#assign layoutTitle = layoutTool.getTitle(layout, locale)! /> 
145							<#assign layoutDescription = layoutTool.getDescription(layout, locale)! /> 
146							<#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! /> 
147							<#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! /> 
148							<div class="col-xl-6 col-md-4 col-sm-6 col-mosaic"> 
149								<a class="card card-background card-background-title-middle" href="${navItem5.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}"> 
150									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');"> 
151										<img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>								 
152										<span class="card-body"> 
153											<h3 class="card-title" >${navItem5.getName()}</h3> 
154										</span> 
155									</span> 
156								</a> 
157							</div> 
158						</#if> 
159					</#if> 
160						 
161					<#if navItems[5]?has_content> 
162						<#assign navItem6 = navItems[5]!/> 
163						<#if validator.isNotNull(navItem6.getLayout()) && validator.isNotNull(navItem6.getLayout())> 
164							<#assign layout = navItem6.getLayout()! /> 
165							<#assign layoutName = layout.getName(locale) /> 
166							<#assign layoutTitle = layoutTool.getTitle(layout, locale)! /> 
167							<#assign layoutDescription = layoutTool.getDescription(layout, locale)! /> 
168							<#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! /> 
169							<#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! /> 
170							<div class="col-xl-6 col-md-4 col-sm-6 col-mosaic"> 
171								<a class="card card-background card-background-title-middle" href="${navItem6.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}"> 
172									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');"> 
173										<img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>								 
174										<span class="card-body"> 
175											<h3 class="card-title" >${navItem6.getName()}</h3> 
176										</span> 
177									</span> 
178								</a> 
179							</div> 
180						</#if> 
181					</#if> 
182				</div> 
183			</div> 
184		</div> 
185	</nav> 
186</#if> 
This is how you can enjoy Asturias
Do you want to see it?
Join us to explore the many beauties and unique corners of the Natural Paradise.

Latest News

Wednesday, 8 July 2026 Summer 2026 offers a wide range of plans and activities for an unforgettable time in Asturias.
Thursday, 2 July 2026 The Asturias Nature Network (RENA) offers a range of varied and enjoyable guided tours, free of charge, through various parts of Asturias’ natural landscape.  
Tuesday, 30 June 2026 On 12 August 2026, Asturias will be treated to a unique spectacle: a total solar eclipse.
Monday, 29 June 2026 This summer, a network of shuttle buses will make it easier to travel without a car to beaches, nature reserves and other attractions across the Principality.
Monday, 1 June 2026 The Principality is once again activating the special public transport plan for the Cares Route, the Bulnes funicular railway and Tielve, Sotres and Collado Pandébano.
View all