Yvan07 Posted January 24 Share Posted January 24 (edited) Bonjour à la communauté, j'ai un prestashop 1.6 et pour répondre au attente de notre ami "Google", j'ai du faire des modifs sur mon product-list.tpl de mon thème. Tout semblait fonctionner mais le blockbestsellers de la page d’accueil est réfractaire à une des modifications. "Nombre à virgule flottante non valide dans la propriété "price" (dans "offers")" car la devise est accolée au montant dans le code lu par google! Voici l'extrait du code de mon product-list.tpl: <div itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="content_price"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)} <span itemprop="price" content="{$product.price}" class="price product-price{if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} product-price-new{/if}"> Voici le résultat dans le blockbestsellers de la page d’accueil (content="99.00€"): <div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer" class="content_price"> <span itemprop="price" content="99.00€" class="price product-price">99.00€ </span><meta itemprop="priceCurrency" content="EUR"> Alors que les autres pages de catégorie affiche le prix correctement (content="99") <div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer" class="content_price"> <span itemprop="price" content="99" class="price product-price">99.00€ </span> 8.25€ par Kg<meta itemprop="priceCurrency" content="EUR"> Si quelqu'un a une piste? Merci d'avance Edited January 24 by Yvan07 Résolu (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted January 24 Share Posted January 24 Cache Presta vidé ? Pas de tpl particulier dans votre thème pour ce module ? 1 Link to comment Share on other sites More sharing options...
Yvan07 Posted January 24 Author Share Posted January 24 bonjour @Eolia, Je viens à l'instant de trouver la solution et oui le cache était bien purgé. Le fichier blockbestsellers.php de mon module calcule le prix en fonction de la devise et des taxes de manière indépendante protected function getBestSellers($params) { if (Configuration::get('PS_CATALOG_MODE')) return false; if (!($result = ProductSale::getBestSalesLight((int)$params['cookie']->id_lang, 0, (int)Configuration::get('PS_BLOCK_BESTSELLERS_TO_DISPLAY')))) return (Configuration::get('PS_BLOCK_BESTSELLERS_DISPLAY') ? array() : false); $currency = new Currency($params['cookie']->id_currency); $usetax = (Product::getTaxCalculationMethod((int)$this->context->customer->id) != PS_TAX_EXC); foreach ($result as &$row) $row['price'] = Tools::displayPrice(Product::getPriceStatic((int)$row['id_product'], $usetax), $currency); return $result; } En commentant la zone du calcul du prix, l'affichage est pris en charge par mon fichier product-list.tpl protected function getBestSellers($params) { if (Configuration::get('PS_CATALOG_MODE')) return false; if (!($result = ProductSale::getBestSalesLight((int)$params['cookie']->id_lang, 0, (int)Configuration::get('PS_BLOCK_BESTSELLERS_TO_DISPLAY')))) return (Configuration::get('PS_BLOCK_BESTSELLERS_DISPLAY') ? array() : false); /*$currency = new Currency($params['cookie']->id_currency); $usetax = (Product::getTaxCalculationMethod((int)$this->context->customer->id) != PS_TAX_EXC); foreach ($result as &$row) $row['price'] = Tools::displayPrice(Product::getPriceStatic((int)$row['id_product'], $usetax), $currency); */ return $result; } Du coup mon affichage est correct (content="99") <div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer" class="content_price"> <span itemprop="price" content="99" class="price product-price">99.00€ </span><meta itemprop="priceCurrency" content="EUR"> Merci d'avoir pris le temps de me répondre 😉 Link to comment Share on other sites More sharing options...
Yvan07 Posted January 24 Author Share Posted January 24 (edited) Par-contre j'ignore comment mettre ce sujet en "résolu" 😅 Edited January 24 by Yvan07 (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted January 24 Share Posted January 24 Editez le premier message en ajoutant [RESOLU] au sujet. 1 Link to comment Share on other sites More sharing options...
Eolia Posted January 24 Share Posted January 24 En fait i vous commentez ce bloc, les prix seront en HT dans le bloc Meilleures ventes (celui affiché dans les colonnes gauche ou droite) Il est préférable de modifier le code comme suit protected function getBestSellers($params) { if (Configuration::get('PS_CATALOG_MODE')) return false; if (!($result = ProductSale::getBestSalesLight((int)$params['cookie']->id_lang, 0, (int)Configuration::get('PS_BLOCK_BESTSELLERS_TO_DISPLAY')))) return (Configuration::get('PS_BLOCK_BESTSELLERS_DISPLAY') ? array() : false); $currency = new Currency($params['cookie']->id_currency); $usetax = (Product::getTaxCalculationMethod((int)$this->context->customer->id) != PS_TAX_EXC); foreach ($result as &$row) $row['price_display'] = Tools::displayPrice(Product::getPriceStatic((int)$row['id_product'], $usetax), $currency); return $result; } et de remplacer price par price_display dans le fichier blockbestsellers.tpl {if !$PS_CATALOG_MODE} <div class="price-box"> <span class="price">{convertPrice price=$product.price_display}</span> {hook h="displayProductPriceBlock" product=$product type="price"} </div> {/if} 1 Link to comment Share on other sites More sharing options...
Yvan07 Posted January 24 Author Share Posted January 24 Merci @Eolia, Je testerai tes modifications ce soir (préparation des commandes obligent), je suis certains que tes modifications sont plus propres que les miennes 😅. Par contre, j'ai testé, les prix s'affichent bien ttc (en fonction du lieu de livraison). Je te tiens au courant des changements. Merci pour tout. 🙏 Link to comment Share on other sites More sharing options...
Yvan07 Posted January 24 Author Share Posted January 24 @Eolia Je viens de tester tes modifications en express🤪, et ça fonctionne parfaitement! Tu es incroyable! Merci beaucoup🙏 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