Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> cmsEntity.getLocalizedField(profile, "/entity/fields/title") [in template "20116#20152#307443" at line 36, column 29]
----
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: #assign productTitle = cmsEntity.getL... [in template "20116#20152#307443" at line 36, column 5]
----
1<#--
2
3 Accessory Main Image
4
5-->
6
7<#assign instanceId = themeDisplay.getPortletDisplay().getId()>
8<#assign portletId = "p_p_id_" + instanceId + "_">
9
10<#if cmsEntity?has_content>
11<#include "${templatesPath}/227222" />
12
13<@sectionHeader title="${title}" menuTitle="${menuTitle}" cssClasses="bg-white" id="accessory-main-image"/>
14<#assign ns = themeDisplay.portletDisplay.getId() >
15<#assign siteDefaultLocale = portalUtil.getSiteDefaultLocale(groupId)?string?replace("_","-") >
16
17<#assign listPriceField = "listPrice" >
18<#assign iconSetPath ="/o/genelec-site-theme/images/icons/symbol-defs.svg">
19<#if cmsEntity.getField(profile, "/entity/relationships/variants")?has_content>
20 <#assign variants = cmsEntity.getField(profile, "/entity/relationships/variants") >
21</#if>
22<#if cmsEntity.getField(profile, "/entity/fields")?has_content>
23 <#assign fields = cmsEntity.getField(profile, "/entity/fields") >
24</#if>
25
26<#assign minimumWebshopAmount = 1 >
27<#if !fields.isNull("minimumWebshopAmount")>
28 <#assign minimumWebshopAmount = fields.minimumWebshopAmount >
29</#if>
30<#assign buyUnit = "unit">
31<#if minimumWebshopAmount gt 1>
32 <#assign buyUnit = "pair">
33</#if>
34
35<#if cmsEntity.getField(profile, "/entity/fields/title")?has_content>
36 <#assign productTitle = cmsEntity.getLocalizedField(profile, "/entity/fields/title")>
37</#if>
38<#if cmsEntity.getField(profile, "/entity/fields/summary")?has_content >
39 <#assign summary = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/summary"))>
40</#if>
41<#assign content = "" >
42
43<#if cmsEntity.getLocalizedField(profile, "/entity/fields/content")?has_content >
44 <#assign content = cmsContentFormatterService.getMarkdown(cmsEntity.getLocalizedField(profile, "/entity/fields/content"))>
45</#if>
46
47<#assign portalUrl = themeDisplay.getPortalURL() >
48<#assign currentURL = portalUrl + themeDisplay.getURLCurrent() >
49<@appendHTMLMetas currentURL cmsEntity "product" />
50
51 <div class="row">
52 <div class="col-lg-6">
53 <#if productTitle?has_content>
54 <div class="product-page-heading">
55 <h1>${productTitle}</h1>
56 <#if cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")?has_content>
57 <h1 class="subtitle">${cmsEntity.getLocalizedField(profile, "/entity/fields/subtitle")}</h1>
58 </#if>
59 </div>
60 </#if>
61 <div class="row justify-content-between">
62 <div class="col-lg-12 article-content">
63 <#if summary?has_content>
64 <div class="product-page-intro">${summary}</div>
65 </#if>
66 <hr>
67 </div>
68 </div>
69 <form class="product-page-form">
70
71 <p>
72 <#list variants.iterator() as variant>
73 <#assign id = variant.id>
74 <#assign sku = accessoryVariantSKU(variant) >
75
76 <#if !fields.isNull("b2cVisibilityKey")>
77 <@b2Visibility container=fields field="b2cVisibilityKey" langCode="${siteDefaultLocale}"/>
78 <#if sku?has_content>
79 <#if b2cVisibility = "showWithPrice" && variant?index = 0 || b2cVisibility = "showForPurchase" && variant?index = 0>
80 <div id="price-${id}">
81 <span class="h1" data-variant-price="${sku}" data-qty="${minimumWebshopAmount}" ></span>
82 <span class="h3">/<@liferay.language key="${buyUnit}"/> </span>
83 <span class="text-muted small text-bold"><@liferay.language key="inc-vat"/></span>
84 </div>
85 <#elseif b2cVisibility ="showWithPrice" || b2cVisibility = "showForPurchase">
86 <div class="price-variant" id="price-${id}">
87 <span class="h1" data-variant-price="${sku}" data-qty="${minimumWebshopAmount}"></span>
88 <span class="h3">/<@liferay.language key="${buyUnit}"/></span>
89 <span class="text-muted small text-bold"><@liferay.language key="inc-vat"/></span>
90 </div>
91 </#if>
92 </#if>
93 </#if>
94 </#list>
95 </p>
96
97 <#list variants.iterator() as variant>
98 <#if !variant.properties.isNull("shopifyAccessoryVariant")>
99 <#assign sku = accessoryVariantSKU(variant) >
100 <#else>
101 <#assign sku = "">
102 </#if>
103 <#break>
104 </#list>
105 <div class="buy-section-buttons">
106 <#if !fields.isNull("b2cVisibilityKey")>
107 <@b2Visibility container=fields field="b2cVisibilityKey" langCode="${siteDefaultLocale}"/>
108
109 <#if b2cVisibility = "showForPurchase" && sku != "">
110 <div class="btn-container">
111 <a class="btn btn-theme btn-product-page-buy btn-bold btn-medium"
112 href="#"
113 data-sku="${sku}" data-qty="${minimumWebshopAmount}" >
114 <@liferay.language key="buy-product"/>
115 </a>
116
117 </div>
118 </#if>
119 </#if>
120 <div class="btn-container">
121 <a class="btn btn-black-white btn-medium text-bolder" href="#_genelecsitedealermap_genelec-site-map">
122 <@liferay.language key="search-dealer"/>
123 <@linkIcon cssClasses="icon tiny-icon" alt="" icon="arrow-black"/>
124 </a>
125 </div>
126 </div>
127 </form>
128
129 <!-- delivery returns warranty -->
130 <@printDeliveryRow fields=fields siteLang=siteDefaultLocale />
131 <!-- // delivery returns warranty -->
132
133 <#if content?has_content>
134 <div class="text-intro">${content}</div>
135 </#if>
136 <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMin")?has_content>
137 <div class="text-bolder">
138 Length min.
139 </div>
140 <div class="text-medium">
141 ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMin")}
142 mm
143 </div>
144 </#if>
145 <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMax")?has_content>
146 <div class="text-bolder">
147 Length max.
148 </div>
149 <div class="text-medium">
150 ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/lengthMax")}
151 mm
152 </div>
153 </#if>
154 <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/width")?has_content>
155 <div class="text-bolder">
156 <@liferay.language key="width"/>
157 </div>
158 <div class="text-medium">
159 ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/width")}
160 mm
161 </div>
162 </#if>
163 <#if cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/height")?has_content>
164 <div class="text-bolder">
165 <@liferay.language key="height"/>
166 </div>
167 <div class="text-medium">
168 ${cmsEntity.getField(profile, "/entity/relationships/accessorySpecifications/properties/height")}
169 mm
170 </div>
171 </#if>
172
173
174
175
176 </div>
177 <div class="col-lg-6">
178 <#list variants.iterator() as variant>
179 <#assign vImages = variantImages(variant,siteDefaultLocale) >
180
181 <#if vImages?has_content>
182 <#if variant?index = 0>
183 <@imageZoom
184 id=variant.id
185 cssClasses="zoom-gallery-slide active"
186 images=vImages
187 carouselCss="accessory-main-carousel owl-carousel owl-theme image-carousel-container"
188 zoomCss="MagicZoom accessory-page-product-image"
189 videoCss="accessory-main-video"
190 />
191 <#else>
192 <@imageZoom
193 id=variant.id
194 variantCss="variant-gallery"
195 cssClasses="zoom-gallery-slide active"
196 images=vImages
197 carouselCss="accessory-main-carousel owl-carousel owl-theme image-carousel-container"
198 zoomCss="MagicZoom accessory-page-product-image"
199 videoCss="accessory-main-video"
200 />
201 </#if>
202 </#if>
203 </#list>
204 <#list variants.iterator() as variant>
205 <#if !variant.properties.isNull("colorCode")>
206 <#if variant?index == 0>
207 <div class="text-bold"><@liferay.language key="color-options"/></div>
208 </#if>
209 <#assign color = "${variant.properties.colorCode}">
210 <#assign sku = accessoryVariantSKU(variant) >
211
212 <#if variant?index = 0>
213 <@variantChange id=variant.id checked="checked" color=color sku=sku/>
214 <#else>
215 <@variantChange id=variant.id color=color sku=sku/>
216 </#if>
217 </#if>
218 </#list>
219 </div>
220 </div>
221 <@sectionFooter/>
222
223<style>
224
225 .product-page-product-title {
226 font-weight: 600;
227 margin-bottom: 0;
228 }
229
230 .product-page-form {
231 margin-bottom: 15px;
232 }
233
234 .btn-product-page-buy {
235 width: 40%;
236 min-width: 250px;
237 height: 43px
238 }
239
240 .btn-bold {
241 border-width: 2px;
242 text-transform: uppercase;
243 font-weight: 800;
244 }
245
246 .buy-product-dropdown {
247 display: inline-block;
248 width: 60px;
249 height: 43px !important;
250 border-radius: 0;
251 border-left: none;
252 position: absolute;
253 clear: left;
254 padding-left: 2%;
255 font-size: 1.3em;
256 border: 2px solid #ced4da;
257 border-left: none;
258 line-height: 20px;
259 }
260
261 .buy-product-dropdown h3 {
262 display: inline;
263 vertical-align: middle;
264 }
265
266 .buy-product-dropdown svg {
267 width: 20px;
268 line-height: .2;
269 vertical-align: middle;
270 }
271
272.accessory-main-carousel .owl-prev {
273 width: 17px;
274 height: 100px;
275 position: absolute;
276 left: -20px;
277 top: 47%;
278 transform: translateY(-50%);
279 display: block !important;
280 border:0px solid black;
281 font-size: 2em !important;
282}
283
284.accessory-main-carousel .owl-next {
285 width: 17px;
286 height: 100px;
287 position: absolute;
288 right: -20px;
289 top: 47%;
290 transform: translateY(-50%);
291 display: block !important;
292 border:0px solid black;
293 font-size: 2em !important;
294}
295
296.accessory-main-video{
297 height:396px;
298 width:396px;
299}
300
301.price-variant {
302 display:none;
303 }
304
305</style>
306
307<script>
308
309 $('.accessory-main-carousel').owlCarousel({
310 loop:false,
311 nav:true,
312 dots:false,
313 margin:5,
314 lazyLoad:true,
315 navText : ['<i class="icon-angle-left">','<i class="icon-angle-right">'],
316 responsive:{
317 0:{items:3, slideBy:3},
318 600:{items:4, slideBy:4},
319 1000:{items:5, slideBy:5}
320 },
321});
322
323<#if isWebstoreEnabled()>
324// Add product into shopping cart
325 $('.btn-product-page-buy').click(function(event){
326
327 genelec.cart().then(function(cart){
328 let qty = $(event.target).attr("data-qty");
329 let sku = $(event.target).attr("data-sku");
330
331 // qty is number and sku exists
332 if (!isNaN(qty) && sku) {
333 cart.add(sku, qty).then(function(){$( document ).trigger("genelec-shopping-cart-updated");});
334 }
335 });
336 return false;
337 });
338
339 genelec.shopify.fillPrices('#${portletId}');
340</#if>
341
342</script>
343</#if>
344
345<#function accessoryVariantSKU variant>
346 <#if hasWebstoreSupport(variant,siteDefaultLocale)>
347 <#assign sku = localizeField(variant.properties.shopifyAccessoryVariant, siteDefaultLocale) >
348 <#else>
349 <#assign sku = "">
350 </#if>
351 <#return sku>
352</#function>
Trouver un revendeur