Céline13240 Posted January 4, 2017 Share Posted January 4, 2017 (edited) Bonjour, Dans le cadre de la mise à jour de ma boutique de la version 1.5.6.1 vers la version 1.6.1.10 de prestashop, je réalise un nouveau thème en prenant comme base le thème par défaut Bootstrap. Je souhaite modifier l'emplacement de certaines informations sur la fiche produit, et notamment le message de disponibilité d'un produit. Pour ce faire, j'ai éditer le fichier product.tpl de mon thème et fais tout simplement un copier/coller du code correspondant pour l'intégrer en dessous du bloc prix. Voici le code que j'ai déplacé : {if ($display_qties == 1 && !$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && $product->available_for_order)} <!-- number of item in stock --> <p id="pQuantityAvailable"{if $product->quantity <= 0} style="display: none;"{/if}> <span id="quantityAvailable">{$product->quantity|intval}</span> <span {if $product->quantity > 1} style="display: none;"{/if} id="quantityAvailableTxt">{l s='Item'}</span> <span {if $product->quantity == 1} style="display: none;"{/if} id="quantityAvailableTxtMultiple">{l s='Items'}</span> </p> {/if} <!-- availability or doesntExist --> <p id="availability_statut"{if !$PS_STOCK_MANAGEMENT || ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> {*<span id="availability_label">{l s='Availability:'}</span>*} <span id="availability_value" class="label{if $product->quantity <= 0 && !$allow_oosp} label-danger{elseif $product->quantity <= 0} label-warning{else} label-success{/if}">{if $product->quantity <= 0}{if $PS_STOCK_MANAGEMENT && $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{elseif $PS_STOCK_MANAGEMENT}{$product->available_now}{/if}</span> </p> {if $PS_STOCK_MANAGEMENT} {hook h="displayProductDeliveryTime" product=$product} <p class="warning_inline" id="last_quantities"{if ($product->quantity > $last_qties || $product->quantity <= 0) || $allow_oosp || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none"{/if} >{l s='Warning: Last items in stock!'}</p> {/if} <p id="availability_date"{if ($product->quantity > 0) || !$product->available_for_order || $PS_CATALOG_MODE || !isset($product->available_date) || $product->available_date < $smarty.now|date_format:'%Y-%m-%d'} style="display: none;"{/if}> <span id="availability_date_label">{l s='Availability date:'}</span> <span id="availability_date_value">{dateFormat date=$product->available_date full=false}</span> </p> <!-- Out of stock hook --> <div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}> {$HOOK_PRODUCT_OOS} </div> Le problème que je rencontre, c'est que pour un produit qui possède des déclinaisons dont certaines sont indisponibles j'ai quand même le message "en stock" au lieu de "Ce produit n'est plus en stock avec ces options mais reste disponible avec d'autres options". Ce qui me paraît encore plus étrange c'est que le message situé à l'emplacement initial, c'est à dire dans la colonne du centre sous la description courte est correct comme vous pouvez le voir sur la capture d'écran ci-jointe. Par avance, merci à la communauté. Edited January 5, 2017 by Céline13240 (see edit history) Link to comment Share on other sites More sharing options...
Céline13240 Posted January 5, 2017 Author Share Posted January 5, 2017 Bonjour, Personne n'a de pistes à me suggérer ? J'ai passé en revue les fichiers js qui me semblaient pertinents mais je ne trouve pas de solutions. Merci. Link to comment Share on other sites More sharing options...
Céline13240 Posted January 5, 2017 Author Share Posted January 5, 2017 Bonjour, Je n'ai pas trouvé de solution mais je pense un peu mieux cerner le problème. En changeant de place le code concernant la mention de la disponibilité du produit, il semblerait que cela modifie la façon dont prestashop calcule la quantité des produits disponibles. Prestashop au lieu de prendre en compte uniquement la quantité disponible pour une déclinaison, il va prendre en compte la quantité total de produit disponible, additionnant ainsi les quantités de toutes les déclinaisons d'où la mention "en stock". Ce qui explique aussi pourquoi j'observe ce phénomène uniquement pour les produits avec déclinaisons (ce qui représente la plus grosse part des articles présents sur la boutique). Par ailleurs, en cherchant dans les différents fichiers, j'ai repéré cette ligne de code dans le fichier Product.php que je suppose être responsable de ce mécanisme mais je n'en suis pas sûre du tout : p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, Voilà où j'en suis dans mes investigations. J'espère qu'une âme charitable saura m'aider. Merci d'avance. Link to comment Share on other sites More sharing options...
Céline13240 Posted January 6, 2017 Author Share Posted January 6, 2017 Bonjour, Ca y est j'ai trouvé la solution même si je comprends pas ce comportement de prestashop et c'était tout con. J'avais uniquement fait un copier/coller. Autrement dit, je n'avais pas supprimer le code à son emplacement initial. Et c'est précisément ça qui posait souci. En fait, j'ai fait un autre test en positionnant le même bout de code mais cette fois-ci sous la référence. Ainsi, sur ma fiche produit j'avais 3 fois l'info à des endroits différents. Seul le 1er label concernant la disponibilité du produit (ainsi que la quantité en stock) était correcte. C'est de cette façon que j'ai compris qu'il fallait supprimer le code initial (ce que je comptais faire au départ mais je voulais voir si ça fonctionnait correctement avant de supprimer le code à son emplacement initial ==>Grossière erreur). Par contre, si quelqu'un est en capacité de m'expliquer pourquoi prestashop a eu ce comportement, je suis preneuse . J'espère que cette mésaventure sera utile pour d'autres. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now