Une erreur s'est produite lors du traitement du modèle.
No compatible overloaded variation was found; declared parameter types and argument value types mismatch. The FTL type of the argument values were: extended_hash+string (com.liferay.portal.json.JSONObjectImpl wrapped into f.e.b.StringModel). The Java type of the argument values were: com.liferay.portal.json.JSONObjectImpl. The matching overload was searched among these members: com.liferay.portal.json.JSONFactoryImpl.createJSONObject(String), com.liferay.portal.json.JSONFactoryImpl.createJSONObject(Map), com.liferay.portal.json.JSONFactoryImpl.createJSONObject() ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign clientLogo = jsonFactoryUtil... [in template "20101#20128#PRACTICAL-CASE-STR-DEFAULT-TEMPLATE" at line 23, column 13] ----
1<#--HEADER-->
2<div class="corporate--case--header--container">
3 <figure class="corporate--case--header--background-figure">
4 ${corporate.img(list_image.getData(), false, 'alt="' + name.getData() + '"', 'title="' + name.getData() + '"', 'class="corporate--case--header--background-image"')}
5 </figure>
6 <div class="corporate--case--header">
7 <h1 data-sticky-title="true" class="corporate--case--header--heading">${name.getData()}</h1>
8 <p data-sticky-subheading="true" class="corporate--case--header--subheading">${subheader.getData()}</p>
9 </div>
10</div>
11
12<#--TOP DESCRIPTION-->
13<#assign cdn = (mlxUrlUtilService.getCdn(groupId))!"" />
14<#assign articleId = .vars["reserved-article-id"].data />
15<#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL")/>
16<#assign clientStrKey = "CLIENT-STR" />
17<#assign clientRelated = (mlxAssetHelperService.getFirstRelatedArticle(groupId, articleId, clientStrKey))!"" />
18<div class="corporate--case--subheader--container">
19 <#if clientRelated?has_content>
20 <#assign clientLogoContentValues = (mlxJournalHelperService.getStructureFieldValues(clientRelated, locale))!{} />
21 <#assign clientLogoContent = (clientLogoContentValues["logo"])!{} />
22 <#if clientLogoContent?has_content>
23 <#assign clientLogo = jsonFactoryUtil.createJSONObject(clientLogoContent) />
24 <#assign clientName = (clientLogoContentValues["name"]?string)!"" />
25
26 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(clientLogo.uuid, globalGroupId)!"" />
27 <#if fileEntry?has_content>
28 <#assign clientLogoUrl = mlxDocumentsHelperService.getDocumentUrlFromUUID(clientLogo.uuid, "${locale}")/>
29 <#assign clientLogoAlt = mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentTitle", fileEntry.getFileVersion().getFileVersionId()).getString(locale)!""/>
30
31 <#if clientLogoAlt == "">
32 <#assign clientLogoAlt = clientName />
33 </#if>
34
35 <figure class="corporate--case--subheader--figure">
36 ${corporate.img(cdn + clientLogoUrl, true, 'alt="' + clientLogoAlt + '"', 'title="' + clientLogoAlt + '"', 'class="corporate--case--subheader--figure-image"')}
37 </figure>
38 </#if>
39 </#if>
40 </#if>
41 <div class="corporate--case--subheader">
42 <p class="corporate--case--subheader--description">${description.getData()}</p>
43 </div>
44</div>
45
46<#--MEDIABAR-->
47<#assign technicalSheetStr = "TECHNICAL-SHEET-STR" />
48<#assign relatedTechnicalSheets = mlxAssetHelperService.getRelatedArticlesByStructure(groupId, articleId, technicalSheetStr) />
49
50 <div class="corporate--case--mediabar--container">
51 <ul class="corporate--case--mediabar" data-gtm-block-name="Case-study_Detail">
52 <#--videos tab-->
53 <#if video_gallery?has_content>
54 <#list video_gallery.getSiblings() as cur_video_gallery>
55 <#if cur_video_gallery?has_content && cur_video_gallery.video_gallery_file?has_content >
56 <#if cur_video_gallery.video_gallery_file.getData()?has_content>
57 <li class="corporate--case--mediabar--item" data-name="corporate--case--video">
58 <a href="#corporate--case--video" data-fancybox-trigger='<@corporate.mlxlanguage key="mlx.mediabar.videos" />' class="corporate--case--mediabar--item--link" data-track-tab-name="corporate--case--video" data-href="corporate--case--video">
59 <#-- Cambiar url por otra del entorno -->
60 <i style="background-image:url('/documents/20128/594105/Video.svg/cb33ef6c-7074-f8da-b5a8-c7cb1270b68c?t=1522060500000'); background-repeat:no-repeat; width: 24px; height: 24px; margin: .5rem 0"></i>
61 <span class="corporate--case--mediabar--item--text"><@corporate.mlxlanguage key="mlx.mediabar.videos" /></span>
62 </a>
63 </li>
64 </#if>
65 </#if>
66 </#list>
67 </#if>
68
69 <#--images tab-->
70 <#if image_gallery?has_content>
71 <#list image_gallery.getSiblings() as cur_image_gallery>
72 <#if cur_image_gallery.image_gallery_file.getData()?has_content>
73 <#if cur_image_gallery.image_gallery_type.getData() == "images">
74 <#assign tabText><@corporate.mlxlanguage key="mlx.mediabar.images" /></#assign>
75 <#if cur_image_gallery.getData() != "">
76 <#assign tabText = cur_image_gallery.getData()>
77 </#if>
78 </#if>
79 <#if cur_image_gallery.image_gallery_type.getData() == "plans">
80 <#assign tabText><@corporate.mlxlanguage key="mlx.mediabar.drawings" /></#assign>
81 <#if cur_image_gallery.getData() != "">
82 <#assign tabText = cur_image_gallery.getData()>
83 </#if>
84 </#if>
85
86 <li class="corporate--case--mediabar--item" data-name="corporate--case--gallery">
87 <a href="#corporate--case--gallery" class="corporate--case--mediabar--item--link" data-gtm-event="clicktab" data-gtm-event-click-category="Practical_Case_Detail_Tab" data-gtm-event-label="technical-details-tab" data-track-tab-name="corporate--case--gallery" data-href="corporate--case--gallery" >
88 <#-- Cambiar url por otra del entorno -->
89 <i style="background-image:url('/documents/20128/594105/Image.svg/414451cc-aced-be3c-4072-c42d32126845?t=1522060451000'); background-repeat:no-repeat; width: 24px; height: 24px; margin: .5rem 0"></i>
90 <span class="corporate--case--mediabar--item--text">${tabText!""}</span>
91 </a>
92 </li>
93 </#if>
94 </#list>
95 </#if>
96
97 <#--technicalSheet tab-->
98 <#if relatedTechnicalSheets?has_content>
99 <li class="corporate--case--mediabar--item">
100 <a title='' data-fancybox data-src="#technicalsheet" href="javascript:;" class="techTr tech-gallery corporate--case--mediabar--item--link" data-gtm-event="clicktab" data-gtm-event-click-category="Practical_Case_Detail_Tab" data-gtm-event-label="technical-details-tab">
101 <#-- Cambiar url por otra del entorno -->
102 ${corporate.img('/documents/20128/594105/Tech+specs.svg/7401d7f0-d66c-3b49-1a9e-271878bfc795?t=1522060479000', true, 'class="corporate--case--mediabar--item--image"')}
103 <span class="corporate--case--mediabar--item--text"><@corporate.mlxlanguage key="mlx.mediabar.specifications" /></span>
104 </a>
105 <div style="display: none;" id="technicalsheet">
106 <#list relatedTechnicalSheets as technicalSheet>
107 <#assign technicalSheetView = mlxJournalContentService.getContent(technicalSheet, technicalSheet.getDDMTemplateKey(), locale, themeDisplay, 'view') />
108 ${technicalSheetView}
109 </#list>
110 </div>
111 </li>
112 </#if>
113
114 <#--PDF tab-->
115 <#if pdf.getData() != ''>
116 <li class="corporate--case--mediabar--item">
117 <a href="${pdf.getData()}" rel="nofollow" title='<@corporate.mlxlanguage key="mlx.practical-case.pdf-download" />' class="pdf-generator corporate--case--mediabar--item--link" target="_blank" data-gtm-event="download" data-gtm-event-click-category="Download" data-gtm-event-label="${clientName!""}">
118 <#-- Cambiar url por otra del entorno -->
119 ${corporate.img('/documents/20128/594105/Download+PDF.svg/2f94eda9-5ab4-754c-cef8-735d15686732?t=1522060427000', true, 'class="corporate--case--mediabar--item--image"')}
120 <span class="corporate--case--mediabar--item--text"><@corporate.mlxlanguage key="mlx.practical-case.pdf-download" /></span>
121 </a>
122 </li>
123 </#if>
124 </ul>
125 </div>
126
127
128<#-- PRIMER VIDEO -->
129<#if (video_gallery)?has_content>
130 <#if (video_gallery.getSiblings()?first.video_gallery_file.getData())?has_content>
131
132 <div class="corporate--case--video">
133 <span id="corporate--case--video" class="corporate--product-section--nav-anchor"></span>
134 <div class="corporate--case--video-player--container">
135 <div class="corporate--case--video-player">
136 <#assign first_video = video_gallery.video_gallery_file.getData()>
137 <#assign videoUuid = mlxUrlUtilService.getUuidFromLiferayUrl(first_video)!"" />
138 <#assign videoFileEntry = mlxDLFileEntryHelperService.getDLFileEntry(videoUuid, globalGroupId)!"" />
139
140 <#if videoFileEntry?has_content>
141 <#assign videoFileEntry = videoFileEntry />
142
143 <#assign VideoFile = videoFileEntry.getFileVersion().getFileVersionId()!"" />
144 <#assign videoYoutube = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","Mlxyoutubeembeddedcode",VideoFile).getString(locale))!"" />
145 <#assign videoDuration = mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry", "Mlxduration", VideoFile)!"" />
146 <#assign videoUrl = mlxDocumentsHelperService.getDocumentUrlFromUUID(videoUuid, locale)!"" />
147
148 <#assign videoBackground = (mlxDLFileEntryHelperService.getDLFileEntryMlxFieldValuePersisted("background", videoFileEntry.getFileEntryId()))!"" />
149 <#if videoBackground?has_content>
150 <#assign videoBackground = videoBackground?replace('\\u','')?eval />
151 <#assign videoBackgroundfileEntry = mlxDLFileEntryHelperService.getDLFileEntry(videoBackground.uuid, globalGroupId) />
152 <#assign videoBackground = mlxUrlUtilService.getLRUrl(videoBackgroundfileEntry) />
153 </#if>
154
155 <!-- DATOS ESTRUCTURADOS SEO JSON+LD -->
156 <#assign domain = themeDisplay.getPortalDomain() />
157 <#assign organizationName = "Mecalux">
158 <#assign article = mlxAssetHelperService.fetchLatestApprovedArticle(groupId, .vars["reserved-article-id"].getData()) />
159 <#assign publicDate = dateUtil.getDate(article.displayDate, "dd/MM/yyyy", locale, timeZoneUtil.getTimeZone("UTC")) />
160
161 <#-- logo -->
162 <#assign logo="/documents/20128/3456912/Mecalux-logo_600x60px.jpg/04c628fa-bb4c-0e81-75c9-2e598563979d?t=1582118551000" />
163 <#if (domain?contains("es")) || (domain?contains("mecalux.es")) >
164 <#assign logo="/documents/20128/3456912/MecaluxEsmena-logo_600x60px.jpg/55173d2f-aadd-3f09-d3fb-456a758b3bd6?t=1582118551000" />
165 </#if>
166 <#if (domain?contains("us")) || (domain?contains("interlake")) >
167 <#assign logo="/documents/20128/3456912/InterlakeMecalux-logo_600x60px.jpg/48f97d72-4230-e18c-9424-b06fae217c90?t=1582118551000">
168 </#if>
169
170 <#if videoYoutube?has_content>
171 <figure class="corporate--case--video-player--figure-youtube" >
172 <div id="player"></div>
173 </figure>
174
175 <script >
176 let iframeYoutube = document.querySelector('[data-track-tab-name="corporate--case--video"]');
177 var tag = document.createElement('script');
178 tag.src = "https://www.youtube.com/player_api";
179 var firstScriptTag = document.getElementsByTagName('script')[0];
180 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
181
182 let player;
183 function onYouTubeIframeAPIReady() {
184 player = new YT.Player('player', {
185 height: '100%',
186 width: '100%',
187 videoId: '${videoYoutube}',
188 playerVars: { 'autoplay': 1, 'controls': 1 },
189 events: {
190 'onReady': onPlayerReady,
191 'onStateChange': onPlayerStateChange
192 }
193 });
194 document.getElementById('player').classList.add('corporate--case--video-player--youtube');
195
196 }
197
198 function onPlayerReady(event) {
199 iframeYoutube.addEventListener('click', () => {
200 event.target.playVideo();
201 });
202 }
203
204 function onPlayerStateChange(event) {
205 if (event.data == YT.PlayerState.ENDED) {
206 event.target.stopVideo(-1);
207 }
208 }
209 </script>
210 <#else>
211 <figure class="corporate--case--video-player--figure">
212 <video class="corporate--case--video-player--vid" poster="${videoBackground}" controls="controls" controlsList="nodownload">
213 <source src="${videoUrl}" >
214 </video>
215 </figure>
216 </#if>
217
218 <script type="application/ld+json">
219 {
220 "@context": "https://schema.org",
221 "@type": "VideoObject",
222 "name": "${name.getData()?replace("\"","\\\"")?replace("“","\\\"")}",
223 "description": "${subheader.getData()}",
224 "thumbnailUrl": "${videoBackground!}",
225 "uploadDate": "${publicDate}",
226 <#if videoDuration?has_content>
227 "duration": "${videoDuration.getData()}",
228 </#if>
229 "publisher": {
230 "@type": "Organization",
231 "name": "${organizationName}",
232 "logo": {
233 "@type": "ImageObject",
234 "url": "${logo}",
235 "width": 600,
236 "height": 60
237 }
238 },
239 "contentUrl": "${cdn}${videoUrl}",
240 "embedUrl": "${cdn}${videoUrl}"
241 }
242 </script>
243 </#if>
244
245 </div>
246 </div>
247 </div>
248
249 </#if>
250</#if>
251
252
253<#--CONTENT-->
254<section class="corporate--section">
255 ${content.getData()}
256</section>
257
258<#--TECHNICAL SHEET-->
259<#assign technicalSheetRelated = (mlxAssetHelperService.getFirstRelatedArticle(groupId, articleId, technicalSheetStr)) ! "" />
260<#if technicalSheetRelated?has_content>
261 <#assign technicalSheet = mlxJournalContentService.getContent(technicalSheetRelated,technicalSheetRelated.getDDMTemplateKey(),locale,themeDisplay,'view') />
262 ${technicalSheet}
263</#if>
264
265<#--GALERY BANNERS-->
266<#assign typeLength = [] />
267<#assign existsImageGallery = false />
268<#assign existsVideoGallery = false />
269
270<#list video_gallery.getSiblings() as videoCategory >
271 <#if videoCategory.video_gallery_file.getData()?has_content >
272 <#assign typeLength = typeLength + [videoCategory] />
273 <#assign existsImageGallery = true />
274 </#if>
275</#list>
276
277<#list image_gallery.getSiblings() as imageCategory>
278 <#if imageCategory.image_gallery_file.getData()?has_content >
279 <#assign typeLength = typeLength + [imageCategory] />
280 <#assign existsVideoGallery = true />
281 </#if>
282</#list>
283
284<#if (existsImageGallery) || (existsVideoGallery)>
285 <div class="corporate--case--gallery" data-gtm-block-name="Multimedia">
286 <span id="corporate--case--gallery" class="corporate--product-section--nav-anchor"></span>
287 <div class="corporate--case--gallery--container">
288 <h2 class="corporate--case--gallery--title"> <@corporate.mlxlanguage key="mlx.product.tab.gallery" /> </h2>
289
290 <div id="fancyGallery" style="display:none">
291 <#-- IMAGENES -->
292 <#assign imageCounter = 0 />
293 <#assign typesCounter = [] />
294
295 <#if image_gallery.getSiblings()?has_content >
296 <#list image_gallery.getSiblings() as curImageGallery >
297 <#list curImageGallery.image_gallery_file.getSiblings() as cur_file >
298 <#assign url = cur_file.getData() />
299 <#if url?has_content >
300 <#assign typesCounter = typesCounter + [ curImageGallery.image_gallery_type.getData()!"" ] />
301 <#assign uuid = mlxUrlUtilService.getUuidFromLiferayUrl(url) />
302 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(uuid, globalGroupId) />
303 <#assign title = mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentTitle",fileEntry.getFileVersion().getFileVersionId()).getString(locale)/>
304 <#assign titleDocument = fileEntry.getTitle() />
305 <#assign urlParamConcat = cur_file.getData()?contains("?")?then("&","?")>
306 <#assign imageFancy = cur_file.getData()+urlParamConcat+'imwidth=1280&imdensity=1'/>
307 <#assign imageThumb = cur_file.getData()+urlParamConcat+'imwidth=320&imdensity=1'/>
308
309 <a href="${imageFancy}" data-fancybox='${curImageGallery.image_gallery_type.getData()?replace(" ", "-")}' data-caption="${title}" data-thumb='${imageThumb}'>
310 ${corporate.img(imageFancy, true, 'alt="' + title + '"', 'title="' + title + '"', 'class="corporate--case--gallery--image" data-js-urlparams="'+curImageGallery.image_gallery_type.getData()?replace(" ", "-")+'"')}
311 </a>
312
313 <#if imageCounter == 0>
314 <#assign firstImageGallery = {'src': imageFancy!"", 'title':title!""} />
315 <#assign imageCounter = imageCounter + 1 />
316 </#if>
317 </#if>
318 </#list>
319 </#list>
320 </#if>
321
322 <#-- VIDEOS -->
323 <#if video_gallery.getSiblings()?has_content >
324 <#list video_gallery.getSiblings() as curVideoGalley >
325 <#list curVideoGalley.video_gallery_file.getSiblings() as cur_file >
326 <#assign url = cur_file.getData() />
327 <#if url?has_content >
328
329 <#assign typesCounter = typesCounter + [ curVideoGalley.video_gallery_type.getData()!"" ] />
330 <#assign uuid = mlxUrlUtilService.getUuidFromLiferayUrl(url) />
331 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(uuid, globalGroupId) />
332 <#assign title = mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentTitle",fileEntry.getFileVersion().getFileVersionId()).getString(locale)/>
333 <#assign titleDocument = fileEntry.getTitle() />
334 <#assign background = (mlxDLFileEntryHelperService.getDLFileEntryMlxFieldValuePersisted("background", fileEntry.getFileEntryId()))!"" />
335
336 <#if background?has_content>
337 <#assign background = background?eval />
338 <#assign videoBackgroundfileEntry = mlxDLFileEntryHelperService.getDLFileEntry(background.uuid, globalGroupId) />
339 <#assign background = mlxUrlUtilService.getLRUrl(videoBackgroundfileEntry) />
340 <#assign urlParamConcat = background?contains("?")?then("&","?")>
341 <#assign imageThumb = background+urlParamConcat+'imwidth=320&imdensity=1'/>
342 </#if>
343
344 <#assign youtubeEmbeddedCode = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxYoutubeEmbeddedCode",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!"" />
345 <#assign href = url />
346 <#if youtubeEmbeddedCode?has_content >
347 <#assign href = "https://www.youtube.com/embed/${youtubeEmbeddedCode}?autoplay=1&rel=0" />
348 <#else>
349 <#assign htmlVideo = 'data-type="html5video"'>
350 </#if>
351
352 <a href="${href}" ${htmlVideo!} data-fancybox='${curVideoGalley.video_gallery_type.getData()?replace(" ", "-")}' data-caption="${title!''}" data-thumb='${imageThumb!""}'>
353 ${corporate.img(background, true, 'alt="' + title + '"', 'title="' + title + '"', 'class="corporate--case--gallery--image" data-js-urlparams="'+curVideoGalley.video_gallery_type.getData()?replace(" ", "-")+'"')}
354 </a>
355 </#if>
356 </#list>
357 </#list>
358 </#if>
359 </div>
360
361 <#if (typeLength?size > 0) >
362 <div class="corporate--case--gallery--filters">
363 <#assign imagesCheck = false>
364 <#assign illustrationsCheck = false>
365 <#assign plansCheck = false>
366
367 <#if (image_gallery.getSiblings()?size > 1)>
368 <#list image_gallery.getSiblings() as curImageGallery>
369 <#if curImageGallery.image_gallery_type.data == 'images'>
370 <#assign imagesCheck = true>
371 </#if>
372 <#if curImageGallery.image_gallery_type.data == 'illustrations'>
373 <#assign illustrationsCheck = true>
374 </#if>
375 <#if curImageGallery.image_gallery_type.data == 'plans'>
376 <#assign plansCheck = true>
377 </#if>
378 </#list>
379 </#if>
380
381 <#-- Todos -->
382 <#if (((existsImageGallery) && (existsVideoGallery)) || ((imagesCheck) && (illustrationsCheck)) || (plansCheck)) >
383 <button class="corporate--case--gallery--chip" data-js-filter="all" data-gtm-block-name="Multimedia" data-gtm-event="clickfilter" data-gtm-event-label='All' onclick="Fancybox.fromOpener('#fancyGallery [data-fancybox]')">
384 <@corporate.mlxlanguage key="mlx.theme.all" />
385 <span class="corporate--case--gallery--badge">${typesCounter?size}</span>
386 </button>
387 </#if>
388
389 <#-- IMAGENES -->
390 <#if image_gallery.getSiblings()?has_content >
391 <#list image_gallery.getSiblings() as curImageGallery >
392 <#if curImageGallery.image_gallery_file.getData()?has_content >
393 <#assign gtmTextFormat = curImageGallery.image_gallery_type.getData()?replace(" ", "-")?cap_first />
394 <button class="corporate--case--gallery--chip" data-gtm-block-name="Multimedia" data-gtm-event="clickfilter" data-gtm-event-label='${gtmTextFormat}' data-fancybox-trigger="${curImageGallery.image_gallery_type.getData()?replace(' ', '-')}">
395 <#if gtmTextFormat == 'Plans'>
396 <@corporate.mlxlanguage key='mlx.offers.doctype.Plane' />
397 <#else>
398 <@corporate.mlxlanguage key='mlx.mediabar.${curImageGallery.image_gallery_type.getData()}' />
399 </#if>
400 <span class="corporate--case--gallery--badge">${typesCounter?filter(x -> x = curImageGallery.image_gallery_type.getData()?replace(' ', '-'))?size}</span>
401 </button>
402 </#if>
403 </#list>
404 </#if>
405 <#-- VIDEOS -->
406 <#if video_gallery.getSiblings()?has_content >
407 <#list video_gallery.getSiblings() as curVideoGalley >
408 <#if curVideoGalley.video_gallery_file.getData()?has_content >
409 <#assign gtmTextFormat = curVideoGalley.video_gallery_type.getData()?replace(" ", "-")?cap_first />
410 <button class="corporate--case--gallery--chip" data-gtm-block-name="Multimedia" data-gtm-event="clickfilter" data-gtm-event-label='${gtmTextFormat}' data-fancybox-trigger="${curVideoGalley.video_gallery_type.getData()?replace(' ', '-')}">
411 <#if (curVideoGalley.video_gallery_type.getData())?has_content>
412 <@corporate.mlxlanguage key='mlx.mediabar.${curVideoGalley.video_gallery_type.getData()}' />
413 <#else>
414 <@corporate.mlxlanguage key='mlx.mediabar.videos' />
415 </#if>
416 <span class="corporate--case--gallery--badge">${typesCounter?filter(x -> x = curVideoGalley.video_gallery_type.getData()?replace(' ', '-'))?size}</button>
417 </button>
418 </#if>
419 </#list>
420 </#if>
421 </div>
422 </#if>
423
424 <div class="corporate--case--gallery--mosaic">
425 <#if (firstImageGallery.src)?has_content>
426 <figure class="corporate--case--gallery--figure-main" data-gtm-event="modal" data-gtm-event-label="open-product-gallery">
427 <img class="corporate--case--gallery--image" src="${firstImageGallery.src!''}" alt="${firstImageGallery.title!''}" onclick="Fancybox.fromOpener('#fancyGallery [data-fancybox]')">
428 </figure>
429 </#if>
430
431 <#if (firstImageGallery.title)?has_content>
432 <div class="corporate--case--gallery--ribbon">
433 <p>
434 ${firstImageGallery.title}
435 <button class="corporate--case--gallery--media-button">
436 ${corporate.img(cdn + '/o/corporate-theme/images/icons/ico-open-modal.svg', false,'class="corporate--case--gallery--media-button-image" alt="Gallery Media Button" width="18" height="18"')}
437 </button>
438 </p>
439 </div>
440 </#if>
441 </div>
442 </div>
443 </div>
444</#if>
445
446
447<#--RELATED PRODUCTS-->
448<#assign productStrKeys = ["PRODUCT-STR", "SOFTWARE-SOLUTIONS-PRODUCTS-STR", "SOFTWARE-PRODUCT-STR"] />
449<#assign productRelated = mlxAssetHelperService.getRelatedArticlesByStructure(groupId, articleId, productStrKeys) />
450<#if productRelated?has_content>
451 <div class="corporate--case--relateds--container">
452 <h3 class="corporate--case--relateds--title"><@corporate.mlxlanguage key="mlx.practical-case.products" /></h3>
453 <div class="corporate--case--relateds">
454 <#list productRelated as product>
455 <#assign productImageContentValues = (mlxJournalHelperService.getStructureFieldValues(product, locale))!{} />
456
457 <#if product.getDDMStructure().getStructureKey() == "SOFTWARE-PRODUCT-STR" >
458 <#assign productImageContent = (productImageContentValues["detail_imageFieldSet"])!{} />
459 <#assign productImageContent = productImageContent.detail_image!"" />
460 <#else>
461 <#assign productImageContent = (productImageContentValues["list_imageFieldSet"])!{} />
462 <#assign productImageContent = productImageContent.list_image!"" />
463 </#if>
464
465 <#assign productName = (productImageContentValues["name"]?string)!"" />
466
467 <#if !(productName?ends_with("*"))>
468 <#assign productUrl = mlxUrlUtilService.getUrlByJournalArticle(product,locale, groupId)?string />
469 <#assign productMasterName = mlxMastersHelperService.getMasterNameByJournalArticle(product) />
470 <div class="corporate--case--relateds--item">
471 <#if productImageContent?has_content>
472 <#assign productImage = jsonFactoryUtil.createJSONObject(productImageContent) />
473 </#if>
474 <#if productImage?has_content>
475 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(productImage.uuid, globalGroupId) />
476 <#assign productImageUrl = mlxUrlUtilService.getLRUrl(fileEntry) />
477 <#assign urlParamConcat = productImageUrl?contains("?")?then("&","?")>
478 <figure class="corporate--case--relateds--item--figure">
479 ${corporate.img(productImageUrl+urlParamConcat+'imwidth=320&imdensity=1', true, 'alt="' + productName + '"', 'title="' + productName + '"', 'class="corporate--case--relateds--item--image"')}
480 </figure>
481 </#if>
482 <div class="corporate--case--relateds--item--content">
483 <a href="${productUrl}" class="corporate--case--relateds--item--link" title="${productName}" data-content-master="${productMasterName}" data-content-structure="${product.getDDMStructure().getStructureKey()}">${productName}</a>
484 </div>
485 </div>
486 </#if>
487 </#list>
488 </div>
489 </div>
490</#if>
491
492<#-- DATOS ESTRUCTURADOS SEO JSON+LD -->
493
494<#assign article = mlxAssetHelperService.fetchLatestApprovedArticle(groupId, .vars["reserved-article-id"].getData()) />
495<#assign articleUrl = mlxUrlUtilService.getUrlByJournalArticle(article, locale, groupId)?string />
496<#assign domain = themeDisplay.getPortalDomain() />
497<#assign currentUrl = "https://"+ domain + articleUrl />
498
499<#--Valorar si hacerlo por el siteName o por el dominio. De momento lo haremos por dominio-->
500<#assign organizationName = 'Mecalux' />
501<#if (domain?contains("us")) || (domain?contains("interlake")) >
502 <#assign organizationName = 'Interlake Mecalux' />
503</#if>
504
505<#-- logo -->
506<#assign logo="/documents/20128/3456912/Mecalux-logo_600x60px.jpg/04c628fa-bb4c-0e81-75c9-2e598563979d?t=1582118551000" />
507<#if (domain?contains("es")) || (domain?contains("mecalux.es")) >
508 <#assign logo="/documents/20128/3456912/MecaluxEsmena-logo_600x60px.jpg/55173d2f-aadd-3f09-d3fb-456a758b3bd6?t=1582118551000" />
509</#if>
510<#if (domain?contains("us")) || (domain?contains("interlake")) >
511 <#assign logo="/documents/20128/3456912/InterlakeMecalux-logo_600x60px.jpg/48f97d72-4230-e18c-9424-b06fae217c90?t=1582118551000" />
512</#if>
513
514<script type="text/javascript">
515 window.addEventListener('load', function() {
516
517 var metaTag = document.querySelector("meta[property='og:image']");
518 var content = metaTag.getAttribute('content');
519
520 var imageSeo = '${list_image.getData()}' || content;
521
522 var image = new Image();
523 image.src = imageSeo;
524
525 image.onload = function() {
526 var imageWidth = this.width;
527 var imageHeight = this.height;
528
529 var domain = `https://${domain}`;
530 var currentUrl = "${currentUrl}";
531 var headline = "${.vars["name"].getData()}";
532 var description = "${html_description.getData()}";
533 var socialImage = content;
534 var datePublished = "${(article.getDisplayDate()?string['dd/MM/yyyy'])!''}";
535 var organizationName = "${organizationName}";
536 var logo = "${logo}";
537
538 var schema = {
539 "@context": "https://schema.org",
540 "@type": "Article",
541 "mainEntityOfPage": {
542 "@type": "WebPage",
543 "@id": currentUrl
544 },
545 "headline": headline,
546 "description": description,
547 "image": {
548 "@type": "ImageObject",
549 "url": imageSeo,
550 "width": imageWidth,
551 "height": imageHeight
552 },
553 "datePublished": datePublished,
554 "dateModified": datePublished,
555 "author": {
556 "@type": "Organization",
557 "name": organizationName,
558 "url": domain
559 },
560 "publisher": {
561 "@type": "Organization",
562 "name": organizationName,
563 "logo": {
564 "@type": "ImageObject",
565 "url": logo,
566 "width": 600,
567 "height": 60
568 }
569 }
570 }
571
572 var script = document.createElement('script');
573 script.type = 'application/ld+json';
574 script.text = JSON.stringify(schema);
575
576 document.querySelector('body').appendChild(script);
577 };
578 });
579</script>
Demandez conseil à un expert