Script
Mostrar preço com desconto — p/ Nuvemshop
Exiba o preço com desconto no Pix diretamente na listagem e na página do produto.
Atenção: escolha abaixo o código conforme o tema que está utilizando na sua loja. Caso sua loja tenha o FTP aberto e alterações no código original do tema, pode ser que o script não funcione automaticamente — neste caso, solicite ao nosso suporte para analisar a possibilidade de adaptar o código para o seu tema.
O código
Clique abaixo no nome do tema da sua loja para visualizar o código. Copie-o e cole em CONFIGURAÇÕES > CÓDIGOS EXTERNOS > CÓDIGO DE RASTREAMENTO.
<!-- Colocar texto com desconto -->
<style type="text/css">
.planweb-description-discount{
font-weight:bold;
}
.planweb-description-discount-price{
color:#dc0414;
font-size: 23px;
}
.planweb-description-discount-detail{
font-weight:bold;
font-size: 24px;
margin-top: 32px;
margin-bottom: 0;
color: #dc0414;
}
.planweb-description-discount-detail-price{
color: #dc0414;
font-size: 30px;
}
.js-max-installments{
font-size: 14px !important;
}
#price_display{
color: #383838;
font-size: 16px;
}
.item-price-container .item-price{
font-size: 18px;
font-weight: normal;
}
</style>
<!-- Colocar texto com desconto -->
<script>
(() => {
const phrase = `<div class="planweb-description-discount"><span class="planweb-description-discount-price">$preco</span> no Pix </div>`;
const phraseProductDetail = `<div class="planweb-description-discount-detail"> <span class="planweb-description-discount-detail-price">$preco</span> no Pix</div>`;
const discount = 10;
const elementRef = ".price-container";
const renderProductListItem = (product) => {
if(!product?.querySelector('.item-price')) return;
const containerDescription = product.querySelector(".item-description");
const price = Number(product.querySelector('.item-price').textContent.replace('R$',"").replace(/\./g,"").replace(",","."))
const price_final = discount ? price - (price * discount / 100) : price;
if(!containerDescription.dataset.reformatter){
containerDescription.dataset.reformatter = true;
const itemPriceContainer = containerDescription.querySelector('.item-price-container');
const newPhrase = phrase.replace("$preco", `${price_final.toLocaleString('pt-br',{ minimumFractionDigits: 2 , style: 'currency', currency: 'BRL' })}`);
itemPriceContainer.innerHTML = newPhrase + itemPriceContainer.innerHTML + ' no cartão';
}
}
const renderProductDetail = () => {
const price = Number(document.querySelector('#price_display').textContent.replace('R$',"").replace(/\./g,"").replace(",","."))
const price_final = discount ? price - (price * discount / 100) : price;
const link = document.querySelector(elementRef);
const parent = link.parentElement;
const span = document.createElement("span");
span.classList.add(`planweb-description-discount-detail`);
span.classList.add('col-12');
span.classList.add('mb-2');
span.innerHTML = phraseProductDetail.replace("$preco", `${price_final.toLocaleString('pt-br',{ minimumFractionDigits: 2 , style: 'currency', currency: 'BRL' })}`);
//parent.insertBefore(span,link)
link.innerHTML = span.innerHTML + ' ou ' + link.innerHTML + ' em até 12x* no cartão';
}
const reformatterDescription = () => {
const products = document.querySelectorAll("[data-product-id]");
if(products){
for(const product of [...products]){
renderProductListItem(product)
}
}
}
const queryString = window.location.search
const urlParams = new URLSearchParams(queryString)
if(urlParams.has('offScripPlanweb')) return false
if(LS.product){
reformatterDescription();
return renderProductDetail()
}
if(LS.template === "home"){
const products = document.querySelectorAll('.js-item-product');
console.log('products',products)
for(const product of [...products]){
renderProductListItem(product)
}
return;
}
const container = document.querySelector('.js-product-table')
if(container){
reformatterDescription();
const config = { attributes: false, childList: true, subtree: false };
const observer = new MutationObserver(function(mutations) {
reformatterDescription()
});
observer.observe(container, config);
}
})()
</script>Via aplicativo
Esse método funciona também em outros temas da Nuvemshop que não tenham mudanças no FTP ou aplicativos que conflitam. Clique no botão abaixo para instalar o app e fazer as configurações. Se não funcionar, desative o aplicativo e solicite ao suporte que faça a implantação manualmente na sua loja.
Atenção: este material, incluindo o script, é de uso individual e exclusivo, sendo proibido a revenda, cópia total ou parcial e o compartilhamento sem a autorização por escrito da Planweb Interativa. Jackson Tecnologia Ltda.