Saúde - Editora Senac São Paulo
Saúde
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") [in template "20102#20129#43698964" at line 13, column 27]
----
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 productService = serviceLocat... [in template "20102#20129#43698964" at line 13, column 1]
----
1<#setting locale="pt_BR">
2
3<#assign assetentry = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4<#assign assetCategoryRel = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService") />
5<#assign assetCategory = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
6<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") />
7<#assign CPDefinitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") />
8<#assign friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")>
9
10<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
11<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") />
12<#assign companyId = userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() />
13<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") />
14
15<div class="slider4">
16 <#if entries?has_content>
17 <#list entries as curCPCatalogEntry>
18 <#if curCPCatalogEntry?counter < 12>
19 <#assign friendlyURL = CPDefinitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)>
20 <div class="imgContainerEspecialCarrossel4">
21 <a href="${friendlyURL}">
22 <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) />
23 <#assign defaultImage = "/documents/d/editora-senac/liferay_logo" />
24 <#assign productImage = defaultImage />
25 <#list cpMedia as media>
26 <#if media.getURL()?has_content && (media.getTitle()?? && media.getTitle()?contains("small"))>
27 <#assign productImage = media.getURL() />
28 <#break>
29 </#if>
30 </#list>
31 <#if productImage == defaultImage>
32 <#list cpMedia as media>
33 <#if media.getURL()?has_content>
34 <#assign productImage = media.getURL() />
35 <#break>
36 </#if>
37 </#list>
38 </#if>
39 <img src="${productImage}" onerror="this.onerror=null;this.src='${defaultImage}';" />
40 </a>
41 <div class="informacoesProdutoCarrossel4">
42 <a href="${friendlyURL}">
43 <div class="infoSuperiores">
44 <div class="tituloEspecialCarrossel4">
45 ${curCPCatalogEntry.name?truncate(60, '...')}
46 </div>
47 <div class="autorEspecialCarrossel4">
48 <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>
49 <#if specs.CPSpecificationOptionId == 43594743>
50 <#assign autor = specs.getValueCurrentValue() />
51 ${autor?truncate(45, '...')}
52 <#break>
53 </#if>
54 </#list>
55 </div>
56 </div>
57 </a>
58 <div class="valorCarrossel4">
59 <@liferay_commerce_ui["price"]
60 CPCatalogEntry=curCPCatalogEntry
61 />
62 </div>
63 <div class="espiarCarrossel4">
64 <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) >
65 <span class="comprarCarrossel4" data-sku="${curCPCatalogEntry.CPSkus[0].getSku()}">
66 <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
67 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() />
68
69 <#list curCPCatalogEntry.getCPSkus() as skus>
70 <@liferay_commerce_ui["add-to-cart"]
71 CPInstanceId=skus.getCPInstanceId()
72 id=id
73 />
74 </#list>
75
76
77
78 </span>
79 <#else>
80 <span class="comprarCarrossel4">
81 <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button>
82 </span>
83 </#if>
84 </div>
85 </div>
86 </div>
87 <#elseif curCPCatalogEntry?counter == 12>
88 <!-- Ver Mais -->
89 <div class="customCart">
90 <#assign asset = assetentry.getEntry('com.liferay.commerce.product.model.CPDefinition',entries[0].getCPDefinitionId())/>
91 <#assign relateds = assetCategoryRel.getAssetEntryAssetCategoryRelsByAssetEntryId(asset.getEntryId())/>
92 <#if (currentURL?contains("catalogo?"))>
93 <#assign category = assetCategory.getAssetCategory(relateds[0].assetCategoryId)/>
94 <#else>
95 <#if relateds?has_content>
96 <#assign category = assetCategory.getAssetCategory(relateds[1].assetCategoryId)/>
97 </#if>
98 </#if>
99
100 <#if category?has_content>
101 <!-- classId de Category -->
102 <#assign friendlyURL = friendlyURLEntryLocalService.getMainFriendlyURLEntry(20013, category.categoryId)>
103 <#else>
104 <#assign friendlyURL = "">
105 </#if>
106 <div class="verMaisCard">
107 <div class="verMaisCardContent">
108 <i class="fas fa-books fa-2x"></i>
109 <div>
110 <div class="background-left2"><i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i> </div>
111 </div>
112 <span class="text">Quer mais livros dessa área?</span>
113 <span class="ancora">
114 <#if friendlyURL?has_content>
115 <#assign categoryUrl = themeDisplay.getURLPortal() + '/categoria/' + friendlyURL.getUrlTitle(locale)/>
116 <a class="ancora-aux" href="${categoryUrl}">Confira todos</a></a>
117 </#if>
118 <!-- -->
119 <#assign entryName = entry.name?lower_case>
120 <#assign entryNameFormatted = entryName?replace(' ', '-')>
121 </span>
122 <div>
123 <div class="background-right2"> <i class="fas fa-circle circulo auxCirc" aria-hidden="true"></i></div>
124 </div>
125 </div>
126 </div>
127 </div>
128 <#break>
129 </#if>
130 </#list>
131 </#if>
132</div>
133
134<style>
135
136.comprarCarrossel4 {
137 margin-top: 0px;
138}
139
140.comprarCarrossel4 div.form-group {
141 display: none;
142}
143 .slider4 {
144 display: none;
145 }
146 .informacoesProdutoCarrossel4 span.commerce-discount {
147 display: none;
148 }
149
150 .comprarCarrossel4 .add-to-cart-quantity-marker.active {
151 opacity: 0;
152 display: none;
153 }
154
155 .comprarCarrossel4 form.quantity-selector {
156 display: none;
157 }
158
159 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
160 background-color: #5ACC75;
161 border-radius: 4px;
162 width: 206px;
163 padding: 1px;
164 justify-content: center;
165 padding-left: 13%;
166 }
167
168 .comprarCarrossel4 span.price-value-final {
169 color: #D2691E !important;
170 }
171
172 .comprarCarrossel4 .btnIndisponivelEspecialCarrossel4 {
173 margin-top: 0.75rem !important;
174 }
175
176 .comprarCarrossel4 .add-to-cart button.btn-add-to-cart{
177 background-color: #5ACC75 !important;
178 }
179
180 .informacoesProdutoCarrossel4 .product-price {
181 font: normal normal bold 16px/17px Montserrat;
182 }
183
184 .slick-dots {
185 z-index: 2;
186 }
187
188 @media (max-width: 1200px) {
189 .slick-dots {
190 width: 100vw !important;
191 }
192 }
193
194 @media (min-width: 1023px) {
195 .slick-dotted.slick-slider {
196
197 }
198 .slider4 {
199 width: 1093px !important;
200 }
201 }
202
203 @media (max-width: 813px) {
204 .divEspiarCarrossel4 {
205 margin-top: 30px !important;
206 }
207
208
209 .divValorCarrossel4 {
210 margin-top: 15px !important;
211 }
212 }
213
214 @media (max-width: 768px) {
215 .slider2 .next-arrow {
216 right: 18px;
217 }
218
219 .slider2 .prev-arrow {
220 left: 18px;
221 }
222
223 .slider2 .slide-arrow .fa {
224 font-size: 22px;
225 font-weight: 400;
226 }
227
228 .slider4 .valorCarrossel4 {
229 margin-top: 5px;
230 }
231
232 .slider4 .espiarCarrossel4 {
233 position: relative;
234 top: -10px;
235 }
236
237 .valorCarrossel4 .price:not(.compact) .price-value {
238 font: normal 600 18px/17px Montserrat !important;
239 }
240 .valorCarrossel4 {
241 position: relative;
242 z-index: 9999;
243 display: flex;
244 padding-top: 25px;
245 align-items: flex-end;
246 }
247 .valorCarrossel4 .price-value {
248 margin-left: 0!important;
249 }
250 .comprarCarrossel4 .btn-add-to-cart {
251 margin: 0 !important;
252 padding-top: 2px !important;
253 }
254 .comprarCarrossel4 .btn-add-to-cart::before {
255 font-size: 16px;
256 }
257
258 .valorCarrossel4:not(.slider4semextracard .valorCarrossel4) {
259 margin-top: 0!important;
260 padding-top: 0!important;
261 }
262 .slider4 .informacoesProdutoCarrossel4:not(.slider4semextracard) {
263 top: unset;
264 bottom: 4%;
265 }
266
267 }
268
269 @media (max-width: 600px) {
270 .comprarCarrossel4 button.btn.btn-primary {
271 padding-left: 1px;
272 height: 30px;
273 }
274
275 .btn-add-to-cart-inline::before {
276 font-size: 14px;
277 width: 100%;
278 text-align: center;
279 display: block;
280 }
281 }
282
283 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 {
284 display: flex;
285 align-items: flex-end;
286 }
287
288 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .price {
289 order: 1;
290 margin-top: 0!important;
291 margin-right: 2px;
292 }
293
294 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 {
295 order: 2;
296 }
297
298 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .parceladoCarrossel4 + .price {
299 margin-right: 5px;
300 }
301
302 .slider4:not(.slider4semextracard) .informacoesProdutoCarrossel4 > a .divValorCarrossel4 .product-price {
303 order: 3;
304 margin-top: 0;
305 }
306
307 @media (max-width: 414px){
308 .slider4 {
309 width: 100vw !important;
310 /* margin-right: 0; */
311 margin-right: 20px;
312 margin-left: 20px;
313 }
314 }
315</style>
316
317<script>
318 setTimeout(function(){
319 $(document).ready(function() {
320 $('.slider4').slick({
321 arrows: true,
322 slidesToShow: 4,
323 slidesToScroll: 4,
324 dots:true,
325 infinite: false,
326 prevArrow: '<a href="#" class="slide-arrow prev-arrow"><i class="fa fa-chevron-left gray"></i></a>',
327 nextArrow: '<a href="#" class="slide-arrow next-arrow"><i class="fa fa-chevron-right gray"></i></a>',
328 speed: 1000,
329 index: 2,
330 lazyLoad: 'ondemand',
331 focusOnSelect:false,
332 accessibility:false,
333 adaptiveHeight:false,
334 autoplay:false,
335 responsive: [{
336 breakpoint: 1200,
337 settings: {
338 slidesToShow: 4,
339 slidesToScroll: 4,
340 variableWidth: true,
341 infinite: false,
342 centerMode: false,
343 dots:true,
344 arrows: true
345 }
346 }, {
347 breakpoint: 768,
348 settings: {
349 slidesToShow: 1,
350 slidesToScroll: 1,
351 variableWidth: true,
352 infinite: false,
353 centerPadding: 0,
354 centerMode: false,
355 dots:false,
356 arrows: true
357 }
358 }]
359 });
360
361 sendViewItemList([<#list entries as curCPCatalogEntry>${curCPCatalogEntry.getCPDefinitionId()},</#list>])
362 });
363
364 const slider4 = document.getElementsByClassName("slider4");
365 for (let i = 0; i < slider4.length; i++) {
366 slider4[i].style.display ='block';
367 }
368
369 if (typeof promoPrice !== 'undefined') {
370 promoPrice = document.getElementsByClassName("price");
371 }
372 else {
373 promoPrice = document.getElementsByClassName("price");
374 }
375
376 for (let i = 0; i < document.getElementsByClassName("price").length; i++) {
377 let carrossel = document.getElementsByClassName("price");
378 if(carrossel[i].children.length < 5) {
379 if(carrossel[i].children[0])
380 carrossel[i].children[0].innerText = "Por:"
381
382 if(carrossel[i].children[1]) {
383 carrossel[i].children[1].style.color = "#F6921E"
384 carrossel[i].children[1].style.marginLeft = ".5rem"
385 }
386 carrossel[i].style.marginTop = "24px"
387 }
388 else if (carrossel[i].children.length > 7){
389 carrossel[i].children[0].innerHTML = "<del>De:</del>"
390 carrossel[i].children[0].style.color = "#78849e"
391 carrossel[i].children[1].classList.remove("price-value-inactive")
392 let priceBefore = carrossel[i].children[1].innerText
393 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
394 carrossel[i].children[1].style.color = "#78849e"
395
396 carrossel[i].children[2].style.display = "none"
397 carrossel[i].children[3].style.display = "none"
398 carrossel[i].children[4].innerText = "Por:"
399 carrossel[i].children[5].style.display = "none"
400 carrossel[i].children[6].style.display = "none"
401 carrossel[i].children[7].style.color = "#F6921E"
402 carrossel[i].children[7].style.marginLeft = ".5rem"
403 carrossel[i].style.marginTop = "10px"
404 }
405 else {
406 carrossel[i].children[0].innerHTML = "<del>De:</del>"
407 carrossel[i].children[0].style.color = "#78849e"
408 carrossel[i].children[1].classList.remove("price-value-inactive")
409 let priceBefore = carrossel[i].children[1].innerText
410 carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>'
411 carrossel[i].children[1].style.color = "#78849e"
412 carrossel[i].children[2].style.display = "none"
413 carrossel[i].children[3].style.display = "none"
414 carrossel[i].children[4].innerText = "Por:"
415 carrossel[i].children[5].style.color = "#F6921E"
416 carrossel[i].children[5].style.marginLeft = ".5rem"
417 carrossel[i].style.marginTop = "10px"
418 }
419 }
420 }, 1500);
421
422
423
424</script>
QUER FICAR POR DENTRO DE PROMOÇÕES E NOVIDADES?