An error occurred while processing the template.
The following has evaluated to null or missing:
==> getVocabularyGlobalEntero(themeDisplay.getLayout().getGroupId(),hotel,"Destinos")  [in template "20097#20123#317547" at line 57, column 91]

----
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 categoriaHotel = getVocabular...  [in template "20097#20123#317547" in macro "pintarCuadroMobile" at line 57, column 65]
	- Reached through: @pintarCuadroMobile c=c.destino  [in template "20097#20123#317547" at line 120, column 25]
----
1<#assign classLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") /> 
2<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") /> 
3<#assign group = groupLocalService.fetchFriendlyURLGroup(themeDisplay.getCompanyId(), "/global") /> 
4<#assign classNameId = classLocalService.getClassName("com.liferay.dynamic.data.mapping.model.DDMStructure").getClassNameId() /> 
5<#include "_TEMPLATE_CONTEXT_/${themeDisplay.getCompanyId()}/${group.getGroupId()}/${classNameId}/249903" /> 
6<#assign journalLocalServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
7<#assign dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") /> 
8 
9<#macro pintarCuadro(c)> 
10   <#if (c.imagen.getData())?? && c.imagen.getData() != ""> 
11	 			<@adaptive_media_image["img"] fileVersion=dlAppService.getFileEntry(c.imagen.getAttribute("fileEntryId")?number).getFileVersion() alt="${c.imagen.getAttribute('alt')}" loading="lazy" /> 
12    </#if> 
13    <div class="w-100 h-100 d-flex flex-column justify-content-between"> 
14        <section class="p-20"> 
15            <h2 class="tituloH4 mb-0 d-inline-block text-uppercase mr-2"><#if (c.ciudad.getData())??>${c.ciudad.getData()}</#if></h2> 
16            <span class="light-15"><#if (c.pais.getData())??>${c.pais.getData()}</#if></span> 
17						<#assign listaHotelesBorrar = []/> 
18						<#list listaHotelesUnicos as hotel> 
19								<#assign categoriaHotel = getVocabularyGlobalEntero(themeDisplay.getLayout().getGroupId(),hotel,"Destinos") /> 
20								<#if categoriaHotel?? && categoriaHotel!="" && (categoriaHotel.getName()?lower_case)?contains(c.ciudad.getData()?lower_case)> 
21									<#assign nHoteles += 1/> 
22									<#assign listaHotelesBorrar = listaHotelesBorrar + [hotel]/> 
23								</#if> 
24						</#list> 
25						<#assign listaNueva = []/> 
26						<#list listaHotelesUnicos as hotel> 
27							<#if !listaHotelesBorrar?seq_contains(hotel)> 
28								<#assign listaNueva = listaNueva + [hotel]/> 
29							</#if> 
30						</#list> 
31						<#assign listaHotelesUnicos = listaNueva/> 
32						 
33            <p class="light-paragraph-13"><#if nHoteles??>${nHoteles} <#if nHoteles gt 1>${languageUtil.get(themeDisplay.getLocale(), 'hotels')}<#else>${languageUtil.get(themeDisplay.getLocale(), 'hotel')}</#if></#if></p> 
34        </section> 
35        <section class="p-y-16 p-x-24"> 
36            <p class="text-right regular-15 mb-0"><#if (c.desde.getData())??>${c.desde.getData()}</#if></p> 
37            <p class="text-right precioSmall mb-0"><#if (c.precio.getData())??>${c.precio.getData()}</#if></p> 
38            <p class="text-right regular-15 mb-0"><#if (c.persNoche.getData())??>${c.persNoche.getData()}</#if></p> 
39        </section> 
40    </div> 
41</#macro> 
42 
43<#macro pintarCuadroMobile(c)> 
44   <#if (c.ImagenMobile.getData())?? && c.ImagenMobile.getData() != ""> 
45	 			<@adaptive_media_image["img"] fileVersion=dlAppService.getFileEntry(c.ImagenMobile.getAttribute("fileEntryId")?number).getFileVersion() alt="${c.ImagenMobile.getAttribute('alt')}" loading="lazy" /> 
46    <#else> 
47			<#if (c.imagen.getData())?? && c.imagen.getData() != ""> 
48				<@adaptive_media_image["img"] fileVersion=dlAppService.getFileEntry(c.imagen.getAttribute("fileEntryId")?number).getFileVersion() alt="${c.imagen.getAttribute('alt')}" loading="lazy" /> 
49			</#if> 
50		</#if> 
51    <div class="w-100 h-100 d-flex flex-column justify-content-between p-15"> 
52        <section class=""> 
53            <h2 class="regular-15 mb-0 text-uppercase d-inline-block mr-2"><#if (c.ciudad.getData())??>${c.ciudad.getData()}</#if></h2> 
54            <span class="light-15"><#if (c.pais.getData())??>${c.pais.getData()}</#if></span> 
55						<#assign listaHotelesBorrar = []/> 
56						<#list listaHotelesUnicosMobile as hotel> 
57								<#assign categoriaHotel = getVocabularyGlobalEntero(themeDisplay.getLayout().getGroupId(),hotel,"Destinos") /> 
58								<#if categoriaHotel?? && categoriaHotel!="" && (categoriaHotel.getName()?lower_case)?contains(c.ciudad.getData()?lower_case)> 
59									<#assign nHoteles += 1/> 
60									<#assign listaHotelesBorrar = listaHotelesBorrar + [hotel]/> 
61								</#if> 
62						</#list> 
63						<#assign listaNueva = []/> 
64						<#list listaHotelesUnicosMobile as hotel> 
65							<#if !listaHotelesBorrar?seq_contains(hotel)> 
66								<#assign listaNueva = listaNueva + [hotel]/> 
67							</#if> 
68						</#list> 
69						<#assign listaHotelesUnicosMobile = listaNueva/> 
70						 
71						<p class="light-paragraph-13 mb-0"><#if nHoteles??>${nHoteles} <#if nHoteles gt 1>${languageUtil.get(themeDisplay.getLocale(), 'hotels')}<#else>${languageUtil.get(themeDisplay.getLocale(), 'hotel')}</#if></#if></p> 
72        </section> 
73        <section class=""> 
74            <p class="text-right regular-15 mb-0"><#if (c.desde.getData())??>${c.desde.getData()}</#if></p> 
75            <p class="text-right precioSmall mb-0"><#if (c.precio.getData())??>${c.precio.getData()}</#if></p> 
76            <p class="text-right regular-15 mb-0"><#if (c.persNoche.getData())??>${c.persNoche.getData()}</#if></p> 
77        </section> 
78    </div> 
79</#macro> 
80 
81<section class="p-yt-75 bg-white" loading="lazy"> 
82  <section class="mwidth-1440 p-x-48 m-yb-25-40"> 
83	  <h1 class="tituloH2 text-uppercase fuente-titulos m-yb-25-40"><#if (titulo.getData())??>${titulo.getData()}</#if></h1> 
84	    <section class="desplegable"> 
85        <section class="light-15 mb-0 texto"> 
86	        <#if (Texto.getData())??>${Texto.getData()?replace("<p>","")?replace("</p>","")}</#if> 
87        </section> 
88        <button class="btn-leer-mas px-0">${languageUtil.get(themeDisplay.getLocale(), 'read-more')}</button> 
89      </section> 
90  </section> 
91 
92<#assign listaOrdenar = [] /> 
93<#if cuadricula.getSiblings()?has_content> 
94	<#list cuadricula.getSiblings() as c> 
95		<#assign listaOrdenar += [{"orden": c["ordenMobile"]["data"] , "destino": c }]/> 
96	</#list> 
97</#if> 
98<#assign listaOrdenada = listaOrdenar?sort_by("orden")/> 
99 
100<#assign listaHoteles= journalLocalServiceUtil.getStructureArticles(47016) /> 
101<#assign listaHotelesUnicos = [] /> 
102<#assign listaHotelesUnicosMobile = []/> 
103<#list listaHoteles as hotel> 
104	<#if hotel?? && !hotel.isInTrash() && journalLocalServiceUtil.isLatestVersion(hotel.getGroupId(), hotel.getArticleId(), hotel.getVersion()) && hotel.getGroupId()=themeDisplay.getScopeGroupId()> 
105		<#assign listaHotelesUnicos = listaHotelesUnicos + [hotel.getArticleId()] /> 
106		<#assign listaHotelesUnicosMobile = listaHotelesUnicosMobile + [hotel.getArticleId()] /> 
107	</#if> 
108</#list> 
109 
110  <section class=""> 
111    <!-- Slider mobile --> 
112    <div class="d-flex d-xl-none imagenes-slider sliderHorizontal swiper"> 
113			<div class="swiper-wrapper"> 
114        <#if listaOrdenada?has_content> 
115            <#list listaOrdenada as c> 
116							<#assign nHoteles = 0/> 
117                <#if c?is_first> 
118									<a href="javascript:void(0);" class="card-mobile swiper-slide"> 
119                    <article class="card-destino d-inline-block ml-0"> 
120                        <@pintarCuadroMobile c=c.destino/> 
121                    </article> 
122									</a> 
123								<#elseif c?is_last> 
124								  <a href="javascript:void(0);" class="card-mobile swiper-slide"> 
125								    <article class="card-destino d-inline-block mr-0"> 
126                        <@pintarCuadroMobile c=c.destino/> 
127                    </article> 
128									</a> 
129                <#else> 
130								  <a href="javascript:void(0);" class="card-mobile swiper-slide"> 
131                    <article class="card-destino d-inline-block"> 
132                        <@pintarCuadroMobile c=c.destino/> 
133                    </article> 
134									</a> 
135                </#if> 
136            </#list> 
137        </#if> 
138				</div> 
139				<section class="btn-prev-container position-absolute d-flex align-items-center" 
140                        style="transform: translateY(150px)"> 
141                        <button class="btn-prev p-0"> 
142                            <svg xmlns="http://www.w3.org/2000/svg" width="71" height="71" viewBox="0 0 71 71" 
143                                fill="none"> 
144                                <rect width="71" height="71" transform="matrix(-1 0 0 1 71 0)" fill="white" 
145                                    fill-opacity="0.7" /> 
146                                <path d="M40.6069 47.4817L28.4529 35.4583" stroke="black" stroke-width="0.5" /> 
147                                <line y1="-0.25" x2="17.7255" y2="-0.25" 
148                                    transform="matrix(-0.707107 0.707107 0.707107 0.707107 40.9211 23.0098)" 
149                                    stroke="black" stroke-width="0.5" /> 
150                            </svg> 
151                        </button> 
152                    </section> 
153                    <section class="btn-next-container position-absolute d-flex align-items-center" 
154                        style="transform: translateY(150px)"> 
155                        <button class="btn-next p-0"> 
156                            <svg xmlns="http://www.w3.org/2000/svg" width="71" height="71" viewBox="0 0 71 71" 
157                                fill="none"> 
158                                <rect width="71" height="71" fill="white" fill-opacity="0.7" /> 
159                                <path d="M30.3931 47.4817L42.5471 35.4583" stroke="black" stroke-width="0.5" /> 
160                                <line x1="30.2557" y1="22.833" x2="42.7895" y2="35.3668" stroke="black" 
161                                    stroke-width="0.5" /> 
162                            </svg> 
163                        </button> 
164                    </section> 
165    </div> 
166		 
167	 
168		 
169		<#assign contad =0> 
170		<div class="d-none d-xl-flex row imagenes-cuadricula p-x-48"> 
171			<#if cuadricula.getSiblings()?has_content> 
172			<#assign hay25 = 0> 
173			<#assign tamColumna = 0> 
174			<#assign nFilas = 0> 
175      <#list cuadricula.getSiblings() as c> 
176				<#assign nHoteles = 0/> 
177			     <#if (nFilas<3)> 
178						<#if tamColumna == 0> 
179						 <#if (c.Tamano.getData()?number==100)> 
180						 <!-- Caso1--> 
181						 <section class="col-4 p-0 pr-1"> 
182							   <#if hay25==1> 
183									<#assign hay25 = 0> 
184									<#assign tamColumna = tamColumna+25> 
185								 </#if> 
186								 <a href="javascript:void(0);" class="tarjeta"> 
187								 <article class="card-destino sombra-bloque m-0 mb-2" style="height: 446px;"> 
188						 			  <@pintarCuadro c=c/> 
189						 		 </article> 
190								 </a> 
191								 <#assign tamColumna = tamColumna+100> 
192 
193							<#elseif (c.Tamano.getData()?number==50)> 
194							<!-- Caso2--> 
195							<section class="col-4 p-0 px-1"> 
196							   <#if hay25==1> 
197									 <#assign hay25 = 0> 
198									 <#assign tamColumna = tamColumna+25> 
199								 </#if> 
200								 <a href="javascript:void(0);" class="tarjeta"> 
201								 <article class="card-destino sombra-bloque mb-2" style="height: 219px;"> 
202									 <@pintarCuadro c=c/> 
203								 </article> 
204								 </a> 
205								 <#assign tamColumna = tamColumna+50> 
206 
207							<#elseif (c.Tamano.getData()?number==25)> 
208							<!-- Caso3--> 
209							<section class="col-4 p-0 px-1"> 
210							   <#if (hay25==0)> 
211								   <a href="javascript:void(0);" class="tarjeta"> 
212								     <article class="card-destino sombra-bloque mb-2" style="height: 219px;"> 
213									    <@pintarCuadro c=c/> 
214								     </article> 
215										</a> 
216								   <#assign hay25 = 1> 
217									 <#assign tamColumna = tamColumna+25> 
218								 <#else> 
219								  <a href="javascript:void(0);" class="tarjeta"> 
220								   <article class="card-destino sombra-bloque mb-2" style="height: 219px;"> 
221									   <@pintarCuadro c=c/> 
222								   </article> 
223									 </a> 
224									 <#assign hay25 = 0> 
225									 <#assign tamColumna = tamColumna+25> 
226								 </#if> 
227 
228							</#if> 
229 
230						<#elseif (tamColumna + c.Tamano.getData()?number > 150)> 
231						  <#if hay25==1> 
232									<#assign hay25 = 0> 
233									<#assign tamColumna = tamColumna+25> 
234							</#if> 
235							<#assign tamColumna = 0> 
236							</section> 
237							<!-- Fin columna--> 
238							<#assign nFilas = nFilas+1> 
239							 
240							<#if (contad==1)> 
241										</section> 
242								</#if> 
243								 
244							<#assign contad =0> 
245							<#if (nFilas<3)> 
246							 <section class="col-4 p-0 px-1"> 
247						   <#if (c.Tamano.getData()?number==100)> 
248							 <!-- Caso4--> 
249							   <#if hay25==1> 
250									<#assign hay25 = 0> 
251									<#assign tamColumna = tamColumna+25> 
252								 </#if> 
253								 <a href="javascript:void(0);" class="tarjeta"> 
254								 <article class="card-destino sombra-bloque m-0"> 
255						 			  <@pintarCuadro c=c/> 
256						 		 </article> 
257								 </a> 
258								 <#assign tamColumna = tamColumna+100> 
259							 <#elseif (c.Tamano.getData()?number==50)> 
260							 <!-- Caso5--> 
261							   <#if hay25==1> 
262									 <#assign hay25 = 0> 
263									 <#assign tamColumna = tamColumna+25> 
264								 </#if> 
265								 <a href="javascript:void(0);" class="tarjeta"> 
266								   <article class="card-destino sombra-bloque mb-2" style="height: 219px;"> 
267									  <@pintarCuadro c=c/> 
268								   </article> 
269									 </a> 
270								 <#assign tamColumna = tamColumna+50> 
271							<#elseif (c.Tamano.getData()?number==25)> 
272							<!-- Caso6--> 
273	 
274							   <#if (hay25==0)> 
275								  <a href="javascript:void(0);" class="tarjeta"> 
276								     <article class="card-destino sombra-bloque m-0"> 
277									    <@pintarCuadro c=c/> 
278								     </article> 
279									</a> 
280								   <#assign hay25 = 1> 
281									 <#assign tamColumna = tamColumna+25> 
282								 <#else> 
283								  <a href="javascript:void(0);" class="tarjeta"> 
284								   <article class="card-destino sombra-bloque m-0"> 
285									   <@pintarCuadro c=c/> 
286								   </article> 
287									 </a> 
288									 <#assign hay25 = 0> 
289									 <#assign tamColumna = tamColumna+25> 
290								 </#if> 
291							</#if> 
292 
293						  </#if> 
294						 
295						<#else> <!-- Columna mayor que 0 --> 
296						 <#if (c.Tamano.getData()?number==100)> 
297						 <!-- Caso7--> 
298							   <#if hay25==1> 
299									<#assign hay25 = 0> 
300									<#assign tamColumna = tamColumna+25> 
301								 </#if> 
302								 <a href="javascript:void(0);" class="tarjeta"> 
303								  <article class="card-destino sombra-bloque" style="height: 446px;"> 
304						 			  <@pintarCuadro c=c/> 
305						 		 </article>  
306								 </a> 
307								 <#assign tamColumna = tamColumna+100> 
308							<#elseif (c.Tamano.getData()?number==50)> 
309							<!-- Caso8--> 
310							   <#if hay25==1> 
311									 <#assign hay25 = 0> 
312									 <#assign tamColumna = tamColumna+25> 
313								 </#if> 
314								 <a href="javascript:void(0);" class="tarjeta"> 
315								    <article class="card-destino sombra-bloque mb-2" style="height: 219px;"> 
316									   <@pintarCuadro c=c/> 
317								   </article> 
318								 </a> 
319								 <#assign tamColumna = tamColumna+50> 
320						  <#elseif (c.Tamano.getData()?number==25)> 
321							<!-- Caso9--> 
322							<#if (contad==0)> 
323										<section class="col row row-cols-2 p-0"> 
324										<#assign contad =contad + 1> 
325								</#if> 
326							   <#if hay25==0> 
327								 <!-- Caso9.1--> 
328								   <a href="javascript:void(0);" class="tarjeta"> 
329								     <article class="col card-destino p-0 pr-1" style="height: 219px"> 
330									    <@pintarCuadro c=c/> 
331								     </article> 
332										</a> 
333								   <#assign hay25 = 1> 
334									 <#assign tamColumna = tamColumna+25> 
335								 <#else> 
336								 <!-- Caso9.2--> 
337								  <a href="javascript:void(0);" class="tarjeta"> 
338								   <article class="col card-destino p-0 pl-1" style="height: 219px"> 
339									   <@pintarCuadro c=c/> 
340								   </article> 
341									</a> 
342									 <#assign hay25 = 0> 
343									 <#assign tamColumna = tamColumna+25> 
344								 </#if> 
345							</#if> 
346							 
347							 
348							 
349						</#if> 
350					</#if> 
351			 </#list> 
352			</#if> 
353		</div> 
354</section> 

