1<#-- Cargamos la template TemplateGoToURL -->
2<#assign lopesan360Service = serviceLocator.findService("com.lopesan.common.api.services.Lopesan360Service") />
3<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")/>
4<#assign classLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") />
5<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") />
6<#assign group = groupLocalService.fetchFriendlyURLGroup(themeDisplay.getCompanyId(), "/global") />
7<#assign classNameId = classLocalService.getClassName("com.liferay.dynamic.data.mapping.model.DDMStructure").getClassNameId() />
8<#include "_TEMPLATE_CONTEXT_/${themeDisplay.getCompanyId()}/${group.getGroupId()}/${classNameId}/57893" />
9<#include "_TEMPLATE_CONTEXT_/${themeDisplay.getCompanyId()}/${group.getGroupId()}/${classNameId}/226894" />
10<#include "_TEMPLATE_CONTEXT_/${themeDisplay.getCompanyId()}/${group.getGroupId()}/${classNameId}/249903" />
11
12<#assign pestanaCheckeada = false />
13<#assign numPestana = 999 />
14
15 <!-- DESKTOP -->
16<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
17 <section class="d-none d-lg-block tab-panel bg-white">
18 <ul class="nav nav-tabs w-100 mwidth-1440 p-x-48 d-flex justify-content-center list-unstyled" id="destinosTab" role="tablist">
19 <#if destino.getSiblings()?has_content>
20 <#list destino.getSiblings() as d>
21 <#if (d.etiqueta.getData())??>
22 <li class="tab-panel_tab-item nav-item w-50 Mheight-72" role="presentation">
23
24 <#if getterUtil.getBoolean(d.checkMarcaAbierta.getData()) && !pestanaCheckeada>
25 <#assign pestanaCheckeada = true />
26 <#assign numPestana = d?index />
27 </#if>
28
29 <#if d?index==numPestana>
30 <button onclick="changeColor(this);" class="nav-link d-block w-100 p-y-24 Mheight-72 text-center text-uppercase active" id="${d.etiqueta.getData()}-tab"
31 data-toggle="tab" data-target="#${d.etiqueta.getData()}" role="tab"
32 aria-controls="${d.etiqueta.getData()}" aria-selected="true">
33 <#if (d.marca.getData())??>
34 ${d.marca.getData()}
35 <#if (d.HotelesMarca.NumeroHoteles.getData())??>
36 <span class="text-lowercase texto light-15">(${d.HotelesMarca.NumeroHoteles.getData()})</span>
37 </#if>
38 </#if>
39 </button>
40 <#else>
41 <button onclick="changeColor(this);" class="nav-link d-block w-100 p-y-24 Mheight-72 border-left-0 text-center text-uppercase" id="${d.etiqueta.getData()}-tab" data-toggle="tab"
42 data-target="#${d.etiqueta.getData()}" role="tab"
43 aria-controls="${d.etiqueta.getData()}" aria-selected="false">
44 <#if (d.marca.getData())??>
45 ${d.marca.getData()}
46 <#if (d.HotelesMarca.NumeroHoteles.getData())??>
47 <span class="text-lowercase texto light-15">(${d.HotelesMarca.NumeroHoteles.getData()})</span>
48 </#if>
49 </#if>
50 </button>
51 </#if>
52 </li>
53 </#if>
54 </#list>
55 </#if>
56 </ul>
57
58 <div class="tab-content tab-panel_content" id="marcasTabContent">
59 <#list destino.getSiblings() as d>
60 <#if (d.etiqueta.getData())??>
61 <div class="tab-pane fade ${(d?index==numPestana)?then('active show','')}" id="${d.etiqueta.getData()}" role="tabpanel" aria-labelledby="${d.etiqueta.getData()}-tab">
62 <section>
63 <header class="mwidth-1440 p-x-48 m-yb-25-40">
64 <#if (d.tituloDestino.getData())?? && d.tituloDestino.getData()?has_content>
65 <h2 class="tituloH3 text-uppercase m-yb-20-25 fuente-titulos">${d.tituloDestino.getData()}</h2>
66 </#if>
67 <section class="d-flex gap-60 m-yb-40">
68 <#if (d.subtituloDestino.getData())??>
69 <section class="p-0 desplegable">
70 <p class="mb-0 texto light-15">${d.subtituloDestino.getData()}</p>
71 <button class="btn-leer-mas px-0">${languageUtil.get(themeDisplay.getLocale(), 'read-more')}</button>
72 </section>
73 </#if>
74 <section class="mwidth-fit p-0 text-right">
75 <#if (d.boton.getData())??>
76 <#assign gotoUrl=getURLEnlace(d.enlaces)>
77 <button href="${(d.enlaces.EnlaceExterno.getData()?has_content)?then('window.open','window.location.href')}=${gotoUrl}" class="btn-azul text-uppercase m-yt--6">
78 ${d.boton.getData()}
79 </button>
80 </#if>
81 </section>
82 </section>
83 </header>
84
85 <div id="carousel${d.etiqueta.getData()}Desktop" class="carousel slide p-x-48" data-interval="false" data-ride="carousel" slide-numbers>
86 <#if d.Hoteles.getSiblings()?has_content && d.Hoteles.getSiblings()[0]?has_content && d.Hoteles.getSiblings()[0].getData()?has_content>
87 <div class="carousel-inner">
88 <#list d.Hoteles.getSiblings() as cur_destino_Hoteles>
89 <article class="hotel-card carousel-item ${(cur_destino_Hoteles?is_first)?then('active','')}">
90 <#assign jsonHotel = jsonFactoryUtil.createJSONObject(cur_destino_Hoteles.getData()) />
91 <#if jsonHotel.classPK?? && themeDisplay.getScopeGroupId()??>
92 <#assign articleHotel = journalArticleLocalService.fetchLatestArticle(jsonHotel.classPK?number) />
93 <section itemscope itemtype="http://schema.org/Hotel" class="d-flex">
94 <div class="hotel-card_img">
95 <#assign myHashpreferences = {"portletSetupPortletDecoratorId": "barebone"}/>
96 <#assign preferences = freeMarkerPortletPreferences.getPreferences(myHashpreferences) />
97 <@liferay_portlet["runtime"]
98 defaultPreferences="${preferences}"
99 portletProviderAction=portletProviderAction.VIEW
100 instanceId="publicador_imagenes_marca_${articleHotel.getArticleId()}"
101 portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"/>
102 </div>
103 <#assign docXmlHotel = saxReaderUtil.read(articleHotel.getContentByLocale(themeDisplay.getLocale())) />
104 <#-- Recuperamos campos propios de la estructura Hotel -->
105 <#assign enlace = ""/>
106 <#assign nombre = docXmlHotel.valueOf("//dynamic-element[@field-reference='Nombre']/dynamic-content/text()") />
107 <#assign enlacePagina = docXmlHotel.valueOf("//dynamic-element[@field-reference='EnlacePagina']/dynamic-content")?eval />
108 <#if enlacePagina.groupId?? && enlacePagina.privateLayout?? && enlacePagina.layoutId??>
109 <#assign layout = layoutLocalService.fetchLayout(enlacePagina.groupId?number, enlacePagina.privateLayout, enlacePagina.layoutId?number)/>
110 <#if layout??>
111 <#assign gotoUrl = layout.getFriendlyURL(themeDisplay.getLocale())/>
112 </#if>
113 </#if>
114 <main class="hotel-card_main d-flex flex-column justify-content-center p-x-30">
115 <#if nombre?? && nombre!="">
116 <h4 class="m-yb-5"><a href="${gotoUrl}" class="text-uppercase tituloH4 fuente-titulos">${nombre}</a></h4>
117 <section class="d-lg-inline-block m-yb-30">
118 <#assign estrellas = docXmlHotel.valueOf("//dynamic-element[@field-reference='Estrellas']/dynamic-content/text()") />
119 <#if estrellas = "">
120 <#assign estrellas = "0"/>
121 </#if>
122 <#assign categoriaSupField = docXmlHotel.valueOf("//dynamic-element[@field-reference='CategoriaSup']/dynamic-content/text()") />
123 <#if categoriaSupField = "true">
124 <#assign categoriaSup = true/>
125 <#else>
126 <#assign categoriaSup = false/>
127 </#if>
128 <#list 1..estrellas?number as estrella>
129 <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 13 13" fill="none">
130 <path d="M11.8068 5.2377L7.9103 4.98538L6.44287 1.35419L4.97545 4.98538L1.08325 5.2377L4.06854 7.73445L3.08893 11.5219L6.44287 9.43369L9.79684 11.5219L8.81723 7.73445L11.8068 5.2377Z" fill="black"/>
131 </svg>
132 </#list>
133 <#if categoriaSup>
134 <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
135 <path d="M10 7.14286H6.14286V11H4.85714V7.14286H1V5.85714H4.85714V2H6.14286V5.85714H10V7.14286Z" fill="#474747"></path>
136 </svg>
137 </#if>
138 </section>
139 <p class="text-uppercase light-15 oferta_location m-yb-25-40 color-texto-1">
140 <#assign destinoHotel = getDestinoCategory(articleHotel.getArticleId())/>
141 <#assign partes = destinoHotel["destino"]?split('·')>
142 <#if partes?size == 3>
143 <a href="${destinoHotel['urlNacionalidad']}"> ${partes[0]}</a>·
144 <a href="${destinoHotel['urlDestino']}"> ${partes[1]}</a>·
145 <a href="${destinoHotel['urlMicrodestino']}"> ${partes[2]}</a>
146 <#elseif partes?size == 2>
147 <a href="${destinoHotel['urlNacionalidad']}"> ${partes[0]}</a>·
148 <a href="${destinoHotel['urlDestino']}"> ${partes[1]}</a>
149 <#elseif partes?size == 1>
150 <a href="${destinoHotel['urlNacionalidad']}"> ${partes[0]}</a>
151 </#if>
152 </p>
153 <#assign schemaDescripcion = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaDescripcion']/dynamic-content/text()") />
154 <#if schemaDescripcion?? && schemaDescripcion!="">
155 <div itemprop="description" style="display:none!important">
156 ${schemaDescripcion}
157 </div>
158 </#if>
159
160 <#assign descripcionCorta = docXmlHotel.valueOf("//dynamic-element[@field-reference='DescripcionCorta']/dynamic-content/text()") />
161 <#if descripcionCorta?? && descripcionCorta!="">
162 <section class="light-15 m-yb-25-40" style="max-height: 50%; overflow-y: hidden;">${descripcionCorta}</section>
163 </#if>
164 <section class="d-flex gap-13">
165 <button onclick="window.location.href='${gotoUrl}'" class="btnSmall text-uppercase text-center btn-grey" name="verHotel"></button>
166 <#assign urlReserva = "https://"/>
167 <#if themeDisplay.getLanguageId() = "en_US" || themeDisplay.getLanguageId() == "en_GB">
168 <#assign urlReserva += "booking"/>
169 <#elseif themeDisplay.getLanguageId() = "de_DE">
170 <#assign urlReserva += "reservierung"/>
171 <#else>
172 <#assign urlReserva += "reservas"/>
173 </#if>
174 <#assign urlReserva += ".lopesan.com/bookcore/availability/" />
175 <#assign categoriaHotel = getVocabularyGlobalEntero(themeDisplay.getLayout().getGroupId(), articleHotel.getArticleId(), "Roiback Coddestino") />
176 <#assign urlReserva += categoriaHotel.getName() + "/" />
177 <#assign urlReserva += .now?date?iso_utc + "/" />
178 <#assign urlReserva += (.now?long + 604800000)?number_to_date?iso_utc + "/?rrc=1" />
179 <button onclick="window.location.href='${urlReserva}'" class="btnSmall text-uppercase text-center btn-azul-relleno" name="reservar"></button>
180 </section>
181 </#if>
182 </main>
183</section>
184
185<#-- Comienzo schema -->
186<#assign schemaBrandLogo = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaBrandLogo']/dynamic-content")?eval />
187<#if schemaBrandLogo??>
188 <img style="display:none!important" itemprop="image" alt="${schemaBrandLogo.alt}" data-fileentryid="${schemaBrandLogo.fileEntryId}" data-src="${schemaBrandLogo.url}" src="${schemaBrandLogo.url}" />
189</#if>
190<#assign schemaName = docXmlHotel.valueOf("//dynamic-element[@field-reference='schemaName']/dynamic-content/text()") />
191<#if schemaName?? && schemaName!="">
192 <meta itemprop="name" content="${schemaName}">
193</#if>
194<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
195<#assign schemaStreetAddress = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaStreetAddress']/dynamic-content/text()") />
196 <#if schemaStreetAddress??>
197 <meta itemprop="streetAddress" content="${schemaStreetAddress}" />
198 </#if>
199 <#assign schemaPostalCode = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaPostalCode']/dynamic-content/text()") />
200 <#if schemaPostalCode??>
201 <meta itemprop="postalCode" content="${schemaPostalCode}" />
202 </#if>
203 <#assign schemaAddressLocality = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaAddressLocality']/dynamic-content/text()") />
204 <#if schemaAddressLocality??>
205 <meta itemprop="addressLocality" content="${schemaAddressLocality}" />
206 </#if>
207 <#assign schemaAddressRegion = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaAddressRegion']/dynamic-content/text()") />
208 <#if schemaAddressRegion??>
209 <meta itemprop="addressRegion" content="${schemaAddressRegion}" />
210 </#if>
211 <#assign schemaAddressCountry = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaAddressCountry']/dynamic-content/text()") />
212 <#if schemaAddressCountry??>
213 <meta itemprop="addressCountry" content="${schemaAddressCountry}" />
214 </#if>
215
216</span>
217<#assign schemaTelephone = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaTelephone']/dynamic-content/text()") />
218<#if schemaTelephone??>
219 <meta itemprop="telephone" content="${schemaTelephone}" />
220</#if>
221<#assign schemaPriceRange = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaPriceRange']/dynamic-content/text()") />
222<#if schemaPriceRange??>
223 <#assign priceData = schemaPriceRange?trim>
224 <#assign replacedData = priceData?replace(r"/(?<!\S)\d{1,4}(?:[.,]\d{3})*(?:[.,]\d+)?[$€](?!\S)/g", lopesan360Service.getBasePriceHotel(categoriaHotel.getName()))>
225 <meta itemprop="priceRange" content="${replacedData}" />
226</#if>
227
228<span itemprop="brand" itemscope itemtype="http://schema.org/Brand" style="display:none!important">
229 <#if schemaBrandLogo??>
230 <div itemprop="logo" itemscope itemtype="http://schema.org/ImageObject" >
231 <img style="display:none!important" itemprop="image" alt="${schemaBrandLogo.alt}" data-fileentryid="${schemaBrandLogo.fileEntryId}" data-src="${schemaBrandLogo.url}" src="${schemaBrandLogo.url}" />
232 </div>
233 </#if>
234 <#assign schemaBrandName = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaBrandName']/dynamic-content/text()") />
235 <#if schemaBrandName??>
236 <div itemprop="name">${schemaBrandName}</div>
237 </#if>
238
239</span>
240<#assign schemaLatitude = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaLatitude']/dynamic-content/text()") />
241<#assign schemaLongitude = docXmlHotel.valueOf("//dynamic-element[@field-reference='SchemaLongitude']/dynamic-content/text()") />
242<span itemprop="geo" itemscope itemtype="http://schema.org/GeoCoordinates">
243<#if schemaLatitude??>
244 <meta itemprop="latitude" content="${schemaLatitude}" />
245</#if>
246<#if schemaLongitude??>
247 <meta itemprop="longitude" content="${schemaLongitude}" />
248</#if>
249
250</span>
251<#-- Fin schema -->
252 </#if>
253 </article>
254 </#list>
255 </div>
256 <#assign displayIndicadores="visibility:hidden">
257 <#if d.Hoteles.getSiblings()?size gt 1>
258 <#assign displayIndicadores="">
259 </#if>
260 <section class="d-flex justify-content-between align-items-center h-40">
261 <button style="${displayIndicadores}" class="position-relative carousel-control-prev control" type="button" data-target="#carousel${d.etiqueta.getData()}Desktop" data-slide="prev">
262 <svg width="18" height="11" viewBox="0 0 18 11" fill="none" xmlns="http://www.w3.org/2000/svg">
263 <path d="M5.76003 10.8858L6.48801 10.1667L2.45215 6.13614H17.3333V5.10631H14.7776H2.45215L6.48801 0.714222L5.76003 -0.00488281L0.499023 5.62123L5.76003 10.8858Z" fill="#3D3935"/>
264 </svg>
265 <span class="sr-only">Previous</span>
266 </button>
267 <div style="${displayIndicadores}" class="carousel-indicators indicadores indicadores-negros position-relative mx-0 my-0">
268 <span class="current-slide light-15"></span><span class="light-15">/</span><span class="total-slides light-15"></span>
269 </div>
270 <button style="${displayIndicadores}" class="position-relative carousel-control-next control" type="button" data-target="#carousel${d.etiqueta.getData()}Desktop" data-slide="next">
271 <svg width="18" height="12" viewBox="0 0 18 12" fill="none" xmlns="http://www.w3.org/2000/svg">
272 <path d="M12.0893 11.1642L11.3513 10.4039L15.5197 6.47192H0.666504V5.38303H15.5197L11.3513 1.04123L12.0893 0.280884L17.4998 5.92748L12.0893 11.1642Z" fill="#3D3935"/>
273 </svg>
274 <span class="sr-only">Next</span>
275 </button>
276 </section>
277 </#if>
278 </div>
279
280 </section>
281 </div>
282 </#if>
283 </#list>
284 </div>
285 </section>
286
287
288 <!-- MOBILE -->
289 <section class="d-block d-lg-none pestañas-desplegables bg-white" id="marcasDropContent">
290 <ul class="list-unstyled mb-0">
291 <#if destino.getSiblings()?has_content>
292 <#list destino.getSiblings() as d>
293 <#if (d.etiqueta.getData())??>
294 <li class="pestañas-desplegables_item ${(d?index==numPestana)?then('open','')}" title="${d.etiqueta.getData()}">
295 <a onclick="this.scrollIntoView({block: 'start'});changeColorMobile(this);" class="p-x-10 text-uppercase tituloH4 pestañas-desplegables_item_button" title="${d.etiqueta.getData()}">
296 <section class="d-flex gap-15 align-items-center">
297 <#if (d.marca.getData())??>
298 <h3 class="mb-0 all-inherit">${d.marca.getData()}</h3>
299 </#if>
300 <#if (d.HotelesMarca.NumeroHoteles.getData())??>
301 <span class="subtitulo-gris text-lowercase">(${d.HotelesMarca.NumeroHoteles.getData()})</span>
302 </#if>
303 </section>
304 <div class="container-icono-desplegar">
305 <div class="vertical"></div>
306 <div class="horizontal"></div>
307 </div>
308 </a>
309 <section class="pestañas-desplegables_item_content p-yb-10 ${(d?index==numPestana)?then('','d-none')}" title="${d.etiqueta.getData()}">
310 <section class="p-x-10 p-y-25">
311 <section class="d-flex gap-60">
312 <div class="d-block">
313 <#if (d.tituloDestino.getData())??>
314 <h2 class="title text-uppercase fuente-titulos">
315 ${d.tituloDestino.getData()}
316 </h2>
317 </#if>
318 <#if (d.subtituloDestino.getData())??>
319 <section class="p-0 desplegable">
320 <p class="mb-0 texto light-15">${d.subtituloDestino.getData()}</p>
321 <button class="btn-leer-mas px-0">${languageUtil.get(themeDisplay.getLocale(), 'read-more')}</button>
322 </section>
323 </#if>
324 </div>
325 <section class="mwidth-fit p-0 text-right d-none d-md-flex align-self-center">
326 <a href="${gotoUrl}" class="btn-azul text-uppercase m-yt--6">${d.boton.getData()}</a>
327 </section>
328 </section>
329 </section>
330 <div id="carousel${d.etiqueta.getData()}Mobile" class="carousel slide" data-interval="false" data-ride="carousel" slide-numbers>
331 <#if d.Hoteles.getSiblings()?has_content && d.Hoteles.getSiblings()[0]?has_content && d.Hoteles.getSiblings()[0].getData()?has_content>
332 <div class="carousel-inner">
333 <#list d.Hoteles.getSiblings() as cur_destino_Hoteles>
334 <article class="hotel-card-mobile carousel-item ${(cur_destino_Hoteles?is_first)?then('active','')}">
335 <#assign jsonHotel = jsonFactoryUtil.createJSONObject(cur_destino_Hoteles.getData()) />
336 <#if jsonHotel.classPK?? && themeDisplay.getScopeGroupId()??>
337 <#assign articleHotel = journalArticleLocalService.fetchLatestArticle(jsonHotel.classPK?number) />
338 <section class="d-flex flex-column">
339 <div class="hotel-card-mobile_img">
340 <#assign myHashpreferences = {"portletSetupPortletDecoratorId": "barebone", "selectionStyle":"dynamic"}/>
341 <#assign preferences = freeMarkerPortletPreferences.getPreferences(myHashpreferences) />
342 <@liferay_portlet["runtime"]
343 defaultPreferences="${preferences}"
344 portletProviderAction=portletProviderAction.VIEW
345 instanceId="publicador_imagenes_marca_${articleHotel.getArticleId()}"
346 portletName="com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet"/>
347 </div>
348 <#assign docXmlHotel = saxReaderUtil.read(articleHotel.getContentByLocale(themeDisplay.getLocale())) />
349 <#-- Recuperamos campos propios de la estructura Hotel -->
350 <#assign enlace = ""/>
351 <#assign nombre = docXmlHotel.valueOf("//dynamic-element[@field-reference='Nombre']/dynamic-content/text()") />
352 <#assign enlacePagina = docXmlHotel.valueOf("//dynamic-element[@field-reference='EnlacePagina']/dynamic-content")?eval />
353 <#if enlacePagina.groupId?? && enlacePagina.privateLayout?? && enlacePagina.layoutId??>
354 <#assign layout = layoutLocalService.fetchLayout(enlacePagina.groupId?number, enlacePagina.privateLayout, enlacePagina.layoutId?number)/>
355 <#if layout??>
356 <#assign gotoUrl = layout.getFriendlyURL(themeDisplay.getLocale())/>
357 </#if>
358 </#if>
359 <#assign descripcionCorta = docXmlHotel.valueOf("//dynamic-element[@field-reference='DescripcionCorta']/dynamic-content/text()") />
360 <main class="hotel-card-mobile_main d-flex flex-column justify-content-center">
361 <#if nombre?? && nombre!="">
362 <h4 class="mb-0 tituloH4"><a href="${gotoUrl}" class="text-uppercase tituloH4 fuente-titulos mb-0">${nombre}</a></h4>
363 <section class="d-lg-inline-block m-yb-10-20">
364 <#assign estrellas = docXmlHotel.valueOf("//dynamic-element[@field-reference='Estrellas']/dynamic-content/text()") />
365 <#if estrellas = "">
366 <#assign estrellas = "0"/>
367 </#if>
368 <#assign categoriaSupField = docXmlHotel.valueOf("//dynamic-element[@field-reference='CategoriaSup']/dynamic-content/text()") />
369 <#if categoriaSupField = "true">
370 <#assign categoriaSup = true/>
371 <#else>
372 <#assign categoriaSup = false/>
373 </#if>
374 <#list 1..estrellas?number as estrella>
375 <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 13 13" fill="none">
376 <path d="M11.8068 5.2377L7.9103 4.98538L6.44287 1.35419L4.97545 4.98538L1.08325 5.2377L4.06854 7.73445L3.08893 11.5219L6.44287 9.43369L9.79684 11.5219L8.81723 7.73445L11.8068 5.2377Z" fill="black"/>
377 </svg>
378 </#list>
379 <#if categoriaSup>
380 <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
381 <path d="M10 7.14286H6.14286V11H4.85714V7.14286H1V5.85714H4.85714V2H6.14286V5.85714H10V7.14286Z" fill="#474747"></path>
382 </svg>
383 </#if>
384 </section>
385 <p class="text-uppercase light-15 oferta_location m-yb-25-40 color-texto-1">
386 <#assign destinoHotel = getDestinoCategory(articleHotel.getArticleId())/>
387 <#assign partes = destinoHotel["destino"]?split('·')>
388 <#if partes?size == 3>
389 <a href="${destinoHotel['urlNacionalidad']}"> ${partes[0]}</a>·
390 <a href="${destinoHotel['urlDestino']}"> ${partes[1]}</a>·
391 <a href="${destinoHotel['urlMicrodestino']}"> ${partes[2]}</a>
392 <#elseif partes?size == 2>
393 <a href="${destinoHotel['urlNacionalidad']}"> ${partes[0]}</a>·
394 <a href="${destinoHotel['urlDestino']}"> ${partes[1]}</a>
395 <#elseif partes?size == 1>
396 <a href="${destinoHotel['urlNacionalidad']}"> ${partes[0]}</a>
397 </#if>
398 </p>
399 <#if descripcionCorta?? && descripcionCorta!="">
400 <section class="light-15 m-yb-15-20 texto">${descripcionCorta}</section>
401 </#if>
402 <section class="d-flex flex-column flex-md-row justify-content-center gap-10">
403 <button onclick="window.location.href='${gotoUrl}'" class="btnSmall text-center text-uppercase flex-grow-1 flex-md-grow-0 btn-grey" name="verHotel"></button>
404 <#assign urlReserva = "https://"/>
405 <#if themeDisplay.getLanguageId() = "en_US" || themeDisplay.getLanguageId() == "en_GB">
406 <#assign urlReserva += "booking"/>
407 <#elseif themeDisplay.getLanguageId() = "de_DE">
408 <#assign urlReserva += "reservierung"/>
409 <#else>
410 <#assign urlReserva += "reservas"/>
411 </#if>
412 <#assign urlReserva += ".lopesan.com/bookcore/availability/" />
413 <#assign categoriaHotel = getVocabularyGlobalEntero(themeDisplay.getLayout().getGroupId(), articleHotel.getArticleId(), "Roiback Coddestino") />
414 <#assign urlReserva += categoriaHotel.getName() + "/" />
415 <#assign urlReserva += .now?date?iso_utc + "/" />
416 <#assign urlReserva += (.now?long + 604800000)?number_to_date?iso_utc + "/?rrc=1" />
417 <button onclick="window.location.href='${urlReserva}'" class="btnSmall text-center text-uppercase flex-grow-1 flex-md-grow-0 btn-azul-relleno" name="reservar"></button>
418 </section>
419 </#if>
420 </main>
421</section>
422 </#if>
423 </article>
424 </#list>
425 <#assign displayIndicadores="visibility:hidden;">
426 <#assign heightUnset = "height: unset !important;">
427 <#if d.Hoteles.getSiblings()?size gt 1>
428 <#assign displayIndicadores="">
429 <#assign heightUnset = "">
430 </#if>
431 <section class="carousel-controles-header position-absolute">
432 <section class="btn-prev-container position-absolute d-flex d-lg-none align-items-center"
433 style="height: 100%; left: 0; z-index: 5; ${displayIndicadores}">
434 <button class="btn-prev btn-unstyled position-relative carousel-control-prev control" type="button"
435 data-target="#carousel${d.etiqueta.getData()}Mobile" data-slide="prev">
436 <svg xmlns="http://www.w3.org/2000/svg" width="71" height="71" viewBox="0 0 71 71" fill="none">
437 <rect width="71" height="71" transform="matrix(-1 0 0 1 71 0)" fill="white" fill-opacity="0.7" />
438 <path d="M40.6069 47.4817L28.4529 35.4583" stroke="black" stroke-width="0.5" />
439 <line y1="-0.25" x2="17.7255" y2="-0.25"
440 transform="matrix(-0.707107 0.707107 0.707107 0.707107 40.9211 23.0098)" stroke="black"
441 stroke-width="0.5" />
442 </svg>
443 </button>
444 </section>
445 <section
446 class="btn-next-container position-absolute d-flex d-lg-none align-items-center"
447 style="height: 100%; right: 0; z-index: 5; ${displayIndicadores}">
448 <button
449 class="btn-next btn-unstyled position-relative carousel-control-next control"
450 type="button" data-target="#carousel${d.etiqueta.getData()}Mobile" data-slide="next">
451 <svg xmlns="http://www.w3.org/2000/svg" width="71" height="71"
452 viewBox="0 0 71 71" fill="none">
453 <rect width="71" height="71" fill="white" fill-opacity="0.7" />
454 <path d="M30.3931 47.4817L42.5471 35.4583" stroke="black"
455 stroke-width="0.5" />
456 <line x1="30.2557" y1="22.833" x2="42.7895" y2="35.3668" stroke="black"
457 stroke-width="0.5" />
458 </svg>
459 </button>
460 </section>
461 </section>
462 </div>
463 <section class="p-x-10 h-40 d-flex justify-content-between align-items-center" style="${heightUnset}">
464 <button style="${displayIndicadores}" class="position-relative carousel-control-prev control" type="button" data-target="#carousel${d.etiqueta.getData()}Mobile" data-slide="prev">
465 <svg width="18" height="11" viewBox="0 0 18 11" fill="none" xmlns="http://www.w3.org/2000/svg">
466 <path d="M5.76003 10.8858L6.48801 10.1667L2.45215 6.13614H17.3333V5.10631H14.7776H2.45215L6.48801 0.714222L5.76003 -0.00488281L0.499023 5.62123L5.76003 10.8858Z" fill="#3D3935"/>
467 </svg>
468 <span class="sr-only">Previous</span>
469 </button>
470 <div style="${displayIndicadores}" class="carousel-indicators indicadores indicadores-negros position-relative mx-0 my-0">
471 <span class="current-slide light-15"></span><span class="light-15">/</span><span class="total-slides light-15"></span>
472 </div>
473 <button style="${displayIndicadores}" class="position-relative carousel-control-next control" type="button" data-target="#carousel${d.etiqueta.getData()}Mobile" data-slide="next">
474 <svg width="18" height="12" viewBox="0 0 18 12" fill="none" xmlns="http://www.w3.org/2000/svg">
475 <path d="M12.0893 11.1642L11.3513 10.4039L15.5197 6.47192H0.666504V5.38303H15.5197L11.3513 1.04123L12.0893 0.280884L17.4998 5.92748L12.0893 11.1642Z" fill="#3D3935"/>
476 </svg>
477 <span class="sr-only">Next</span>
478 </button>
479 </section>
480 </#if>
481 </div>
482 <section class="p-x-10 d-block d-md-none">
483 <#if (d.boton.getData())??>
484 <#assign gotoUrl=getURLEnlace(d.enlaces)>
485 <a href="${gotoUrl}" class="btn-azul text-uppercase text-center" style="color: var(--color-secundario);">
486 ${d.boton.getData()}
487 </a>
488 </#if>
489 </section>
490 </section>
491 </li>
492 </#if>
493 </#list>
494 </#if>
495 </ul>
496 </section>
497
498<section id="textosBotonesMarcas">
499 <input type="hidden" id="textoVerHotel" value="${BotonVerHotel.getData()}" />
500 <input type="hidden" id="textoReservar" value="${BotonReservar.getData()}" />
501</section>
502
503<script>
504function changeColor(button) {
505 var buttons = document.getElementById("destinosTab").querySelectorAll("button");
506
507 for(i = 0; i < buttons.length; i++) {
508
509
510 buttons[i].querySelector("img").style.filter = "grayscale(100%)";
511 if(button.isSameNode(buttons[i])) {
512 button.querySelector("img").style.filter = "none";
513 }
514 }
515
516}
517
518function changeColorMobile(button) {
519 var buttonsMobile = document.getElementById("marcasDropContent").querySelectorAll("a.pestañas-desplegables_item_button");
520
521 for(i = 0; i < buttonsMobile.length; i++) {
522 buttonsMobile[i].querySelector("img").style.filter = "grayscale(100%)";
523 if(button.isSameNode(buttonsMobile[i])) {
524 button.querySelector("img").style.filter = "none";
525 }
526 }
527}
528</script>
529
530<script>
531var buttonsVerHotel = document.getElementsByName("verHotel");
532var buttonsReservar = document.getElementsByName("reservar");
533
534for(i = 0; i < buttonsVerHotel.length; i++) {
535 buttonsVerHotel[i].innerHTML = document.getElementById("textosBotonesMarcas").querySelector("#textoVerHotel").value;
536}
537
538for(i = 0; i < buttonsReservar.length; i++) {
539 buttonsReservar[i].innerHTML = document.getElementById("textosBotonesMarcas").querySelector("#textoReservar").value;
540}
541</script>