Monterrey
Now in Monterrey
See destination map
21ºC
An error occurred while processing the template.
The following has evaluated to null or missing: ==> hotel.name [in template "20115#20151#HOTEL-SUGGESTION-MODULE-TEMPLATE-1.0.0" at line 35, column 70] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to be 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: ${hotel.name} [in template "20115#20151#HOTEL-SUGGESTION-MODULE-TEMPLATE-1.0.0" at line 35, column 68] ----
1<#import "${fullTemplatesPath}/shared/cta-button.ftl" as cta>
2
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
4<#assign themeDisplay = serviceContext.getThemeDisplay() />
5<#include "${fullTemplatesPath}/utils/api-hotels.ftl">
6<#include "${fullTemplatesPath}/utils/dictionary.ftl">
7<#include "${fullTemplatesPath}/utils/general.ftl">
8<#include "${fullTemplatesPath}/utils/media-links.ftl">
9<#include "${fullTemplatesPath}/utils/url.ftl">
10<#assign dataHotels = getHotelsByBrand(BrandCode.getData())>
11
12<!--@TODO: ADD LIMIT TO QUERY -->
13 <!-- partial: component/block/hotel-suggestion-module/hotel-suggestion-module.hbs -->
14 <#if dataHotels?has_content>
15 <div class="hotel-suggestion-module content-spacing" data-component="hotel-suggestion-module">
16 <div class="wrapper">
17
18 <div class="title-wrapper">
19 <div class="content-wrapper">
20 <h2 class="title">${_SIMILAR_OPTIONS[locale]}</h2>
21 </div>
22 </div>
23
24 <div class="layout-wrapper">
25 <div class="visual-wrapper">
26 <div class="content-wrapper">
27 <ol class="visual-list" data-visual-carousel>
28 <#list dataHotels as hotel>
29 <#assign imageLarge = getHotelHeroImage(hotel.mediaLinks)>
30 <#assign imageSmall = getHotelHeroImageXS(hotel.mediaLinks)>
31 <li class="visual-item" data-visual-item>
32 <!-- partial: component/general/picture/picture.hbs -->
33 <picture class="main-visual" data-component="picture">
34 <source media="(min-width: 768px)" srcset="${imageLarge}">
35 <img class="visual" src="${imageSmall}" alt="${hotel.name}">
36 </picture>
37 <!-- / component/general/picture/picture.hbs -->
38 </li>
39 </#list>
40 </ol>
41 </div>
42 </div>
43
44 <div class="copy-carousel-wrapper" data-carousel-wrapper>
45 <ol class="copy-list" data-carousel-list>
46 <#list dataHotels as hotelData>
47
48 <li class="copy-item" data-carousel-item>
49 <div class="content-wrapper">
50 <div class="offset-wrapper">
51 <div class="copy-wrapper">
52 <h3 class="heading heading-5" data-heading>${hotelData.name}</h3>
53 <p class="copy copy-1" data-copy>
54 <#assign description = removeHtml(hotelData.shortDescription) />
55 <#assign limit = 400/>
56 <#assign trunk = false>
57 <#if limit gt description?length>
58 ${description}
59 <#else>
60 ${description?substring(0,limit)}...
61 </#if>
62 </p>
63 <!-- partial: component/general/cta-button/cta-button.hbs -->
64 <@cta.button text="${_LEARN_MORE[locale]}" url=getHotelUrl(hotelData.friendlyUrlHotel) class="primary is-outline"/>
65 <!-- / component/general/cta-button/cta-button.hbs -->
66 </div>
67 </div>
68 </div>
69 </li>
70 </#list>
71 </ol>
72 </div>
73 </div>
74
75 <div class="nav-hotel-wrapper content-wrapper">
76 <div class="nav-hotel">
77 <div class="carousel-counter">
78 <div class="counter-wrapper">
79 <div class="wrapper">
80 <div class="counter">
81 <span class="counter-number current" data-counter-current>01</span>
82 <span class="counter-number total" data-counter-total>05</span>
83 </div>
84 <span class="progress" data-progress></span>
85 </div>
86 </div>
87 </div>
88
89 <div class="controls-wrapper">
90 <div class="button" data-button-previous>
91
92 <!-- partial: component/general/button-arrow/button-arrow.hbs -->
93 <div class="button-arrow direction-left size-big outlined " data-component="button-arrow">
94
95 <!-- partial: component/general/icon/icon.hbs -->
96 <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span>
97 <!-- / component/general/icon/icon.hbs -->
98
99 <!-- partial: component/general/icon/icon.hbs -->
100 <span class="icon circle-icon" data-component="icon" data-icon="circle"></span>
101 <!-- / component/general/icon/icon.hbs -->
102 <div class="chevron-wrapper">
103
104 <!-- partial: component/general/icon/icon.hbs -->
105 <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span>
106 <!-- / component/general/icon/icon.hbs -->
107 </div>
108 </div>
109 <!-- / component/general/button-arrow/button-arrow.hbs -->
110 </div>
111 <div class="button" data-button-next>
112
113 <!-- partial: component/general/button-arrow/button-arrow.hbs -->
114 <div class="button-arrow direction-right size-big outlined " data-component="button-arrow">
115
116 <!-- partial: component/general/icon/icon.hbs -->
117 <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span>
118 <!-- / component/general/icon/icon.hbs -->
119
120 <!-- partial: component/general/icon/icon.hbs -->
121 <span class="icon circle-icon" data-component="icon" data-icon="circle"></span>
122 <!-- / component/general/icon/icon.hbs -->
123 <div class="chevron-wrapper">
124
125 <!-- partial: component/general/icon/icon.hbs -->
126 <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span>
127 <!-- / component/general/icon/icon.hbs -->
128 </div>
129 </div>
130 <!-- / component/general/button-arrow/button-arrow.hbs -->
131 </div>
132 </div>
133 </div>
134 </div>
135
136 <div class="bullets-wrapper" style="position: relative; text-align: center; margin-top: 2rem;">
137
138 <!-- partial: component/general/bullets/bullets.hbs -->
139 <ol class="bullet-list" data-bullet-list data-component="bullets">
140 <#list dataHotels as hotel>
141 <li class="bullet" data-bullet>
142 <span class="icon"></span>
143 </li>
144 </#list>
145 </ol>
146 <!-- / component/general/bullets/bullets.hbs -->
147 </div>
148 </div>
149 </div>
150 <!-- / component/block/hotel-suggestion-module/hotel-suggestion-module.hbs -->
151</#if>