Home - Editora Senac São Paulo
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> media.getTitle() [in template "20102#20129#43698967" at line 54, column 60]
----
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: #if media.getURL()?has_content && med... [in template "20102#20129#43698967" at line 54, column 25]
----
1<#setting locale="pt_BR">
2
3<#assign cpContentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
4<#assign cpDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
5<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
6<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
7<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
8<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
9
10<div class="slider2">
11 <#if entries?has_content>
12 <#list entries as curCPCatalogEntry>
13 <div class="imgContainerMaisLidos">
14 <div class="informacoesMaisLidos">
15 <a onclick="cardProductClick(this)" href="${cpDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)}" data-definition="${curCPCatalogEntry.getCPDefinitionId()}">
16 <div class="informacoesSuperiores">
17 <span class="tituloMaisLidos">${curCPCatalogEntry.name?truncate(60, '...')}</span>
18 <span class="autorMaisLidos">
19 <#list cpContentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
20 <#if specs.CPSpecificationOptionId == 43594743>
21 <#assign autor = specs.getValueCurrentValue() />
22 ${autor?truncate(50, '...')}
23 <#break>
24 </#if>
25 </#list>
26 </span>
27 </div>
28 </a>
29 <div class="valorCarrossel2">
30 <@liferay_commerce_ui["price"]
31 CPCatalogEntry=curCPCatalogEntry
32 />
33 </div>
34 <div class="comprarCarrossel2" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
35 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) && warehouseService.getStockQuantity(companyId,curCPCatalogEntry.CPSkus[0].getSku()) gt 0 >
36 <span class="spanComprarCarrossel2">
37 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
38 <#assign id = "add-to-cart_" + PortalUtil.generateRandomKey(request, "add-to-cart") + "_" + curCPCatalogEntry.CPSkus[0].getSku() />
39 <@liferay_commerce_ui["add-to-cart"]
40 CPInstanceId=curCPCatalogEntry.CPSkus[0].getCPInstanceId()
41 id=id
42 />
43 </span>
44 <#else>
45 <span class="btnComprarEspecial">
46 <button class="btnIndisponivelEspecial" disabled>Livro Indisponível</button>
47 </span>
48 </#if>
49 </div>
50 </div>
51 <a onclick="cardProductClick(this)" href="${cpDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)}" data-definition="${curCPCatalogEntry.getCPDefinitionId()}">
52 <#assign cpMedia = cpContentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
53 <#list cpMedia as media>
54 <#if media.getURL()?has_content && media.getTitle()?contains("small")>
55 <img src="" data-lazy="${media.getURL()}"/>
56 <#break>
57 </#if>
58 </#list>
59 </a>
60 </div>
61 </#list>
62 </#if>
63</div>
64
65<style>
66
67 .informacoesMaisLidos span.commerce-discount {
68 display: none;
69 }
70
71 .valorCarrossel2 span.product-price {
72 clear: left;
73 color: var(--unnamed-color-f6921e);
74 float: left;
75 font: normal normal bold 25px/26px Montserrat;
76 font: var(--unnamed-font-style-normal) normal var(--unnamed-font-weight-bold) var(--unnamed-font-size-25)/26px var(--unnamed-font-family-montserrat);
77 letter-spacing: 0px;
78 letter-spacing: var(--unnamed-character-spacing-0);
79 text-align: left;
80 }
81
82 .valorCarrossel2 span.product-promo-price {
83 color: #454F63;
84 color: var(--unnamed-color-454f63);
85 float: left;
86 font: var(--unnamed-font-style-normal) normal var(--unnamed-font-weight-medium) var(--unnamed-font-size-14)/var(--unnamed-line-spacing-22) var(--unnamed-font-family-montserrat);
87 font-weight: 200;
88 letter-spacing: 0px;
89 letter-spacing: var(--unnamed-character-spacing-0);
90 text-align: left;
91 text-decoration: line-through;
92 }
93
94 .valorCarrossel2 span.product-promo-price::before {
95 color: #454F63;
96 color: var(--unnamed-color-454f63);
97 content: "De: ";
98 font: var(--unnamed-font-style-normal) normal var(--unnamed-font-weight-medium) var(--unnamed-font-size-12)/var(--unnamed-line-spacing-22) var(--unnamed-font-family-montserrat);
99 font-weight: 200;
100 letter-spacing: 0px;
101 letter-spacing: var(--unnamed-character-spacing-0);
102 text-align: left;
103 }
104
105 .valorCarrossel2 span.product-price::before {
106 color: #454F63;
107 color: var(--unnamed-color-454f63);
108 content: attr(data-content);
109 font: var(--unnamed-font-style-normal) normal var(--unnamed-font-weight-medium) var(--unnamed-font-size-12)/var(--unnamed-line-spacing-22) var(--unnamed-font-family-montserrat);
110 font-size: 16px;
111 font-weight: 200;
112 letter-spacing: 0px;
113 letter-spacing: var(--unnamed-character-spacing-0);
114 text-align: left;
115 }
116
117 .comprarCarrossel2 {
118 margin-top: 0px;
119 }
120
121 .spanComprarCarrossel2{
122 display:block;
123 float:right;
124 margin-top: 10px;
125 }
126
127 .spanComprarCarrossel2 div.form-group {
128 display: none;
129 }
130
131 .spanComprarCarrossel2 .add-to-cart-quantity-marker.active {
132 display: none;
133 opacity: 0;
134 }
135
136 .spanComprarCarrossel2 form.quantity-selector {
137 display: none;
138 }
139
140 .spanComprarCarrossel2 .add-to-cart button.btn-add-to-cart {
141 background-color: #5ACC75;
142 border-radius: 4px;
143 height: 50px;
144 justify-content: center;
145 margin-left: -20px;
146 padding: 1px;
147 padding-left: 13%;
148 width: 195px;
149 }
150
151 .spanComprarCarrossel2 .add-to-cart button.btn-add-to-cart:active:focus {
152 background-color: #5ACC75 !important;
153 }
154
155 .btnComprarEspecial {
156 margin-top: 20px;
157 }
158
159 .slick-dots {
160 z-index: 2;
161 }
162
163 @media (max-width: 813px) {
164 span.product-price {
165 font-size: 14px;
166 }
167
168 span.product-promo-price {
169 font-size: 13px !important;
170 }
171
172 .spanComprarCarrossel2 button.btn.btn-primary.btn-lg.btn-add-to-cart.btn-add-to-cart-inline {
173 height: 35px;
174 padding-left: 5%;
175 width: 130px;
176 }
177
178 .valorCarrossel2 span.product-price {
179 color: #F6921E;
180 font: normal bold 18px/17px Montserrat;
181 }
182
183 .valorCarrossel2 span.product-promo-price {
184 color: #454F63;
185 font: normal normal normal 13px/14px Montserrat;
186 }
187
188 .valorCarrossel2 span.product-promo-price::before {
189 color: #454F63;
190 font: normal normal normal 13px/14px Montserrat;
191 }
192
193 .valorCarrossel2 span.product-price::before {
194 color: #454F63;
195 font: normal normal normal 13px/14px Montserrat;
196 }
197 }
198
199 @media (max-width: 768px){
200 .slick-dotted.slick-slider {
201 margin-bottom: 30px;
202 margin-left: 20px;
203 }
204
205 .slider2 .next-arrow {
206 right: 18px;
207 }
208
209 .slider2 .prev-arrow {
210 left: 18px;
211 }
212
213 .slider2 .slide-arrow .fa {
214 font-size: 22px;
215 font-weight: 400;
216 }
217
218 .slider2 .valorCarrossel2 .price-label {
219 visibility: visible;
220 }
221 .slider2 .valorCarrossel2 .price .price-value {
222 position: static;
223 }
224 .slider2 .valorCarrossel2 .price .price-value del {
225 top: 0;
226 }
227 }
228
229 .espiar i.fas.fa-eye {
230 color: white;
231 font-size: 24px;
232 padding-left: 6px;
233 padding-top: 2px;
234 }
235
236 @media (max-width: 600px) {
237 .comprarCarrossel4 button.btn.btn-primary.btn-lg.btn-add-to-cart.btn-add-to-cart-inline {
238 padding-left: 1px;
239 }
240
241 .btn-add-to-cart-inline::before {
242 display: block;
243 font-size: 14px;
244 text-align: center;
245 width: 100%;
246 }
247 }
248
249 .slider2 .informacoesMaisLidos > a .divValor {
250 align-items: flex-end;
251 display: flex;
252 }
253
254 .slider2 .informacoesMaisLidos > a .divValor .product-promo-price {
255 margin-right: 2px;
256 margin-top: 0!important;
257 order: 1;
258 }
259
260 .slider2 .informacoesMaisLidos > a .divValor .parcelado {
261 order: 2;
262 }
263
264 .slider2 .informacoesMaisLidos > a .divValor .parcelado + .product-promo-price {
265 margin-right: 5px;
266 }
267
268 .slider2 .informacoesMaisLidos > a .divValor .product-price {
269 margin-top: 0;
270 order: 3;
271 }
272
273
274 @media (max-width: 768px){
275 .slider2 .informacoesMaisLidos > a .divValor {
276 flex-wrap: wrap;
277 }
278
279 .slider2 .informacoesMaisLidos > a .divValor .parcelado + .product-promo-price {
280 width: 100%;
281 }
282 }
283
284</style>
285
286<script
287 src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"
288 integrity="sha512-XtmMtDEcNz2j7ekrtHvOVR4iwwaD6o/FUJe6+Zq+HgcCsk3kj4uSQQR8weQ2QVj1o0Pk6PwYLohm206ZzNfubg=="
289 crossorigin="anonymous"
290 referrerpolicy="no-referrer"
291></script>
292
293<script>
294
295 if (typeof promoPriceCarrosselLinha2 !== 'undefined') {
296 let promoPriceCarrosselLinha2 = document.getElementsByClassName("product-promo-price");
297 }else{
298 promoPriceCarrosselLinha2 = document.getElementsByClassName("product-promo-price");
299 }
300
301 if (typeof promoPrice !== 'undefined') {
302 promoPrice = document.getElementsByClassName("price");
303 }
304 else {
305 promoPrice = document.getElementsByClassName("price");
306 }
307
308 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
309 let carrossel = document.getElementsByClassName("price");
310 if(carrossel[i].children.length < 5) {
311 carrossel[i].children[0].innerText = "Por:"
312 carrossel[i].children[1].style.color = "#D2691E"
313 carrossel[i].style.marginTop = "24px"
314 }
315 else if (carrossel[i].children.length > 7){
316 carrossel[i].children[0].innerHTML = "<del>De:</del>"
317 carrossel[i].children[0].style.color = "#78849e"
318 carrossel[i].children[1].classList.remove("price-value-inactive")
319 let priceBefore = carrossel[i].children[1].innerText
320 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
321 carrossel[i].children[1].style.color = "#78849e"
322
323 carrossel[i].children[2].style.display = "none"
324 carrossel[i].children[3].style.display = "none"
325 carrossel[i].children[4].innerText = "Por:"
326 carrossel[i].children[5].style.display = "none"
327 carrossel[i].children[6].style.display = "none"
328 carrossel[i].children[7].style.color = "#D2691E"
329 carrossel[i].style.marginTop = "10px"
330 }
331 else {
332 carrossel[i].children[0].innerHTML = "<del>De:</del>"
333 carrossel[i].children[0].style.color = "#78849e"
334 carrossel[i].children[1].classList.remove("price-value-inactive")
335 let priceBefore = carrossel[i].children[1].innerText
336 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
337 carrossel[i].children[1].style.color = "#78849e"
338 carrossel[i].children[2].style.display = "none"
339 carrossel[i].children[3].style.display = "none"
340 carrossel[i].children[4].innerText = "Por:"
341 carrossel[i].children[5].style.color = "#D2691E"
342 carrossel[i].style.marginTop = "10px"
343 }
344 }
345
346 $(document).ready(function() {
347
348 $('.slider2').slick({
349 arrows: true,
350 slidesToShow: 2,
351 slidesToScroll: 2,
352 dots:true,
353 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
354 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
355 speed: 1500,
356 lazyLoad: 'ondemand',
357 index: 2,
358 focusOnSelect:false,
359 accessibility:false,
360 adaptiveHeight:false,
361 infinite: false,
362 autoplay:false,
363 responsive: [{
364 breakpoint: 1200,
365 settings: {
366 autoplay:false,
367 slidesToShow: 2,
368 slidesToScroll: 2,
369 variableWidth: true,
370 infinite: false,
371 centerMode: false,
372 dots:false,
373 arrows: true
374 }
375 }, {
376 breakpoint: 768,
377 settings: {
378 autoplay:false,
379 slidesToShow: 1,
380 slidesToScroll: 1,
381 variableWidth: true,
382 infinite: false,
383 centerPadding: 0,
384 centerMode: false,
385 dots:true,
386 arrows: true
387 }
388 }]
389 });
390
391 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>]);
392 });
393
394</script>
NOSSO CATÁLOGO
QUER FICAR POR DENTRO DE PROMOÇÕES E NOVIDADES?