ATENCIÓN PERSONALIZADA Y CERCANA

En el Grupo Lopesan queremos que todos nuestros huéspedes vivan una experiencia inolvidable durante sus vacaciones. Nuestros establecimientos ofrecen numersoas alternativas de ocio y bienestar, una cuidada y exquisita gastronomía y todas las comodidades que una buena habitación de hotel merece. Nuestras diferentes marcas intentan dar respuesta a las necesidades de los huéspedes más exigentes.

Nuestro objetivo es fabricar recuerdos felices. Por eso, cada vez que los clientes acceden a un hotel o Resort de Lopesan, nuestro equipo estará preparado para darle la más cálida bienvenida. Se les atenderá y se les ayudará a resolver cualquier duda o cuestión, se les ofrecerá informaicón sobre el destino y haremos todo lo que esté en nuestra mano para que sus vacaciones sean idílicas y perfectas.

ARQUITECTURA CUIDADA Y DIFERENCIADA

En el Grupo Lopesan queremos que todos nuestros huéspedes vivan una experiencia inolvidable durante sus vacaciones. Nuestros establecimientos ofrecen numersoas alternativas de ocio y bienestar, una cuidada y exquisita gastronomía y todas las comodidades que una buena habitación de hotel merece. Nuestras diferentes marcas intentan dar respuesta a las necesidades de los huéspedes más exigentes.

Nuestro objetivo es fabricar recuerdos felices. Por eso, cada vez que los clientes acceden a un hotel o Resort de Lopesan, nuestro equipo estará preparado para darle la más cálida bienvenida. Se les atenderá y se les ayudará a resolver cualquier duda o cuestión, se les ofrecerá informaicón sobre el destino y haremos todo lo que esté en nuestra mano para que sus vacaciones sean idílicas y perfectas.


LOPESAN
in the world

  • Hotels icon
    22
    hotels
  • Rooms icon
    8,247
    rooms
  • Countries icon
    5
    countries
  • Beds icon
    More than
    18,000
    beds
  • Stays icon
    3 millions
    stays in 2019
  • Employees icon
    More than
    5,000
    employees*
  • 34%
    Management
  • 66%
    Ownership