PHP para mostrar o selo de venda não funcionando corretamente
-
12-12-2019 - |
Pergunta
Estou tentando exibir um selo de venda sobre a imagem de produtos com preço especial no catálogo e nas páginas de produtos.
Eu usei o seguinte PHP:
<?php // sale badge ?>
<?php
$specialPrice = $_product->getSpecialPrice();
$specialPriceFromDate = $_product->getSpecialFromDate();
$specialPriceToDate = $_product->getSpecialToDate();
?>
<?php if ($specialPrice || ($currentDate >= $specialPriceFromDate && $currentDate <= $specialPriceToDate) || ($currentDate >= $specialPriceFromDate && $specialPriceFromDate != '' && $specialPriceToDate == '')): ?>
<span class="sale-badge"><?php echo $this->__('Sale') ?></span>
<?php endif; ?>
Isso exibe o selo corretamente, a menos que o preço especial até o momento tenha passado, quando ainda exibe o selo, mesmo que o produto não esteja mais com o preço especial.
A ideia é que o emblema seja exibido nos seguintes cenários:
- não há datas especiais de ou especiais definidas (ou seja,o produto está permanentemente em especial até ser alterado manualmente)
- há uma data inicial, mas não uma data final (ou seja,uma vez passada a data, o produto fica permanentemente em promoção até ser alterado manualmente)
- não existe uma data inicial, mas existe uma data atual (ou seja,o produto está em promoção até a data passar)
- há uma data de e até (ou seja,o produto só está em promoção dentro do período definido)
Tenho certeza de que perdi algo óbvio, mas alguém pode apontar o que é, por favor?
Solução
Hugh, você não precisa de muitos códigos. Basta verificar se o preço final é menor que o preço do produto.
Experimente isso
<?php if($_product->getFinalPrice()<$_product->getPrice()): ?>
<span class="sale-badge"><?php echo $this->__('Sale') ?></span>
<?php endif; ?>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange