Jump to content

Affichage automatique des déclinaison de produits


smonnard

Recommended Posts

Bonjour à tous,

 

J'ai commencé à utiliser prestashop en novembre 2012 et j'ai toujours trouvé mes réponses dans ce forum. Mais depuis dimanche, je bloque sur un problème dont les réponses ne m'ont pas apportées de solution. Du coup, j'ai décidé de m'inscrire et en cherchant la réponse à mon problème j'ai trouvé quelques pistes et posté quelques réponses ou plutôt début de réponses dans d'autres posts.

 

Affichage automatique d'une déclinaison de produit

Sur le template de base de Prestashop 1.5.4.1 (front-end), lorsqu'on change de déclinaison dans la liste déroulante d'un produit, le prix se met automatiquement à jour.

 

Sur le template que j'ai récemment acheté, le changement automatique ne se fait pas. J'ai contacté le vendeur du template en question et il m'a répondu que ce n'était pas une fonctionnalité faisant partie de son template.

 

Du coup, je me demande comment modifier le code pour obtenir cette même fonctionnalité. Mes connaissances sont assez sommaires mais voici un début de piste :

 

Le bloc div "product_attributes" renvoie des valeurs à l'adresse de la page sous la forme :

 

index.php?id_product=94&controller=product[b]#/evo_prime_led_barre-xil_ep1020_20[/b]

 

<div class="product_attributes">
<div id="attributes">
<div class="clear"></div>
<fieldset class="attribute_fieldset">
<label class="attribute_label" for="group_7">EVO PRIME LED BARRE : </label>
<div class="attribute_list">
<select id="group_7" class="attribute_select" onchange="findCombination();getProductAttribute();" name="group_7">
<option value="151" title="XIL-EP420 20°">XIL-EP420 20°</option>
<option value="139" title="XIL-EP1020 20°">[b]XIL-EP1020 20°[/b]</option>
</select>
</div>
</fieldset>
</div>

 

J'imagine alors bien qu'un code javascript s'occupe de mettre à jour automatique le prix. Mais comme dit précedemment je sais comment ça fonctionne dans les grandes lignes, mais pas davantage.

 

Je vous remercie pour toute aide à dénicher le fameux code derrière ce fonctionnement :-) !

Link to comment
Share on other sites

J'ai continué mes recherches et j'ai une nouvelle piste.

 

En remplaçant le code product.tpl du nouveau thème par celui du thème par défaut de prestashop, mon prix change en fonction de la déclinaison choisie.

 

Par contre (ce qui est logique), la mise en page change également.

 

 

Le nouveau template qui ne prend pas en charge le changement de prix de la déclinaison :

 

 

Le nouveau template avec le product.tpl du template par défaut de prestashop qui prend en charge le changement de prix de la déclinaison :

template-default-prix-attribut.png

Donc ma conclusion est que cela ne se passe pas au niveau du code javascript mais du php du fichier product.tpl

 

Reste à savoi où :-) !

Edited by smonnard (see edit history)
Link to comment
Share on other sites

J'ai enfin trouvé un début solution temporaire pour modifier le nouveau template.

 

Dans le template officiel (ou par défaut de prestashop) on a <span id="our_price_display"> :

<div class="price">
<p id="our_price_display">
{if $priceDisplay >= 0 && $priceDisplay <= 2}
 <span id="our_price_display">{convertPrice price=$productPrice}</span>
 <!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))}
  {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
 {/if}-->
{/if}
</p>

 

Hors sur le template que j'ai acheté il est écrit ainsi <span class="our_price_display price"> :

<div class="price">
<p class="our_price_display">
{if $priceDisplay >= 0 && $priceDisplay <= 2}
 <span class="our_price_display price">{convertPrice price=$productPrice}</span>
 <!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))}
  {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
 {/if}-->
{/if}
</p>

 

Je constate également que le code de ce "nouveau template" a été mis à jour en 2012... Cela m'invite à comprendre le label "Attesté par Prestashop". A suivre pour cet apparté.

 

La solution.

Il d'ajouter l'id our_price_display en plus de la class our_price display et price.

 

<div class="price">
<p class="our_price_display">
{if $priceDisplay >= 0 && $priceDisplay <= 2}
 <span [color=#b22222][b]id="our_price_display"[/b][/color] class="our_price_display price">{convertPrice price=$productPrice}</span>
 <!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))}
  {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
 {/if}-->
{/if}
</p>

 

Même si cela est résolu, je me demande où se trouve ID our_price_display ?

Edited by smonnard (see edit history)
Link to comment
Share on other sites

  • 9 months later...

Bonjour,

 

Est-il possible d'avoir la même fonctionnalité native de la page product au niveau de la page product-list ?

C'est-à-dire qu'en fonction des choix fait via le filtre, qu'on puisse afficher le prix de la déclinaison correspondante et non pas celle par défaut

Merci

Link to comment
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...