Soluciones inteligentes de almacenaje
Aporte eficiencia a su almacén con una gestión inteligente del espacio
Mecalux: experiencia e innovación para su almacén
The following has evaluated to null or missing: ==> data.ClientCPs [in template "20101#20128#HOMECP-CLIENTSSLIDER-TPL" at line 42, column 27] ---- 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 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 clientsCPsList = data.ClientC... [in template "20101#20128#HOMECP-CLIENTSSLIDER-TPL" at line 42, column 1] ----
1<style>.lfr-pagination .lfr-pagination-buttons{margin-top:0!important;padding:0}@media (max-width:960px){.lfr-pagination{flex-direction:column-reverse}}</style>
2
3<#assign cdn = (mlxUrlUtilService.getCdn(groupId))!"" />
4<#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL") />
5<#assign numElem = 18 />
6<#assign currentPage = 0 />
7<#assign prodId='' />
8<#assign catId='' />
9
10<#-- Función para filtrar los elementos que tienen contenido en 'pcase' -->
11<#function filterElementsWithPcase elements>
12 <#assign filteredElements = []>
13
14 <#list elements as element>
15 <#if element.pcase?has_content>
16 <#assign filteredElements += [element]>
17 </#if>
18 </#list>
19
20 <#return filteredElements>
21</#function>
22
23<#-- Función para obtener el número de semana del año actual -->
24<#function getWeekOfYear>
25 <#return .now?string("w")?number>
26</#function>
27
28<#-- Función para obtener los tres elementos correspondientes a la semana actual -->
29<#function getElementsForWeek elementList>
30 <#assign semanaActual = getWeekOfYear()>
31
32 <#-- Calcular el índice inicial y final para obtener tres elementos -->
33 <#assign startIndex = (semanaActual - 1) % (elementList?size - 2)>
34 <#assign endIndex = startIndex + 2>
35
36 <#return elementList[startIndex..endIndex]>
37</#function>
38
39<#-- Obtención de datos desde el servicio -->
40<#assign data = mlxClientCP.getClientCPs(groupId, themeDisplay.getLanguageId(), prodId, catId, currentPage, numElem, true) />
41<#-- Se hace un ?replace para limpiar el json de los caracteres especiales (encoding) para que el ?eval no genere errores de Syntax error, se podria intentar probar con la version de freemarker (2.3.31) el ?eval_json https://freemarker.apache.org/docs/dgui_template_exp.html#dgui_template_exp_direct_string -->
42<#assign clientsCPsList = data.ClientCPs?replace('\\u','\\x')?replace('<[^>]+>','','r')?replace('<\\/i>','')?replace('<i>','') />
43
44<#if clientsCPsList?has_content>
45 <div class="corporate--home--practical-cases">
46
47 <div class="corporate--home--practical-cases--container" data-js="slider" data-js-type="tiny-slider" data-js-config='{"container": ".corporate--home--practical-cases--slider-cp", "navPosition": "bottom", "mouseDrag": true,"loop":false, "controls": false}' data-gtm-block-name="Case_Study">
48 <h2 class="corporate--home--practical-cases--title"><@corporate.mlxlanguage key="mlx.breadcrumb.practical-cases" /></h2>
49 <div class="corporate--home--practical-cases--slider-cp" data-gtm-block-name="Case_Study">
50
51 <#assign itemIndex = 0 />
52
53 <#assign filteredClientsCPsList = filterElementsWithPcase(clientsCPsList?eval)>
54
55 <#list getElementsForWeek(filteredClientsCPsList) as clientCPs>
56 <#assign article = mlxAssetHelperService.fetchLatestApprovedArticle(groupId, clientCPs.pcase.articleId)!"" />
57 <#assign articleValues = mlxJournalHelperService.getStructureFieldValues(article, "${locale}") />
58 <#assign articleUrl = clientCPs.pcase.url!"" />
59 <#assign articleName = clientCPs.pcase.name!"" />
60 <#assign itemMasterName = articleName!"" />
61 <#assign articleDescription = (articleValues["html_description"]?string)!"" />
62 <#assign articleImageUrl = clientCPs.pcase.list_image!"{}" />
63 <#assign clientName = clientCPs.name!"" />
64
65 <#assign itemIndex = itemIndex + 1 />
66
67 <div class="corporate--home--practical-cases--item">
68 <div class="corporate--home--practical-cases--info">
69
70 <#if clientName?has_content>
71 <h3 class="corporate--home--practical-cases--item-title">${clientName}</h3>
72 </#if>
73
74 <#if articleName?has_content>
75 <p class="corporate--home--practical-cases--item-subtitle">${articleName}</p>
76 </#if>
77
78 <#if articleDescription?has_content>
79 <p class="corporate--home--practical-cases--item-description">${articleDescription?truncate(350, '...')}
80 <a href="${articleUrl}" title="${clientName}" class="corporate--home--practical-cases--item-link" data-gtm-event="click" data-gtm-event-click-category="[pageMaster]_Case_Study" data-gtm-event-label="${itemIndex}_/Case-study/Detail/${clientName}/${itemMasterName}">
81 <@corporate.mlxlanguage key="mlx.search.article.readmore" />
82 </a>
83 </p>
84 </#if>
85
86 </div>
87
88 <#assign articleImageContent = articleValues["list_imageFieldSet"]!"{}" />
89 <#assign articleImageContent = articleImageContent.list_image!"" />
90 <#if articleImageContent?has_content>
91 <#assign articleImage = articleImageContent />
92 <#if articleImage?has_content>
93
94 <#assign imgWidth = '640'>
95 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(articleImage.uuid, globalGroupId) />
96 <#assign articleImageUrl = (mlxDocumentsHelperService.getExpandoDocumentLocalizedValue("mlxDocumentUrl",fileEntry.getFileVersion().getFileVersionId(), locale, true))!""/>
97 <#assign articleImageUrl = mlxUrlUtilService.getLRUrl(fileEntry) />
98 <#assign urlParamConcat = articleImageUrl?contains("?")?then("&","?")>
99
100 <div class="corporate--home--practical-cases--thumbnail">
101
102 <#assign articleVideoContent = (articleValues["video_galleryFieldSet"])!"" />
103
104 <#if articleVideoContent?first.video_galleryFieldSetFieldSet?has_content>
105
106 <#assign articleVideoJSON = articleVideoContent?first.video_galleryFieldSetFieldSet.video_gallery_fileFieldSet?first.video_gallery_file />
107 <#assign articleVideoUUID = articleVideoJSON.getString("uuid")!"" />
108 <#if articleVideoUUID != "">
109 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(articleVideoUUID, globalGroupId) />
110 <#assign articleVideoUrl = mlxUrlUtilService.getLRUrl(fileEntry) />
111 <#assign youtubeEmbeddedCode = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxYoutubeEmbeddedCode",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!""/>
112
113 <#if youtubeEmbeddedCode?has_content>
114 <#assign htmlModalAttributes='data-fancybox="video-gallery-${clientCPs?index}" data-type="iframe" data-src="https://www.youtube.com/embed${youtubeEmbeddedCode}" data-caption="${articleName}"' />
115 <#else>
116 <#assign htmlModalAttributes='data-fancybox="video-gallery-${clientCPs?index}" data-type="html5video" data-src="${articleVideoUrl}" data-thumb="${articleImageUrl}" data-caption="${articleName}"' />
117 </#if>
118
119 <a href="#" class="corporate--home--practical-cases--video-container" data-has-modal="true" ${htmlModalAttributes} data-gtm-event="modal" data-gtm-event-label="${articleImageUrl}">
120 <figure class="corporate--home--practical-cases--figure">
121 <div class="corporate--home--practical-cases--container-icon">
122 <#assign images_folder = cdn + "/o/corporate-theme/images" />
123 ${corporate.img(images_folder + '/common/th-play2.png', false,'data-role="play-btn" class="corporate--home--practical-cases--video-icon" alt="play"')}
124 </div>
125 ${corporate.img(articleImageUrl + urlParamConcat + 'imwidth="'+ imgWidth + '"', true,
126 'srcset="' + articleImageUrl + urlParamConcat + 'imwidth=320&imdensity=1 320w,' +
127 cdn + articleImageUrl + urlParamConcat + 'imwidth=640&imdensity=1 640w" alt="' + clientName + '"', 'title="' + clientName + '"', 'class="corporate--home--practical-cases--item-image corporate--home--practical-cases--item-image-youtube"')} </figure>
128 </a>
129 <#else>
130 <figure class="corporate--home--practical-cases--figure">
131 ${corporate.img(articleImageUrl + urlParamConcat + 'imwidth="'+ imgWidth + '"', true,
132 'srcset="' + articleImageUrl + urlParamConcat + 'imwidth=320&imdensity=1 320w,' +
133 articleImageUrl + urlParamConcat + 'imwidth=640&imdensity=1 640w" alt="' + clientName + '"', 'title="' + clientName + '"', 'class="corporate--home--practical-cases--item-image"')}
134 </figure>
135 </#if>
136 <#else>
137
138 <figure class="corporate--home--practical-cases--figure">
139 ${corporate.img(articleImageUrl + urlParamConcat + 'imwidth="'+ imgWidth + '"', true,
140 'srcset="' + articleImageUrl + urlParamConcat + 'imwidth=320&imdensity=1 320w,' +
141 articleImageUrl + urlParamConcat + 'imwidth=640&imdensity=1 640w" alt="' + clientName + '"', 'title="' + clientName + '"', 'class="corporate--home--practical-cases--item-image"')}
142 </figure>
143 </#if>
144 </div>
145 </#if>
146 </#if>
147
148 </div>
149
150 </#list>
151 </div>
152 <#assign pcasesMasterId=56006 /> <#-- referencias-->
153 <#assign pcasesLayout=(mlxMastersHelperService.getLayoutByMasterAndGroup(pcasesMasterId,scopeGroupId)!"") />
154 <#if pcasesLayout == "" >
155 <#assign pcasesMasterId=64015 /> <#-- clientes-->
156 <#assign pcasesLayout=(mlxMastersHelperService.getLayoutByMasterAndGroup(pcasesMasterId,scopeGroupId)!"") />
157 </#if>
158 <#assign pcasesUrl = pcasesLayout.getFriendlyURL() />
159 <a href="${pcasesUrl}" title='<@corporate.mlxlanguage key="mlx.practical-case.show-more" />' class="corporate--home--practical-cases--viewmore" data-gtm-event="click" data-gtm-event-click-category="[pageMaster]_Case_Study" data-gtm-event-label="/Case-study">
160 <@corporate.mlxlanguage key="mlx.practical-case.show-more" />
161 </a>
162 </div>
163 </div>
164</#if>
PRODUCTO DESTACADO


ROBOTS MÓVILES AUTÓNOMOS (AMR)
La solución robótica que flexibiliza el transporte interno de mercancías
Automatice el flujo interno de cargas con la innovadora gama de AMR de Mecalux. Dinamice múltiples operaciones de intralogística y potencie la productividad del almacén con vehículos inteligentes diseñados para trabajar con absoluta autonomía.
MECALUX EN CIFRAS
-
55 años
de experiencia
-
+70 países
con red comercial
-
11 centros
productivos
-
7 centros I+D
de desarrollo tecnológico


CONTACTE CON NOSOTROS
- 800 03 00183
- TIJUANA
Blvd. Bellas Artes 9001 Ciudad Industrial Nueva Tijuana - 22444, Tijuana, B.C.
- GUADALAJARA
Brida no. 28 - Col. Santa Cruz del Valle 45615, San Pedro Tlaquepaque
- HERMOSILLO
Av. de las Flores 21 - Esq. Laurel - Col. Libertad Hermosillo 83137, Sonora
- MATAMOROS
Las Rusias 2700 - Parque Industrial del Norte 87316, Matamoros
- Todas nuestras ubicaciones
- TIJUANA
Llámenos al
Estamos en
Déjenos sus datos y uno de nuestros expertos le atenderá