Marcas de Concreto
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> image.getAttribute("alt") [in template "20116#20152#51168413" at line 233, column 37] ---- 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: ${image.getAttribute("alt")} [in template "20116#20152#51168413" at line 233, column 35] ----
1<#-- start getting entry data -->
2<#assign entryTitle = .vars['reserved-article-title'].data >
3<#assign entryDescription = .vars['reserved-article-description'].data >
4<#assign entryModifiedDate = .vars['reserved-article-modified-date'].data >
5<#assign originalLocale = .locale>
6<#setting locale = 'en_US'>
7<#-- end getting entry data -->
8
9 <style>
10 h2, h3{
11 margin-bottom:10px;
12 }
13 #product-intro{
14 margin-bottom:20px;
15 }
16
17 #product-intro img{
18 max-height: 350px;
19 margin: 0 auto;
20 display: block;
21 }
22
23 .summary__title {
24 font-weight: bold;
25 text-align: left;
26 color: #1a1c20;
27 line-height: 1.5;
28 margin-bottom: 48px;
29 font-size: 40px;
30 position: relative;
31 padding: 0px;
32 }
33
34 .summary__description {
35 font-size: 18px;
36 font-weight: normal;
37 line-height: 1.56;
38 letter-spacing: 0.4px;
39 display: table;
40 height: 100%
41 }
42
43 .summary__description > p{
44 vertical-align: middle;
45 display: table-cell;
46 font-weight: 400;
47 }
48
49 .summary__intro-container{
50 display: flex;
51 }
52
53 .summary__buttons .button-wrapper{
54 display:inline-block;
55 }
56
57 .summary__buttons .button-wrapper a{
58 border: solid 1px #000;
59 padding-left: 5px;
60 padding-right: 5px;
61 background-color: #FFF;
62 text-transform: uppercase;
63 font-size: 10px;
64 letter-spacing: 2px;
65 color: #111;
66 font-weight: 900;
67 height:38px;
68 width:166px;
69 display:table-cell;
70 text-align: center;
71 vertical-align: middle;
72 }
73
74 .summary__collapsable-title{
75 margin: 25px 0;
76 padding: 15px;
77 color: #ffffff;
78 font-size: 16px;
79 letter-spacing: 0.3px;
80 }
81
82 .summary__collapsable-heading{
83 font-size: 14px;
84 font-weight: bold;
85 line-height: 1.14;
86 letter-spacing: 0.2px;
87 text-align: center;
88 padding-bottom: 10px;
89 }
90
91 .summary__collapsable-content{
92 padding: 30px 0 10px;
93 }
94
95 .summary__collapsible-arrow, .summary__collapsible-arrow:hover, .summary__collapsible-arrow:focus{
96 color: #1a1c20;
97 }
98
99 .summary__collapsable-attachment-title{
100 font-weight: bold;
101 font-size: 16px;
102 margin: 15px 0;
103 }
104
105 .summary__collapsable-attachment-icon {
106 margin-right: 10px;
107 height: 40px;
108 }
109
110 .summary__collapsable-attachment-arrow {
111 top: 2px;
112 margin-left: 10px;
113 }
114
115 .summary__collapsable-attachment-icon {
116 width: 31px;
117 height: 40px;
118 background-position: -657px -592px;
119 }
120
121 .summary__collapsable-attachment {
122 display: flex;
123 }
124
125 .summary__collapsable-attachment-name{
126 margin-top: 10px;
127 }
128
129 .summary__tabs{
130 display: flex;
131 border-bottom: solid 1px #c8ccd2;
132 }
133
134 .summary__tabs-heading{
135 padding-bottom: 10px;
136 text-align: center;
137 }
138
139 .summary__tabs-heading-current{
140 border-bottom: solid 2px #003876;
141 }
142
143 .summary__tabs-heading > a{
144 font-weight: bold;
145 }
146
147 .summary__tabs-heading:not(:first-child){
148 padding: 0 10px;
149 }
150
151 .summary__tabs-heading:first-child{
152 padding-right: 10px;
153 }
154
155 /*RESPONSIBLE TABLE*/
156 @media only screen and (max-width: 760px),
157 (min-device-width: 768px) and (max-device-width: 1024px) {
158
159 /* Force table to not be like tables anymore */
160 table, thead, tbody, th, td, tr {
161 display: block;
162 }
163 /* Hide table headers (but not display: none;, for accessibility) */
164 thead tr {
165 position: absolute;
166 top: -9999px;
167 left: -9999px;
168 }
169
170 tr { border: 1px solid #ccc; }
171 .table>tbody>tr>td {
172 /* Behave like a "row" */
173 border: none;
174 /*border-bottom: 1px solid #eee; */
175 position: relative;
176 padding-left: 35%;
177 }
178 table tbody td:before {
179 /* Now like a table header */
180 position: absolute;
181 /* Top/left values mimic padding */
182 top: 8px;
183 left: 6px;
184 width: 35%;
185 padding-right: 10px;
186 white-space: pre-wrap;
187 }
188 /*
189 Label the data
190 */
191 table.caracteristicas td:nth-of-type(1):before { content: "ESPECIFICACIONES MEC\00c1NICAS"; }
192 table.caracteristicas td:nth-of-type(2):before { content: "M\00c9TODO DE PRUEBA"; }
193 table.caracteristicas td:nth-of-type(3):before { content: "RESULTADOS"; }
194 table.caracteristicas td:nth-of-type(4):before { content: "UNIDADES"; }
195 table.caracteristicas td:nth-of-type(5):before { content: "CONDICI\00d3N DEL RESULTADO"; }
196
197 table.caracteristicas.fisicas td:nth-of-type(1):before { content: "ESPECIFICACIONES F\00cdSICAS"; }
198
199 table.caracteristicas.especiales td:nth-of-type(1):before { content: "ESPECIFICACIONES ESPECIALES"; }
200
201 table.caracteristicas.multiplast td:nth-of-type(1):before { content: "TIPO"; }
202 table.caracteristicas.multiplast td:nth-of-type(2):before { content: "POLVO BASE CEMENTO BLANCO"; }
203
204 table.modo-de-empleo td:nth-of-type(1):before { content: "APLICACI\00d3N"; }
205 table.modo-de-empleo td:nth-of-type(2):before { content: "CEMENTO BULTO 50KG"; }
206 table.modo-de-empleo td:nth-of-type(3):before { content: "GRAVA BOTES"; }
207 table.modo-de-empleo td:nth-of-type(4):before { content: "ARENA BOTES"; }
208 table.modo-de-empleo td:nth-of-type(5):before { content: "AGUA BOTES"; }
209
210 table.modo-de-empleo.mortero td:nth-of-type(1):before { content: "APLICACI\00d3N"; }
211 table.modo-de-empleo.mortero td:nth-of-type(2):before { content: "SACOS DE MORTERO 50KG"; }
212 table.modo-de-empleo.mortero td:nth-of-type(3):before { content: "BOTES DE 19L DE ARENA"; }
213
214 table.modo-de-empleo.impercem td:nth-of-type(3):before { content: "GRAVA BOTE O CUBETA DE 19L"; }
215
216 table.modo-de-empleo.blanco td:nth-of-type(3):before { content: "GRAVA BOTE O CUBETA DE 19L"; }
217
218
219
220 }
221</style>
222
223 <div class="container" style="margin-bottom:120px;">
224 <div class="row" style="margin-top:70px">
225 <div class="col-xs-12 col-sm-12 col-md-offset-2 col-md-8 col-lg-offset-2 col-lg-8">
226 <div class="row" id="product-intro">
227 <#if displayTitle?? && displayTitle.getData()?? && displayTitle.getData() !="">
228 <div class="col-xs-12">
229 <h1 class="summary__title">${displayTitle.getData()}</h1>
230 </div>
231 </#if>
232 <div class="col-xs-12 col-md-4">
233 <img alt="${image.getAttribute("alt")}" src="${image.getData()}"/>
234 </div>
235 <div class="col-xs-12 col-md-8">
236 <#if mainContent.getData()?? && mainContent.getData() != "">
237 <div class="summary__description">
238 ${mainContent.getData()}
239 </div>
240 </#if>
241 <div class="summary__buttons">
242 <#if linkUrl.getData()?? && linkUrl.getData() != "">
243 <div class="button-wrapper"><a href="${linkUrl.getData()}" target="_blank">
244 <#if linkUrl.getData() == "/cotiza-aqui">
245 COTIZA AQUÍ
246 <#else>
247 COMPRA AQUÍ
248 </#if>
249 </a></div>
250 </#if>
251 <#if attachment.getData()?? && attachment.getData() != "">
252 <div class="button-wrapper"><a href="${attachment.getData()}" target="_blank">FICHA TÉCNICA</a></div>
253 </#if>
254 </div>
255 </div>
256 </div>
257
258 <#if secondaryContent?? && secondaryContent.getData()?? && secondaryContent.getData() != "">
259 <div class="row">
260 <div class="col-xs-12">
261 ${secondaryContent.getData()}
262 </div>
263 </div>
264 </#if>
265
266 <#if collapsibleSection.getSiblings()?has_content>
267 <#list collapsibleSection.getSiblings() as cur_collapsibleSection>
268 <#assign collapsible_index = cur_collapsibleSection.getName() + cur_collapsibleSection_index>
269 <div class="row" id="${collapsible_index}">
270 <h2>${cur_collapsibleSection.collapsibleSectionTitle.getData()}</h2>
271 <div class="summary__collapsable-content">
272 <#assign cur_attachmentURL = cur_collapsibleSection.getChild("attachmentCollapsable") />
273 <#assign cur_body = cur_collapsibleSection.getChild("collapsibleContent") />
274
275 ${cur_body.getData()}
276 <#if cur_attachmentURL.getData()?? && cur_attachmentURL.getData() != "">
277 <#assign attachmentURL = cur_attachmentURL.getData()>
278 <div>
279 <div class="summary__collapsable-attachment-title">
280 Ficha Técnica:
281 </div>
282 <div class="summary__collapsable-attachment">
283 <div class="summary__collapsable-attachment-icon cemex-icons"></div>
284 <a class="summary__collapsable-attachment-name" href="${cur_attachmentURL.getData()}">
285 <@getAttachmentProperties attachmentURL />
286 <i class="fa fa-angle-double-right" aria-hidden="true" style="padding-left: 12px;"></i>
287 </a>
288 </div>
289 </div>
290 </#if>
291 </div>
292 </div>
293 </#list>
294 </#if>
295 </div>
296 </div>
297 </div>
298
299<#macro getAttachmentProperties attachmentURL>
300 <#assign counter = 0 >
301 <#list attachmentURL?split("/") as chunkURL>
302 <#if counter == 2>
303 <#assign groupId = chunkURL?number >
304 </#if>
305 <#if counter == 5>
306 <#if chunkURL?index_of("?") != -1>
307 <#assign uuId = chunkURL?substring(0, chunkURL?index_of("?")) >
308 <#else>
309 <#assign uuId = chunkURL >
310 </#if>
311 </#if>
312 <#if counter == 4>
313 <#assign attacmentName = chunkURL >
314 </#if>
315 <#assign counter = counter+1 >
316 </#list>
317 <#assign fileEntry = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"]>
318 <#-- <#assign file= fileEntry.getFileEntry(getterUtil.getLong(groupId), uuId,) > -->
319 <#assign fileName = attacmentName>
320 <span>${fileName}</span>
321</#macro>
322
323<script>
324 (function(window, $, undefined) {
325 var onReady = function() {
326 var $collapsibleArrows = $('.summary__tabs-heading > a');
327
328 $collapsibleArrows.on('click', function(event) {
329 event.preventDefault();
330 var $currentAnchor = $(this);
331 var currentHref;
332
333 $("[aria-expanded='true']").each(function() {
334 $(this).closest('div.summary__tabs-heading').removeClass("summary__tabs-heading-current");
335 $(this).attr("aria-expanded","false");
336 currentHref = $(this)[0].getAttribute("href");
337 $(currentHref).attr("aria-expanded","false");
338 $(currentHref).removeClass("in");
339 });
340
341 var $currentHeading = $(this).closest('div.summary__tabs-heading');
342
343 if($currentAnchor[0].getAttribute('aria-expanded') == "true"){
344 $currentHeading.removeClass("summary__tabs-heading-current");
345 } else {
346 $currentHeading.addClass("summary__tabs-heading-current");
347 }
348 });
349 $($collapsibleArrows[0]).trigger('click');
350
351 };
352
353 AUI().ready(onReady);
354 })(window, jQuery);
355 </script>