nicolasG Posted July 8, 2014 Share Posted July 8, 2014 Bonjour, Google me signale des erreurs sur les pages produits de mon site pour les "Données structurées", voici l'erreur : "Champ manquant : price" Pouvez-vous m'aider svp à résoudre mon problème ? Adresse d'un produit de mon site (pour consulter le code source) : http://www.aromathessence.fr/les-huiles-essentielles-de-m-a-o/37-huile-essentielle-menthe-poivree.html Je soupçonne le sympbole euro dans la balise <span id="our_price_display" itemprop="price"> Si c'est vraiment cela ... un deuxième problème se pose, comment dissocier le prix du symbole euro ? fichier product.tpl (dans le dossier du theme) <span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span> Pouvez-vous me dire si ma piste est bonne ? merci pour vos réponse. Link to comment Share on other sites More sharing options...
Les Folies de Mélani Posted August 4, 2014 Share Posted August 4, 2014 Bonjour, Il faut différentier price et priceCurrency https://schema.org/Offer Link to comment Share on other sites More sharing options...
Madeinfranceonly Posted August 5, 2014 Share Posted August 5, 2014 Bonjour, J'ai le même problème. Il y a quelques temps, j'ai trouvé une solution sur un forum. Il s'agit d'une modification dans product-list.tpl Après la ligne 185 <span class="out-of-stock"><link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'} </span>{/if} Mettre <!--Début Ligne ajouter pour extrait enrichi--> <span itemprop="price" class="price product-price " style="text-indent: -9999px"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> <!--Fin Ligne ajouter pour extrait enrichi --> Je ne suis pas développeur... Cela fonctionne mais ce n'est pas très propre car le prix apparaît deux fois sur la fiche produit mais masqué par le text-ident:-9999px ... Il faudrait une correction de la part de prestashop. Ce problème existait déjà sous prestashop 1.5 Cordialement Link to comment Share on other sites More sharing options...
Nouvelle Vape Posted September 24, 2014 Share Posted September 24, 2014 J'ai le même problème champ manquant: price, sur des pages de catégories ou plusieurs produits apparaissent sur la même page. J'ai balisé moi-même sans problème les pages produits avec l'outil disponible de webmaster tool de google. Mais les erreurs concernant les pages catégories restent, et je ne sais pas comment les corriger. Quelqu'un a t-il trouvé un truc? Merci Link to comment Share on other sites More sharing options...
Les Folies de Mélani Posted September 25, 2014 Share Posted September 25, 2014 Bonjour, Il faut enlever le balisage dans les categories, il est contraire aux consignes de google. (balisage uniquement quand il y a une seul offre sur la page) De memoire, il est dans le fichier product list.tpl Link to comment Share on other sites More sharing options...
Nouvelle Vape Posted September 26, 2014 Share Posted September 26, 2014 enlever le balisage dans les catégories, ça veut dire qu'il faut supprimer toutes les lignes du type <meta itemprop=...> c'est bien ça? Y a t-il d'autres balises à supprimer? Dernière question, pourquoi prestashop a t-il mis du balisage dans les catégories? Merci! Link to comment Share on other sites More sharing options...
lokiiy Posted September 29, 2014 Share Posted September 29, 2014 Egalement intéressé d'avoir une vrai réponse et pas de bidouillage ::: Link to comment Share on other sites More sharing options...
lokiiy Posted September 30, 2014 Share Posted September 30, 2014 Bonjour, J'ai le même problème. Il y a quelques temps, j'ai trouvé une solution sur un forum. Il s'agit d'une modification dans product-list.tpl Après la ligne 185 <span class="out-of-stock"> <link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'} </span> {/if} Mettre <!--Début Ligne ajouter pour extrait enrichi--> <span itemprop="price" class="price product-price " style="text-indent: -9999px"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> <!--Fin Ligne ajouter pour extrait enrichi --> Je ne suis pas développeur... Cela fonctionne mais ce n'est pas très propre car le prix apparaît deux fois sur la fiche produit mais masqué par le text-ident:-9999px ... Il faudrait une correction de la part de prestashop. Ce problème existait déjà sous prestashop 1.5 Cordialement Est ce la bonne formule ... Cela modifie les erreur de price dans GWT ?? Quelqu'un a t'il fait l'expérience ?? Link to comment Share on other sites More sharing options...
Les Folies de Mélani Posted September 30, 2014 Share Posted September 30, 2014 https://support.google.com/webmasters/answer/146750?hl=fr Si vous utilisez le balisage de produits, la page doit traiter essentiellement d'un produit spécifique, pas d'une catégorie, ni d'une fiche de produits. Le balisage de produits n'est compatible ni avec les fiches, ni avec les catégories. Supprimer du product_list.tpl tout les itemscope itemtype="xxxx" tout les : itemprop="xxx" Pour ce qui est de pourquoi l’équipe prestashop à fait ça, j'en sais rien des fois ils font des truc blizzard comme mettre le panier en <h2> Link to comment Share on other sites More sharing options...
lokiiy Posted September 30, 2014 Share Posted September 30, 2014 (edited) Bonjour Merci pour les réponses !! Petite précision faut t'il aussi enlever à la ligne 50 : itemscope itemtype="http://schema.org/Product" <div class="product-container" itemscope itemtype="http://schema.org/Product"> Et il faut tout supprimer itempro="url" par exemple ou juste supprimer ce qui est entre "" ?? Edited September 30, 2014 by lokiiy (see edit history) Link to comment Share on other sites More sharing options...
Les Folies de Mélani Posted September 30, 2014 Share Posted September 30, 2014 (edited) il doit rester ceci dans votre code. <div class="product-container" > il faut supprimer itempro="url" Edited September 30, 2014 by Les Folies de Mélani (see edit history) Link to comment Share on other sites More sharing options...
lokiiy Posted September 30, 2014 Share Posted September 30, 2014 il doit rester ceci dans votre code. <div class="product-container" > il faut supprimer itempro="url" Ok merci pour toutes ses précisions !!! Link to comment Share on other sites More sharing options...
lokiiy Posted September 30, 2014 Share Posted September 30, 2014 Encore moi... Je préfère être sur de ce qu'il faut vraiment enlever Je colle donc le code de ce que j'ai dans le fichier product.list.tpl.... Ainsi si vous pouviez me mettre ce qu'il y a à supprimer ... Ca servira pour tout ceux qui sont en 1.6.0.8 pour ma version {* * 2007-2014 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} {if isset($products) && $products} {*define numbers of product per line in other page for desktop*} {if $page_name !='index' && $page_name !='product'} {assign var='nbItemsPerLine' value=3} {assign var='nbItemsPerLineTablet' value=2} {assign var='nbItemsPerLineMobile' value=3} {else} {assign var='nbItemsPerLine' value=4} {assign var='nbItemsPerLineTablet' value=3} {assign var='nbItemsPerLineMobile' value=2} {/if} {*define numbers of product per line in other page for tablet*} {assign var='nbLi' value=$products|@count} {math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines} {math equation="nbLi/nbItemsPerLineTablet" nbLi=$nbLi nbItemsPerLineTablet=$nbItemsPerLineTablet assign=nbLinesTablet} <!-- Products list --> <ul{if isset($id) && $id} id="{$id}"{/if} class="product_list grid row{if isset($class) && $class} {$class}{/if}"> {foreach from=$products item=product name=products} {math equation="(total%perLine)" total=$smarty.foreach.products.total perLine=$nbItemsPerLine assign=totModulo} {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineTablet assign=totModuloTablet} {math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineMobile assign=totModuloMobile} {if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if} {if $totModuloTablet == 0}{assign var='totModuloTablet' value=$nbItemsPerLineTablet}{/if} {if $totModuloMobile == 0}{assign var='totModuloMobile' value=$nbItemsPerLineMobile}{/if} <li class="ajax_block_product{if $page_name == 'index' || $page_name == 'product'} col-xs-12 col-sm-4 col-md-3{else} col-xs-12 col-sm-6 col-md-4{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLine == 0} last-in-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLine == 1} first-in-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModulo)} last-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 0} last-item-of-tablet-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 1} first-item-of-tablet-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 0} last-item-of-mobile-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 1} first-item-of-mobile-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModuloMobile)} last-mobile-line{/if}"> <div class="product-container" itemscope itemtype="http://schema.org/Product"> <div class="left-block"> <div class="product-image-container"> <a class="product_img_link" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url"> <img class="replace-2x img-responsive" src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} itemprop="image" /> </a> {if isset($quick_view) && $quick_view} <div class="quick-view-wrapper-mobile"> <a class="quick-view-mobile" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}"> <i class="icon-eye-open"></i> </a> </div> <a class="quick-view" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}"> <span>{l s='Quick view'}</span> </a> {/if} {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <div class="content_price" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)} <span itemprop="price" class="price product-price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span class="old-price product-price"> {displayWtPrice p=$product.price_without_reduction} </span> {if $product.specific_prices.reduction_type == 'percentage'} <span class="price-percent-reduction">-{$product.specific_prices.reduction * 100}%</span> {/if} {/if} {hook h="displayProductPriceBlock" product=$product type="price"} {hook h="displayProductPriceBlock" product=$product type="unit_price"} {/if} </div> {/if} {if isset($product.new) && $product.new == 1} <a class="new-box" href="{$product.link|escape:'html':'UTF-8'}"> <span class="new-label">{l s='New'}</span> </a> {/if} {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} <a class="sale-box" href="{$product.link|escape:'html':'UTF-8'}"> <span class="sale-label">{l s='Sale!'}</span> </a> {/if} </div> {hook h="displayProductDeliveryTime" product=$product} {hook h="displayProductPriceBlock" product=$product type="weight"} </div> <div class="right-block"> <h5 itemprop="name"> {if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if} <a class="product-name" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url" > {$product.name|truncate:45:'...'|escape:'html':'UTF-8'} </a> </h5> {hook h='displayProductListReviews' product=$product} <p class="product-desc" itemprop="description"> {$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'} </p> {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <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" class="price product-price"> {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} </span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} {hook h="displayProductPriceBlock" product=$product type="old_price"} <span class="old-price product-price"> {displayWtPrice p=$product.price_without_reduction} </span> {hook h="displayProductPriceBlock" id_product=$product.id_product type="old_price"} {if $product.specific_prices.reduction_type == 'percentage'} <span class="price-percent-reduction">-{$product.specific_prices.reduction * 100}%</span> {/if} {/if} {hook h="displayProductPriceBlock" product=$product type="price"} {hook h="displayProductPriceBlock" product=$product type="unit_price"} {/if} </div> {/if} <div class="button-container"> {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE} {if ($product.allow_oosp || $product.quantity > 0)} {if isset($static_token)} <a class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}&token={$static_token}", false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}"> <span>{l s='Add to cart'}</span> </a> {else} <a class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, 'add=1&id_product={$product.id_product|intval}', false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}"> <span>{l s='Add to cart'}</span> </a> {/if} {else} <span class="button ajax_add_to_cart_button btn btn-default disabled"> <span>{l s='Add to cart'}</span> </span> {/if} {/if} <a itemprop="url" class="button lnk_view btn btn-default" href="{$product.link|escape:'html':'UTF-8'}" title="{l s='View'}"> <span>{l s='More'}</span> </a> </div> {if isset($product.color_list)} <div class="color-list-container">{$product.color_list}</div> {/if} <div class="product-flags"> {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} {if isset($product.online_only) && $product.online_only} <span class="online_only">{l s='Online only'}</span> {/if} {/if} {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} <span class="discount">{l s='Reduced price!'}</span> {/if} </div> {if (!$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)} <span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> {if ($product.allow_oosp || $product.quantity > 0)} <span class="{if $product.quantity <= 0 && !$product.allow_oosp}out-of-stock{else}available-now{/if}"> <link itemprop="availability" href="http://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if} </span> {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)} <span class="available-dif"> <link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'} </span> {else} <span class="out-of-stock"> <link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'} </span> {/if} </span> {/if} {/if} </div> {if $page_name != 'index'} <div class="functional-buttons clearfix"> {hook h='displayProductListFunctionalButtons' product=$product} {if isset($comparator_max_item) && $comparator_max_item} <div class="compare"> <a class="add_to_compare" href="{$product.link|escape:'html':'UTF-8'}" data-id-product="{$product.id_product}">{l s='Add to Compare'}</a> </div> {/if} </div> {/if} </div><!-- .product-container> --> </li> {/foreach} </ul> {addJsDefL name=min_item}{l s='Please select at least one product' js=1}{/addJsDefL} {addJsDefL name=max_item}{l s='You cannot add more than %d product(s) to the product comparison' sprintf=$comparator_max_item js=1}{/addJsDefL} {addJsDef comparator_max_item=$comparator_max_item} {addJsDef comparedProductsIds=$compared_products} {/if} Merci d'avance de votre soutien Link to comment Share on other sites More sharing options...
Nouvelle Vape Posted October 2, 2014 Share Posted October 2, 2014 La solution proposée par Mélani semble prometteuse, bien que je ne l'ai pas encore appliquée à ma boutique. (Merci Mélani) N'y aurait-il pas un prestashop warrior que pourrait confirmer que c'est la meilleure solution? Merci! Link to comment Share on other sites More sharing options...
lokiiy Posted October 2, 2014 Share Posted October 2, 2014 Bon voila j'ai supprimer les itemscope itemtype="http://schema.org/Offer" et les les : itemprop="xxx" Je verrais d'ici quelque temps si tout va mieux sur GWT La suite à venir !! Mercie Mélani Link to comment Share on other sites More sharing options...
Les Folies de Mélani Posted October 2, 2014 Share Posted October 2, 2014 Vous pouvez utiliser ceci pour vérifier que cela marche http://www.google.fr/webmasters/tools/richsnippets 1 Link to comment Share on other sites More sharing options...
lokiiy Posted October 20, 2014 Share Posted October 20, 2014 Bonjour j'ai du refaire la manip sur le fichier product_list.tpl J'ai donc supprimé : tout les itemscope itemtype="xxxx" tout les : itemprop="xxx" Mais je me demandais si il fallait supprimer également le href qui suit comme ci-dessous ?? itemprop="availability" href="http://schema.org/LimitedAvailability" Link to comment Share on other sites More sharing options...
Nouvelle Vape Posted October 22, 2014 Share Posted October 22, 2014 Je me pose la même question que lokify. Quelqu'un a t-il une idée? A part ça, je viens de retirer tout le reste comme proposé par Melani, je verrai ce que ça donne dans GWT et je ferai un update dès que ce sera effectif. Link to comment Share on other sites More sharing options...
Les Folies de Mélani Posted October 22, 2014 Share Posted October 22, 2014 Bonjour j'ai du refaire la manip sur le fichier product_list.tpl J'ai donc supprimé : tout les itemscope itemtype="xxxx" tout les : itemprop="xxx" Mais je me demandais si il fallait supprimer également le href qui suit comme ci-dessous ?? itemprop="availability" href="http://schema.org/LimitedAvailability" Bonjour, Vous pouvez aussi le supprimer. c'est la reference à la structure de donnée choisi. Il n'a donc plus d'utilité. Link to comment Share on other sites More sharing options...
lokiiy Posted October 22, 2014 Share Posted October 22, 2014 Merci de ta réponse et de ton temps Mélani !! Fait pas trop de folies !! Link to comment Share on other sites More sharing options...
JamesBen08 Posted January 30, 2015 Share Posted January 30, 2015 Bonjour , Je suis en version 1.6.0.9 et je ne trouve pas le fichier "product_list.tpl", dans mon fichier theme je ne trouve que "product-list.tpl" dans lequel n'apparait pas du tout de "itemscope itemtype" et "itemprop" Pourriez vous me dire ou il se situe ? Link to comment Share on other sites More sharing options...
utaku Posted February 5, 2015 Share Posted February 5, 2015 Hello, Merci pour cette astuce qui fonctionne parfaitement sur ma 1.6.0.9 , et je confirme que dans le product-list.tpl du thème ce trouve bien les "itemscope itemtype" et "itemprop" Chez moi c'est à partir de la ligne 50 , et j'ai juste modifier ce qui concernait les produits pas le reste. bien à vous, Link to comment Share on other sites More sharing options...
romelik Posted April 1, 2015 Share Posted April 1, 2015 (edited) Bonjour Pourriez-vous préciser lesquels il faut supprimer car je n'ose pas tout supprimer. Merci Edit OK je les ai tous virés et cela semble fonctionner d'après les Testing tools de Google. Merci Edited April 1, 2015 by romelik (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