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:

  1. não há datas especiais de ou especiais definidas (ou seja,o produto está permanentemente em especial até ser alterado manualmente)
  2. 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)
  3. não existe uma data inicial, mas existe uma data atual (ou seja,o produto está em promoção até a data passar)
  4. 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?

Foi útil?

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
scroll top