Asturias is one of the most fun and attractive destinations you can imagine for a group vacation, with a wide range of leisure activities in an incomparable natural setting
Plans to get active in the heart of nature
When it comes to active tourism and hiking, you have a multitude of options for enjoying the beach and the mountains on your trips with friends.
Ecotourism and beaches
Moreover, the three cities of Asturias are perfect for the best group plans, hosting a large part of the Asturian cultural offer or being the neuralgic point to visit other nearby resources.
Numerous places to get to know Asturias through its museums, discover what daily life was like for the miners or enjoy Pre-Romanesque Art.
The 10 museums in Asturias that you can't miss
An itinerary through the 10 museums of Asturias that you cannot miss will be a delightful journey through the soul of a land of splendid landscapes and great landscapes.
The best places to get to know the Asturian Pre-Romanesque period
An itinerary through Asturian Pre-Romanesque Art is a fascinating journey into the past and the present, amidst architecture and landscapes that will totally captivate you.
7 irresistible plans to feel like a miner in Asturias
Asturias is a land that gives you the chance to put yourself in the shoes of a miner... Here are 7 irresistible plans!
The following has evaluated to null or missing: ==> portletSetupCustomTitleHTMLMarkup [in template "37703#37743#1376206" at line 27, column 74] ---- 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: #switch portletSetupCustomTitleHTMLMa... [in template "37703#37743#1376206" at line 27, column 65] ----
1<#include "${templatesPath}/NAVIGATION-MACRO-FTL" />
2
3<#assign navItems = entries />
4<#if navItems?has_content>
5
6 <#assign size = navItems?size />
7 <#assign portletSetupCustomTitle = "" />
8 <#assign portletSetupCustomDescription = "" />
9 <#if portletDisplay.getPortletSetup()??>
10 <#assign portletSetupCustomTitle = portletDisplay.getPortletSetup().getValue("portletSetupTitle_${themeDisplay.getLanguageId()}", "") />
11 <#assign portletSetupCustomDescription = portletDisplay.getPortletSetup().getValue("portletSetupDescription_${themeDisplay.getLanguageId()}", "") />
12 </#if>
13 <#assign uuidBannerDefault = themeDisplay.getLayoutSet().getSettingsProperty("banner")!""/>
14 <#assign pathBannerDefault = ""/>
15 <#if uuidBannerDefault!="">
16 <#assign pathBannerDefault= dlTool.getPathByUuid(uuidBannerDefault, groupId)/>
17 </#if>
18 <nav class="template template-background-mosaic-2-2">
19
20 <div class="row align-items-center">
21 <#if portletSetupCustomTitle?has_content || portletSetupCustomDescription?has_content>
22 <div class="col-12 col-lg-3">
23 <div class="portlet-header px-xxl-5">
24 <div class="portlet-custom-title">
25 <#if portletSetupCustomTitle?has_content>
26
27 <#switch portletSetupCustomTitleHTMLMarkup>
28 <#case "h2">
29 <h2 class="portlet-title-text">${portletSetupCustomTitle}</h2>
30 <#break>
31 <#case "h3">
32 <h3 class="portlet-title-text">${portletSetupCustomTitle}</h3>
33 <#break>
34 <#case "h4">
35 <h4 class="portlet-title-text">${portletSetupCustomTitle}</h4>
36 <#break>
37 <#default>
38 <span class="portlet-title-text">${portletSetupCustomTitle}</span>
39 </#switch>
40
41 </#if>
42 <#if portletSetupCustomDescription?has_content>
43 <div class="portlet-description-text">${portletSetupCustomDescription}</div>
44 </#if>
45 </div>
46 </div>
47 </div>
48 </#if>
49
50 <div class="<#if portletSetupCustomTitle?has_content || portletSetupCustomDescription?has_content>col-12 col-lg-9 <#else> col-12 </#if>">
51
52 <div class="row row-mosaic gx-5 gy-5">
53
54 <#if validator.isNotNull(navItems[0])>
55 <#assign navItem1= navItems[0]!/>
56 <#if validator.isNotNull(navItem1.getLayout()) && validator.isNotNull(navItem1.getLayout())>
57 <#assign layout = navItem1.getLayout()! />
58 <#assign layoutName = layout.getName(locale) />
59 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
60 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
61 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
62 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
63 <div class="col-xl-6 col-md-4 col-sm-6 col-mosaic">
64 <a class="card card-background card-background-title-middle" href="${navItem1.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
65 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
66 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
67 <span class="card-body">
68 <h3 class="card-title" >${navItem1.getName()}</h3>
69 </span>
70 </span>
71 </a>
72 </div>
73 </#if>
74 </#if>
75
76 <#if navItems[1]?has_content>
77 <#assign navItem2 = navItems[1]!/>
78 <#if validator.isNotNull(navItem2.getLayout()) && validator.isNotNull(navItem2.getLayout())>
79 <#assign layout = navItem2.getLayout()! />
80 <#assign layoutName = layout.getName(locale) />
81 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
82 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
83 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
84 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
85 <div class="col-xl-6 col-md-4 col-sm-6 col-mosaic">
86 <a class="card card-background card-background-title-middle" href="${navItem2.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
87 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
88 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
89 <span class="card-body">
90 <h3 class="card-title" >${navItem2.getName()}</h3>
91 </span>
92 </span>
93 </a>
94 </div>
95 </#if>
96 </#if>
97
98 <#if navItems[2]?has_content>
99 <#assign navItem3 = navItems[2]!/>
100 <#if validator.isNotNull(navItem3.getLayout()) && validator.isNotNull(navItem3.getLayout())>
101 <#assign layout = navItem3.getLayout()! />
102 <#assign layoutName = layout.getName(locale) />
103 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
104 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
105 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
106 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
107 <div class="col-xl-3 col-md-4 col-sm-6 col-mosaic">
108 <a class="card card-background card-background-title-middle" href="${navItem3.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
109 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
110 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
111 <span class="card-body">
112 <h3 class="card-title" >${navItem3.getName()}</h3>
113 </span>
114 </span>
115 </a>
116 </div>
117 </#if>
118 </#if>
119
120
121 <#if navItems[3]?has_content>
122 <#assign navItem4 = navItems[3]!/>
123 <#if validator.isNotNull(navItem4.getLayout()) && validator.isNotNull(navItem4.getLayout())>
124 <#assign layout = navItem4.getLayout()! />
125 <#assign layoutName = layout.getName(locale) />
126 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
127 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
128 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
129 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
130 <div class="col-xl-3 col-md-4 col-sm-6 col-mosaic">
131 <a class="card card-background card-background-title-middle" href="${navItem4.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
132 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
133 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
134 <span class="card-body">
135 <h3 class="card-title" >${navItem4.getName()}</h3>
136 </span>
137 </span>
138 </a>
139 </div>
140 </#if>
141 </#if>
142
143 <#if navItems[4]?has_content>
144 <#assign navItem5 = navItems[4]!/>
145 <#if validator.isNotNull(navItem5.getLayout()) && validator.isNotNull(navItem5.getLayout())>
146 <#assign layout = navItem5.getLayout()! />
147 <#assign layoutName = layout.getName(locale) />
148 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
149 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
150 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
151 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
152 <div class="col-xl-3 col-md-4 col-sm-6 col-mosaic">
153 <a class="card card-background card-background-title-middle" href="${navItem5.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
154 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
155 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
156 <span class="card-body">
157 <h3 class="card-title" >${navItem5.getName()}</h3>
158 </span>
159 </span>
160 </a>
161 </div>
162 </#if>
163 </#if>
164
165 <#if navItems[5]?has_content>
166 <#assign navItem6 = navItems[5]!/>
167 <#if validator.isNotNull(navItem6.getLayout()) && validator.isNotNull(navItem6.getLayout())>
168 <#assign layout = navItem6.getLayout()! />
169 <#assign layoutName = layout.getName(locale) />
170 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
171 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
172 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
173 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
174 <div class="col-xl-3 col-md-4 col-sm-6 col-mosaic">
175 <a class="card card-background card-background-title-middle" href="${navItem6.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
176 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
177 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
178 <span class="card-body">
179 <h3 class="card-title" >${navItem6.getName()}</h3>
180 </span>
181 </span>
182 </a>
183 </div>
184 </#if>
185 </#if>
186 </div>
187 </div>
188 </div>
189 </nav>
190</#if>
The following has evaluated to null or missing: ==> portletSetupCustomTitleHTMLMarkup [in template "37703#37743#1376206" at line 27, column 74] ---- 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: #switch portletSetupCustomTitleHTMLMa... [in template "37703#37743#1376206" at line 27, column 65] ----
1<#include "${templatesPath}/NAVIGATION-MACRO-FTL" />
2
3<#assign navItems = entries />
4<#if navItems?has_content>
5
6 <#assign size = navItems?size />
7 <#assign portletSetupCustomTitle = "" />
8 <#assign portletSetupCustomDescription = "" />
9 <#if portletDisplay.getPortletSetup()??>
10 <#assign portletSetupCustomTitle = portletDisplay.getPortletSetup().getValue("portletSetupTitle_${themeDisplay.getLanguageId()}", "") />
11 <#assign portletSetupCustomDescription = portletDisplay.getPortletSetup().getValue("portletSetupDescription_${themeDisplay.getLanguageId()}", "") />
12 </#if>
13 <#assign uuidBannerDefault = themeDisplay.getLayoutSet().getSettingsProperty("banner")!""/>
14 <#assign pathBannerDefault = ""/>
15 <#if uuidBannerDefault!="">
16 <#assign pathBannerDefault= dlTool.getPathByUuid(uuidBannerDefault, groupId)/>
17 </#if>
18 <nav class="template template-background-mosaic-2-2">
19
20 <div class="row align-items-center">
21 <#if portletSetupCustomTitle?has_content || portletSetupCustomDescription?has_content>
22 <div class="col-12 col-lg-3">
23 <div class="portlet-header px-xxl-5">
24 <div class="portlet-custom-title">
25 <#if portletSetupCustomTitle?has_content>
26
27 <#switch portletSetupCustomTitleHTMLMarkup>
28 <#case "h2">
29 <h2 class="portlet-title-text">${portletSetupCustomTitle}</h2>
30 <#break>
31 <#case "h3">
32 <h3 class="portlet-title-text">${portletSetupCustomTitle}</h3>
33 <#break>
34 <#case "h4">
35 <h4 class="portlet-title-text">${portletSetupCustomTitle}</h4>
36 <#break>
37 <#default>
38 <span class="portlet-title-text">${portletSetupCustomTitle}</span>
39 </#switch>
40
41 </#if>
42 <#if portletSetupCustomDescription?has_content>
43 <div class="portlet-description-text">${portletSetupCustomDescription}</div>
44 </#if>
45 </div>
46 </div>
47 </div>
48 </#if>
49
50 <div class="<#if portletSetupCustomTitle?has_content || portletSetupCustomDescription?has_content>col-12 col-lg-9 <#else> col-12 </#if>">
51
52 <div class="row row-mosaic gx-5 gy-5">
53
54 <#if validator.isNotNull(navItems[0])>
55 <#assign navItem1= navItems[0]!/>
56 <#if validator.isNotNull(navItem1.getLayout()) && validator.isNotNull(navItem1.getLayout())>
57 <#assign layout = navItem1.getLayout()! />
58 <#assign layoutName = layout.getName(locale) />
59 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
60 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
61 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
62 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
63 <div class="col-xl-6 col-md-4 col-sm-6 col-mosaic">
64 <a class="card card-background card-background-title-middle" href="${navItem1.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
65 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
66 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
67 <span class="card-body">
68 <h3 class="card-title" >${navItem1.getName()}</h3>
69 </span>
70 </span>
71 </a>
72 </div>
73 </#if>
74 </#if>
75
76 <#if navItems[1]?has_content>
77 <#assign navItem2 = navItems[1]!/>
78 <#if validator.isNotNull(navItem2.getLayout()) && validator.isNotNull(navItem2.getLayout())>
79 <#assign layout = navItem2.getLayout()! />
80 <#assign layoutName = layout.getName(locale) />
81 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
82 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
83 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
84 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
85 <div class="col-xl-6 col-md-4 col-sm-6 col-mosaic">
86 <a class="card card-background card-background-title-middle" href="${navItem2.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
87 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
88 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
89 <span class="card-body">
90 <h3 class="card-title" >${navItem2.getName()}</h3>
91 </span>
92 </span>
93 </a>
94 </div>
95 </#if>
96 </#if>
97
98 <#if navItems[2]?has_content>
99 <#assign navItem3 = navItems[2]!/>
100 <#if validator.isNotNull(navItem3.getLayout()) && validator.isNotNull(navItem3.getLayout())>
101 <#assign layout = navItem3.getLayout()! />
102 <#assign layoutName = layout.getName(locale) />
103 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
104 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
105 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
106 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
107 <div class="col-xl-3 col-md-4 col-sm-6 col-mosaic">
108 <a class="card card-background card-background-title-middle" href="${navItem3.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
109 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
110 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
111 <span class="card-body">
112 <h3 class="card-title" >${navItem3.getName()}</h3>
113 </span>
114 </span>
115 </a>
116 </div>
117 </#if>
118 </#if>
119
120
121 <#if navItems[3]?has_content>
122 <#assign navItem4 = navItems[3]!/>
123 <#if validator.isNotNull(navItem4.getLayout()) && validator.isNotNull(navItem4.getLayout())>
124 <#assign layout = navItem4.getLayout()! />
125 <#assign layoutName = layout.getName(locale) />
126 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
127 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
128 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
129 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
130 <div class="col-xl-3 col-md-4 col-sm-6 col-mosaic">
131 <a class="card card-background card-background-title-middle" href="${navItem4.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
132 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
133 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
134 <span class="card-body">
135 <h3 class="card-title" >${navItem4.getName()}</h3>
136 </span>
137 </span>
138 </a>
139 </div>
140 </#if>
141 </#if>
142
143 <#if navItems[4]?has_content>
144 <#assign navItem5 = navItems[4]!/>
145 <#if validator.isNotNull(navItem5.getLayout()) && validator.isNotNull(navItem5.getLayout())>
146 <#assign layout = navItem5.getLayout()! />
147 <#assign layoutName = layout.getName(locale) />
148 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
149 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
150 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
151 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
152 <div class="col-xl-3 col-md-4 col-sm-6 col-mosaic">
153 <a class="card card-background card-background-title-middle" href="${navItem5.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
154 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
155 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
156 <span class="card-body">
157 <h3 class="card-title" >${navItem5.getName()}</h3>
158 </span>
159 </span>
160 </a>
161 </div>
162 </#if>
163 </#if>
164
165 <#if navItems[5]?has_content>
166 <#assign navItem6 = navItems[5]!/>
167 <#if validator.isNotNull(navItem6.getLayout()) && validator.isNotNull(navItem6.getLayout())>
168 <#assign layout = navItem6.getLayout()! />
169 <#assign layoutName = layout.getName(locale) />
170 <#assign layoutTitle = layoutTool.getTitle(layout, locale)! />
171 <#assign layoutDescription = layoutTool.getDescription(layout, locale)! />
172 <#assign layoutImageUuid = layoutTool.getLayoutSetting(layout, "image")! />
173 <#assign layoutImage = dlTool.getThumbnailByUuid(layoutImageUuid, themeDisplay.getScopeGroupId(), "3", pathBannerDefault)! />
174 <div class="col-xl-3 col-md-4 col-sm-6 col-mosaic">
175 <a class="card card-background card-background-title-middle" href="${navItem6.getURL()}" title="${languageUtil.format(request, 'go-to-x', layoutName)}">
176 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${layoutImage}');">
177 <img class="hide-accessible" src="${layoutImage}" alt="${languageUtil.get(request,'image')} ${layoutName}"/>
178 <span class="card-body">
179 <h3 class="card-title" >${navItem6.getName()}</h3>
180 </span>
181 </span>
182 </a>
183 </div>
184 </#if>
185 </#if>
186 </div>
187 </div>
188 </div>
189 </nav>
190</#if>