Compactadores de Rodillos Vibratorios en Tándem

Compactadores de Rodillos Vibratorios en Tándem

En Finanzauto nos enorgullecemos de contar con la más alta calidad en maquinaria de construcción. Entre nuestra selección destacan, los rodillos vibratorios en tándem de Caterpillar se presentan como la opción ideal para la compactación eficiente y uniforme del asfalto. Estos equipos son esenciales para proyectos que demandan precisión y fiabilidad.

En Finanzauto nos enorgullecemos de contar con la más alta calidad en maquinaria de construcción. Entre nuestra selección destacan, los rodillos vibra ... En Finanzauto nos enorgullecemos de contar con la más alta calidad en maquinaria de construcción. Entre nuestra selección destacan, los rodillos vibratorios en tándem de Caterpillar se presentan como la opción ideal para la compactación eficiente y uniforme del asfalto. Estos equipos son esenciales para proyectos que demandan precisión y fiabilidad. Mostrar MásMenos

Se ha producido un error al procesar la plantilla.
Java method "com.sun.proxy.$Proxy85.getClassNameId(String)" threw an exception when invoked on com.sun.proxy.$Proxy85 object "com.liferay.portal.service.impl.ClassNameLocalServiceImpl@1281bb27"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign classNameId = classNameLocalS...  [in template "14306307#14306335#14309164" at line 12, column 1]
----
1<#include  "${templatesPath}/10241186"> 
2<#assign objectDefinitionId = 14695654> 
3<#assign objectDefinitionService = serviceLocator.findService("com.liferay.object.service.ObjectDefinitionService")> 
4<#assign objectEntryLocalService = serviceLocator.findService("com.liferay.object.service.ObjectEntryLocalService")> 
5<#assign objectRelationshipService = serviceLocator.findService("com.liferay.object.service.ObjectRelationshipService")> 
6<#assign classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")> 
7<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
8<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 
9<#assign cpAttachmentFileEntryService = serviceLocator.findService("com.liferay.commerce.product.service.CPAttachmentFileEntryService")> 
10<#assign assetCategoryPropertyService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyService")> 
11<#assign className = objectDefinitionService.getObjectDefinition(objectDefinitionId).getClassName() /> 
12<#assign classNameId = classNameLocalService.getClassNameId(className) /> 
13<#assign groupId = themeDisplay.getScopeGroupId()> 
14<#assign companyId = themeDisplay.getCompanyId()> 
15<#assign portalURL = themeDisplay.getPortalURL()> 
16<section class="grid-productos pt-40 pb-40 m-pt-20 m-pb-20"> 
17    <#assign allObjectsValues =[] /> 
18    <div class="cc"> 
19        <div class="toggle-sys mb-30 tar df aic jce p-20 bg-white" id="metric-imperial-button"> 
20            <label class="font-12 mr-10 bold"><@liferay_ui["message"] key="finanzauto.products.unidades.medida" /> 
21                : </label> 
22            <div class="dfc mt-0 mb-0"> 
23                <p onclick="toggleElements('metric')" id="metric" 
24                   class="cp mt-0 btn-master  bg-primary h-40 "><@liferay_ui["message"] key="finanzauto.products.metrico" /></p> 
25                <p onclick="toggleElements('imperial')" id="imperial" 
26                   class="cp mt-0 btn-master ml-10 h-40"><@liferay_ui["message"] key="finanzauto.products.imperial" /></p> 
27            </div> 
28            <#-- <button onclick="toggleElements()" id="toggleButton"  class="btn-master  bg-primary h-40 c-white">Imperial</button> --> 
29        </div> 
30 
31        <#assign orderBy = false  /> 
32        <#assign categoryId = assetCategory.categoryId /> 
33        <#attempt> 
34            <#assign categoryProperties = assetCategoryPropertyService.getCategoryProperties(categoryId)/> 
35            <#list categoryProperties as categoryProperty> 
36                <#assign key=categoryProperty["key"]/> 
37                <#assign value=categoryProperty["value"]/> 
38                <#if (key == "ORDER_BY" && value!="" && value!="#") > 
39                    <#assign orderBy = true  /> 
40                </#if> 
41            </#list> 
42            <#recover> 
43        </#attempt> 
44        <#-- ------------- Productos de la categoria -------------  --> 
45        <!--<#assign hits = assetEntryLocalService.search(companyId,[groupId],0,className,"","","",categoryId+"","",0,true,0,999).getDocs()>--> 
46				 
47					 
48					 
49					<#assign allHits = assetEntryLocalService.search(companyId,[groupId],0,className,"","","",categoryId+"","",0,true,0,999).getDocs()> 
50				<#assign hits = allHits?filter( 
51    hit -> hit.get("companyId")?has_content && hit.get("companyId")?number == companyId 
52)> 
53					 
54					 
55					 
56					 
57        <ul class="grid-4 gap-20 t-grid-3 m-grid-2 m-gap-15 product-carousel"> 
58            <#assign hideLoadCarousel = "" /> 
59            <#list hits as hit> 
60                <#assign objectId = hit.entryClassPK?number  /> 
61            <#-- ------------- Valores del producto -------------  --> 
62               <!-- <#assign values = objectEntryLocalService.getValues(objectId)  /> 
63                <#assign values = values + {"objectId": objectId}> 
64                <#assign allObjectsValues = allObjectsValues + [values]  />--> 
65								 
66									 
67								<#attempt> 
68									<#assign values = objectEntryLocalService.getValues(objectId) /> 
69 
70										<#-- Filtrar solo los objetos de la compañía actual --> 
71										<#if values?has_content && values["companyId"]?? && values["companyId"]?number == companyId> 
72											<#assign values = values + {"objectId": objectId} /> 
73											<#assign allObjectsValues = allObjectsValues + [values] /> 
74											</#if> 
75										<#recover> 
76									</#attempt> 
77									 
78									 
79            </#list> 
80 
81            <#if orderBy> 
82                <#assign allObjectsValues = allObjectsValues?sort_by("orderBy")> 
83            <#else> 
84                <#assign allObjectsValues = allObjectsValues?sort_by("names")> 
85            </#if> 
86            <#list allObjectsValues as values> 
87                <#assign imageList = [] /> 
88 
89            <#-- ------------- Imagen del producto -------------  --> 
90                <#assign allAttachmentFiles = cpAttachmentFileEntryService.getCPAttachmentFileEntries(classNameId, values.objectId, 0, 0, -1, -1)  /> 
91               
92							 
93							<#assign attachmentFiles = []> 
94								<#attempt> 
95									<#list cpAttachmentFileEntryService.getCPAttachmentFileEntries(classNameId, values.objectId, 0, 0, -1, -1) as af> 
96											<#if af.getCompanyId() == companyId> 
97													<#assign attachmentFiles += [af]> 
98											</#if> 
99									</#list> 
100							<#recover> 
101							</#attempt> 
102							 
103							 
104							 
105								<#list attachmentFiles as attachmentFile> 
106                    <#attempt> 
107                        <#assign image = dlFileEntryLocalService.getFileEntry(attachmentFile.getFileEntryId())/> 
108                        <#if (image.extension=="jpg"|| image.extension=="jpeg"||image.extension=="png") && !image.fileName?contains("features") 
109                        && !image.fileName?contains("no2dimage2davailable") && !image.fileName?contains("no-image-available")> 
110                            <#assign imageList = imageList + [image] /> 
111                        </#if> 
112                        <#recover> 
113                    </#attempt> 
114                </#list> 
115 
116                <#assign image = -1> 
117                <#assign imageList = imageList?sort_by("fileName")> 
118                <#if (imageList?size>0)> 
119                    <#assign image = imageList[0]> 
120                <#else><#-- Fotos personalizadas --> 
121                    <#assign imagesRelationshipId = objectRelationshipService.getObjectRelationship(objectDefinitionId, "images").getObjectRelationshipId() > 
122                    <#assign images=objectEntryLocalService.getOneToManyObjectEntries(groupId, imagesRelationshipId, values.objectId, true, -1, -1)> 
123                    <#list images as image> 
124                        <#attempt> 
125                            <#assign fileId = image.getValues()["image"]> 
126                            <#assign file = dlFileEntryLocalService.getFileEntry(fileId)> 
127                            <#if (file.extension=="jpg"|| file.extension=="jpeg"||file.extension=="png") && !file.fileName?contains("features") 
128                        && !file.fileName?contains("no2dimage2davailable") && !file.fileName?contains("no-image-available")> 
129                            <#assign imageList = imageList + [file]> 
130                        </#if> 
131                            <#recover> 
132                        </#attempt> 
133                    </#list> 
134 
135                    <#assign imageList = imageList?sort_by("fileName")> 
136                    <#if (imageList?size>0)> 
137                        <#assign image = imageList[0]> 
138                    </#if> 
139                </#if> 
140                               <li class="df w-100 ${hideLoadCarousel}"> 
141 
142                        <#assign grupoElectrogenoGas = ""> 
143                        <#assign frecuencia50 = ""> 
144                        <#assign frecuencia60 = ""> 
145                   <#if values.productUrlEs?contains("-gas-")  > 
146                        <#assign grupoElectrogenoGas = "grupo-electrogeno-gas"> 
147                      </#if> 
148                    <#if values.frecuencia50?? && values.frecuencia50 > 
149                        <#assign frecuencia50 = "frecuencia50"> 
150                      </#if> 
151										<#if values.frecuencia60?? && values.frecuencia60 > 
152                        <#assign frecuencia60 = "frecuencia60"> 
153                    </#if> 
154											 
155                    <#if locale=="es_ES" && values.productUrlEs!="" > 
156                    <a href="/productos/${values.productUrlEs}" class="w-card w-100 product h-100 ${grupoElectrogenoGas} ${frecuencia50} ${frecuencia60}" data-order="${values.orderBy}"> 
157                        <#elseif values.productUrlEn!=""> 
158                        <a href="/en/products/${values.productUrlEn}" 
159                           class="w-card w-100 product h-100 ${grupoElectrogenoGas} ${frecuencia50} ${frecuencia60}" data-order="${values.orderBy}">  
160                            <#else> 
161                            <a href="/productos/${values.productUrlEs}" class="w-card w-100 product h-100 ${grupoElectrogenoGas} ${frecuencia50} ${frecuencia60}" data-order="${values.orderBy}"> 
162                                </#if> 
163                                <span class="image p-15"> 
164                                            <#if (image?? && (!image?is_number)) > 
165                                                <img class="ofc" loading="lazy" 
166                                                     src="${portalURL}/o/adaptive-media/image/${image.getFileEntryId()}/Thumbnail-300x300/${image.fileName}"/> 
167									 <#else> 
168                                                <img class="ofc" src="/o/finanzauto-theme/images/no-photo.jpg"/> 
169                                            </#if> 
170							   </span> 
171                                <span class="container "> 
172								   <span class="c-title bb-gray2 pt-10 pb-20 mb-10 dfc sb"> 
173										 
174									   <p class="underline bold font-15"> 
175										 ${getLanguage(values.names)} 
176									   </p> 
177									  <span class="card-chevron dfcc w-28 h-28 border-white br-50 circle-white"><i 
178                                                  class="bi bi-chevron-right bold"></i></span> 
179								  </span> 
180                                  <span class=""> 
181										 ${getLanguageSection(values.featuredSpecifications)} 
182							        </span> 
183							   </span> 
184                                <p style="display:none;" class="product-category">${assetCategory.getTitle(locale)}</p> 
185                                <p style="display:none;" class="product-brand">${values.brand}</p> 
186                                <p style="display:none;" class="product-id">${values.objectId}</p> 
187                            </a> 
188 
189                </li> 
190 
191                <#if values?index == 4 > 
192                    <#assign hideLoadCarousel>display:none</#assign> 
193                </#if> 
194            </#list> 
195        </ul> 
196 
197    </div> 
198</section> 
199											 
200											 
201<#-- Schema listado Productos -->											 
202<#if allObjectsValues?has_content> 
203<script type="application/ld+json"> 
204
205  "@context": "https://schema.org", 
206  "@type": "ItemList", 
207  "name": "${assetCategory.getTitle(locale)?js_string}", 
208  "url": "${themeDisplay.getURLCurrent()?js_string}", 
209  "numberOfItems": ${allObjectsValues?size}, 
210  "itemListElement": [ 
211    <#list allObjectsValues as values> 
212      <#-- Ajuste de marca: si es Cat, poner Caterpillar --> 
213      <#assign brandName = values.brand!"" > 
214      <#if brandName == "Cat"> 
215          <#assign brandName = "Caterpillar"> 
216      </#if> 
217 
218      <#-- Nombre final: producto + marca --> 
219      <#assign productName = (getLanguage(values.longnames) + " " + brandName)!"" > 
220 
221      <#-- Description recortada a 156 caracteres --> 
222      <#assign localizedDesc = getLanguage(values.description)!"" /> 
223      <#assign cleanDesc = localizedDesc?replace("<[^>]*>", "", "r")?replace("\\s+", " ", "r")?trim /> 
224      <#if cleanDesc?length gt 156> 
225          <#assign snippet = cleanDesc?substring(0, 156) /> 
226          <#assign lastDot = snippet?last_index_of(".") /> 
227          <#if lastDot != -1> 
228              <#assign finalDescription = snippet?substring(0, lastDot + 1) /> 
229          <#else> 
230              <#assign lastSpace = snippet?last_index_of(" ") /> 
231              <#if lastSpace != -1> 
232                  <#assign finalDescription = snippet?substring(0, lastSpace) + "..." /> 
233              <#else> 
234                  <#assign finalDescription = snippet + "..." /> 
235              </#if> 
236          </#if> 
237      <#else> 
238          <#assign finalDescription = cleanDesc /> 
239      </#if> 
240 
241      <#-- URL del producto según idioma --> 
242      <#assign productUrl = "" > 
243      <#if locale == "es_ES" && values.productUrlEs?has_content> 
244          <#assign productUrl = portalURL + "/productos/" + values.productUrlEs > 
245      <#elseif values.productUrlEn?has_content> 
246          <#assign productUrl = portalURL + "/en/products/" + values.productUrlEn > 
247      </#if> 
248 
249
250        "@type": "ListItem", 
251        "position": ${values?index + 1}, 
252        "item": { 
253          "@type": "Product", 
254          "name": "${productName?js_string}", 
255          "description": "${finalDescription?js_string}", 
256          "url": "${productUrl?js_string}", 
257          "sku": "${values.objectId?string}", 
258          "brand": { 
259            "@type": "Brand", 
260            "name": "${brandName?js_string}" 
261          }, 
262          "category": "${assetCategory.getTitle(locale)?js_string}" 
263
264      }<#if values_has_next>,</#if> 
265    </#list> 
266
267
268</script> 
269</#if> 
270	 
271 
272<style> 
273    #layout-column_column-1 > .portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_:nth-child(2) section.text-columns.pt-40.pb-40 { 
274        padding: 0px; 
275
276 
277    #layout-column_column-1 > .portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_:nth-child(2) section.text-columns.pt-40.pb-40 h2 + span > p { 
278        margin-top: 20px !important; 
279
280 
281    #layout-column_column-1 > .portlet-boundary_com_liferay_journal_content_web_portlet_JournalContentPortlet_:nth-child(2) section.text-columns.pt-40.pb-40 h2 { 
282        margin: 0px; 
283
284 
285    .toggle-sys:not(:first-of-type) { 
286        display: none; 
287
288 
289    .caterpillar #metric, .caterpillar #imperial { 
290        border: 1px solid #fc0; 
291
292 
293    #metric, #imperial { 
294        margin-left: 0px; 
295        max-height: 30px; 
296        border: 1px solid #e4032e; 
297
298 
299    #metric:not(.bg-primary) { 
300        font-weight: normal !important; 
301
302 
303    #imperial:not(.bg-primary) { 
304        font-weight: normal !important; 
305
306 
307    div.subcategory { 
308        display: flex; 
309        justify-content: space-between; 
310
311 
312    div.featuredspecifications { 
313
314 
315    div.featuredspecifications div { 
316        display: flex; 
317        justify-content: space-between; 
318
319 
320    div.featuredspecifications div p.name { 
321        color: #333D48; 
322        font-size: 0.88rem; 
323        line-height: 1.13rem; 
324
325 
326    div.featuredspecifications div p.value { 
327        font-weight: bold; 
328        margin-top: 0px; 
329        font-size: 1rem; 
330        line-height: 1.5rem; 
331        letter-spacing: 0.5px; 
332        text-align: right; 
333
334 
335 
336    .product-carousel.tns-carousel > li { 
337        display: inline-block !important; 
338
339 
340    .image-selector .tns-nav button { 
341        width: 10px; 
342        height: 10px; 
343        padding: 0px; 
344        margin: 0px; 
345
346 
347    .w-card span.image { 
348        height: auto !important; 
349        max-height: 230px; 
350
351 
352    span.c-info > .grid-2 { 
353        grid-template-columns: 60% 1fr; 
354
355 
356    @media (max-width: 430px) { 
357        ul.grid-4.m-grid-2.product-carousel { 
358            grid-template-columns: 1fr; 
359
360
361</style> 
362<script> 
363 
364</script> 

¿Qué son los Rodillos Vibratorios en Tándem?

Los rodillos vibratorios en tándem están diseñados para la compactación de asfalto y otros materiales en superficies planas. El tándem de dos rodillos vibratorios permite una compactación uniforme y de alta calidad, asegurando que las superficies sean lisas y duraderas.

Ventajas de los Rodillos Vibratorios de Caterpillar