Jump to content
Tristan Matteoli

Afficher le même prix sur la page d'accueil et sur la page produit (Pris dégressifs)

Recommended Posts

Bonjour,

Tout d'abord je vous informe que je suis sous la version 1.7 de prestashop. J'utilise un thème nommé ZOneTheme.
J'ai un problème sur l'affichage de mes prix qui est différent entre la page produit et la page d'accueil, je vous explique.

Les prix de ma page produit se présentent comme ceci

prix_produit.png.a00fa9b30cd111fc6dc3abd99f25350c.png

Cela convient parfaitement car le prix (en rouge) HT est celui que l'on veut afficher : le prix HT le moins cher des prix dégressifs. Celui-ci est affiché grâce au code ci-dessous :

                    {block name='product_price_and_shipping'}
                      {if $product.show_price}
                      {assign var="quantity_discounts" value=$product.quantity_discounts}

                        {assign var='mini_wtax' value=$product.price}
                        {assign var="mini_price" value=$product.price_tax_exc}
                        {assign var='compt_custom' value=1}

                        {section name=quantity_discount loop=$quantity_discounts step=-1}
                          {if $quantity_discounts[quantity_discount].price != 0 OR $quantity_discounts[quantity_discount].reduction_type == 'amount'}
                              {assign var='prixProduct' value=$product.quantity_discounts[quantity_discount].price|floatval}
                              {assign var='prixProductw' value=($product.price - $quantity_discounts[quantity_discount].real_value)|floatval}
                              {if $prixProduct < $mini_price}
                              {assign var='mini_price' value=$prixProduct}
                              {assign var='mini_wtax' value=$prixProductw}
                              {/if}
                          {/if}
                          {$compt_custom = 2}
                        {/section}

                        {$mini_wtax = $mini_price * $product.price / $product.price_tax_exc}

                        {$taux_tax = 1.2}

                        <div class="product-price-and-shipping flex-wrap align-items-center" itemprop="offers" itemscope itemtype="https://schema.org/Offer">
                          <div class="first-prices flex-wrap align-items-center">
                            {hook h='displayProductPriceBlock' product=$product type="before_price"}
                            <span class="price product-price" itemprop="price" content="{$product.price_amount}">
                              <p style="font-size:12px; color: black;"> A partir de: </p>
                              {Tools::displayPrice($mini_price|floatval)} HT
                              <p style="font-size:12px; color: lightgrey;"> soit :   {Tools::displayPrice($mini_price * $taux_tax|floatval)}  TTC</p>
                          </div>

Cela fonctionne très bien sur notre page produit, seulement nous affichons aussi des produits sur la page d'accueil (product-home-grid.tpl) et sur les produits des différentes catégories (miniatures/product.tpl). Sur ces produits, le prix HT affiché n'est pas le même : prestashop affiche le prix HT le plus cher (des prix dégressifs) au lieu du moins cher.

Là ou le prix du produit affiché est 49,90€ on devrait avoir le même prix que sur la page produit soit 42,90€.

prix_compar.png.aa74058c1b687b9f454a32583233101d.png

Je pense que le problème viens du fait que depuis la page d'accueil il n'arrive pas à récupérer les informations des "quantity_discounts" ce qui fait que le prix est donc le prix de base du produit alors qu'il nous faut afficher son prix HT le moins cher en rapport aux prix dégressifs. 

Je ne sais pas comment résoudre ce problème, y aurait-il une âme charitable pouvant m'aider s'il vous plait ?

Je vous remercie, 
Tristan Matteoli.

Share this post


Link to post
Share on other sites

Merci de l'aide..

Problème résolu en créant une variable $mini_price comme ceci: 

{$mini_price = Product::getPriceStatic($product.id_product, false, null, 6, null, false, true, $smarty.const.PHP_INT_MAX)}

Ensuite appeler la variable $mini_price à l'endroit voulu.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More