Tchupa Posted February 16, 2021 Share Posted February 16, 2021 (edited) Bonjour, je rencontre actuellement un problème avec l'affichage des tarifs de certains produits dans les SERPS, en effet google dans son aperçu affiche 5 chiffres avant la virgule. Exemple un article coûte 46.90€ TTC dans les résultats de recherche google affiche: 46896,00€ la virgule n'est pas au bon endroit. J'ai d'abord pensé a un module mal structurée au niveau des données concernant mais n'ayant rien trouvé de probant j'ai décidé d'effectuer un test en changeant de template. Dans un premier temps j'ai repis un template totalement vierge d'une version 1.6 sans effectué aucune modification et aucun changement le problème est toujours là. J'ai testé avec un second thème non officile prestashop et le problème disparait. J'en conconlus que le problème se situe dans le theme par défaut de prestashop. Voici le code de la partie concerné de mon product.tpl car ce désagrément ne concerne que les fiches produits car j'ai déjà retiré les données stucturées des products-list etc... il ne reste que les fiches produits. <p class="our_price_display" itemprop="offers" itemscope itemtype="https://schema.org/Offer">{strip} {if $product->quantity > 0}<link itemprop="availability" href="https://schema.org/InStock"/>{/if} {if $priceDisplay >= 0 && $priceDisplay <= 2} <span id="our_price_display" itemprop="price" content="{$productPrice|floatval}">{convertPrice price=$productPrice}</span> {if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))} {if $priceDisplay == 1} {l s='tax excl.'}{else} {l s='tax incl.'}{/if} {/if} <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {hook h="displayProductPriceBlock" product=$product type="price"} {/if} {/strip} </p> Voici l'extrait de code dans la console chrome: <span id="our_price_display" itemprop="price" content="46.896">46,90 €</span> Si je teste une url dans l'outil google de test des données structurées il lit correctement le content: Citation @type Offer availability http://schema.org/InStock price 46.896 priceCurrency EUR Par contre l'aperçu des résultats: Citation Prix 46 896,00 € Suis je passé a coté de quelque chose ? En vous remerciant, Tchupa. Edited March 6, 2021 by Tchupa Problème résolu (see edit history) Link to comment Share on other sites More sharing options...
Shonen Posted February 16, 2021 Share Posted February 16, 2021 Salut, J'arrive à reproduire ton problème sur un thème natif Prestashop 1.6.1.24. Je n'ai pas non plus le problème sur un thème maison qui n'override néanmoins pas cette partie du code. A mon avis, il s'agit de la lecture de la virgule et des espaces qui est différent aux US, pour eux un point équivaut à un espace. D'après la doc https://schema.org/price : Quote <!--price is 1000, a number, with locale-specific thousands separator and decimal mark, and the $ character is marked up with the machine-readable code "USD" --> <span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="1000.00">1,000.00</span> Quote Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator. Peut être qu'il n'arrive pas à comprendre la currency ? S'il croit avoir affaire à du $ il va prendre un . pour un séparateur de millier et non décimale. Link to comment Share on other sites More sharing options...
Tchupa Posted February 17, 2021 Author Share Posted February 17, 2021 Salut Shonen, merci d'avoir pris le temps de me répondre et surtout tu me rassure en confirmant bien la présence de ce bug dans le template par faut de la 1.6 concernant la currency si je regarde dans la console chrome le code iso est bien pris en compte <meta itemprop="priceCurrency" content="EUR"> Link to comment Share on other sites More sharing options...
Tchupa Posted March 6, 2021 Author Share Posted March 6, 2021 (edited) Hello, j'ai enfin trouvé la solution a mon problème dans le template par défaut de prestashop 1.6.1.etc, je partage pour les personnes qui pourraient rencontrer ce problème a l'avenir. Ouvrir le fichier product.tpl au tout début du fichier vous avez le code : {include file="$tpl_dir./errors.tpl"} {if $errors|@count == 0} {if !isset($priceDisplayPrecision)} {assign var='priceDisplayPrecision' value=2} {/if} {if !$priceDisplay || $priceDisplay == 2} {assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, 6)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)} {elseif $priceDisplay == 1} {assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, 6)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)} {/if} Remplacer le par: {include file="$tpl_dir./errors.tpl"} {if $errors|@count == 0} {if !isset($priceDisplayPrecision)} {assign var='priceDisplayPrecision' value=2} {/if} {if !$priceDisplay || $priceDisplay == 2} {assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, 2)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)} {elseif $priceDisplay == 1} {assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, 2)} {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)} {/if} Bonne journée à tous. Tchupa. Edited March 6, 2021 by Tchupa (see edit history) 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