Question

J'essaie d'afficher un badge de vente sur l'image des produits avec un prix spécial sur le catalogue et les pages de produits.

J'ai utilisé le PHP suivant:

<?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; ?>

Ceci affiche le badge correctement si le prix spécial à ce jour a passé lorsqu'il affiche toujours le badge même si le produit n'est plus au prix spécial.

L'idée est que le badge s'affiche dans les scénarios suivants:

  1. Il n'y a pas de SPÉCIAL OU SPÉCIAL AUX DATES SET (I.E. Le produit est en permanence sur spécial jusqu'à modification manuelle)
  2. Il y a une date de date mais non à ce jour (c'est-à-dire une fois que la date de la date passe le produit est de manière permanente sur spéciale jusqu'à modification manuelle)
  3. Il n'y a pas de date, mais il y a un à ce jour (c'est-à-dire que le produit est spécial jusqu'à ce que la date passe)
  4. Il y a un de et A à jour (c'est-à-dire que le produit est uniquement sur spécial dans la période définie)

    Je suis sûr que je viens de manquer quelque chose d'évident mais que quelqu'un peut signaler ce qu'il est s'il vous plaît?

Était-ce utile?

La solution

hugh, vous ne devez pas avoir beaucoup de codes.Juste vérifier le prix final est inférieur au produit. Prix final.Le prix est calculé automatiquement.

Essayez ceci

<?php if($_product->getFinalPrice()<$_product->getPrice()): ?>
  <span class="sale-badge"><?php echo $this->__('Sale') ?></span>
    <?php endif; ?>

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top