Jump to content

PS 1.6.0.14 + Rich Snippets Price


IED Factory

Recommended Posts

Bonjour à tous et merci de votre aide éventuelle.

 

Nous avons reçu dernièrement un mail de Google nous informant que nous avions un problème de sémantique sur les données structurées de Rich Snippet (shema.org). Au passage leur code de mail annonce à tort dans l'objet : "Les données structurées de http://www.monsite.com contenant du spam pourraient ne pas s'afficher dans les résultats de recherche".

 

Après donc passage au testeur : https://search.google.com/structured-data/testing-tool

il ressort deux problèmes liés au "price" :

1- 5,13 € (La propriété 5,13 € n'est pas une spécification de prix valide. Pour en savoir plus, consultez http://schema.org/price.)

avec ce code incrimé :

<span itemprop="price" class="price product-price"> 5,13 € </span>

 

2- Vous devez indiquer la propriété price ou priceSpecification.

avec ce code incrimé :

<span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability"> <span class="available-now"><link itemprop="availability" href="http://schema.org/InStock" />En stock </span> </span>

 

Visiblement en lisant les spécification de schema.org il faut ne pas afficher €, mais Euro :

  • Use the priceCurrency property (with ISO 4217 codes e.g. "USD") instead of including ambiguous symbols such as '$' in the value.
  • Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
  • Note that both RDFa and Microdata syntax allow the use of a "content=" attribute for publishing simple machine-readable values alongside more human-friendly formatting.
  • Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.

-----------------------------------------

 

Nous avons donc regardé dans le fichier product.tpl de notre dossier theme et aussi dans le dossier default-boostrap et nous trouvons cela :

<span id="our_price_display" itemprop="price">{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}" />

 

Nous avons cherché sur les forums en vain...

Que faut-il modifier pour corriger pour le problème de price et que faut-il aussi rajouter pour la propriété ?

 

merci de votre aide.

 

Link to comment
Share on other sites

  • 2 weeks later...

Si cela peut servir à quelqu'un...

Il faut modifier dans le product.tpl du theme qui est appelé en page d'accueil si vous avez mis en place les modules Nouveautés, mise en avant de produit ou Promotion.et dans le list_product.tpl aussi. Comme cela, les tests seront bon autant sur votre page d'accueil que sur les fiches produits.

 

Je remercie au passage Sébastien qui nous a donné lé solution, il se reconnaîtra !

 

Dans le fichier product.tpl

Ligne 268
<span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span>
remplacer par
<span id="our_price_display" itemprop="price" content="{$productPrice}">{convertPrice price=$productPrice}</span>


Dans le fichier list_product.tpl du thème

ligne 75
<span itemprop="price" class="price product-price">
remplacer par
<span itemprop="price" class="price product-price" content="{$product.price}">

Ligne 124
<span itemprop="price" class="price product-price">
remplacer par
<span itemprop="price" class="price product-price" content="{$product.price}">

Après la ligne 139
{hook h="displayProductPriceBlock" product=$product type="unit_price"}
ajouter
{if ($product.allow_oosp || $product.quantity > 0)}
<meta itemprop="availability" itemtype="http://schema.org/InStock" content="{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}"/>
{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}
<meta itemprop="availability" itemtype="http://schema.org/LimitedAvailability" content="{l s='Product available with different options'}"/>
{else}
<meta itemprop="availability" itemtype="http://schema.org/OutOfStock" content="{l s='Out of stock'}"/>
{/if}

ligne 176 qui devient la ligne 183
<span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability">
remplacer par
<span class="availability">

Ligne 179 qui devient la ligne 186
<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}
remplacer par
{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}

Ligne 183 qui devient la ligne 190
<link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'}
remplacer par
{l s='Product available with different options'}

Ligne 187qui devient la ligne 194
<link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'}
remplacer par
{l s='Out of stock'}

 

  • Like 2
Link to comment
Share on other sites

  • 3 months later...
  • 3 weeks later...
  • 1 year later...

Bonjour,

Merci beaucoup pour cette astuce. Encore une fois, pourquoi ça n'est pas en natif sur PS???

Je suis en PS 1.6.1 et j'ai juste modifié le product.tpl car le product-list.tpl n'est pas le même et je n'ai pas osé touché. Sinon, ça marche nickel!

Par contre, attention , il y a une petite erreur: ce n'est pas le fichier list-product.tpl mais le fichier product-list. tpl ;)

Bonne journée

Marilyne

 

Edited by Lyn&Or Bijoux (see edit history)
Link to comment
Share on other sites

  • 2 months later...

Bonjour à tous,

Je me suis inscris simplement pour vous remercier pour ce travail et cette réponse IED Factory

Cela marche très bien (confirmé et testé avec l'outil de test de données stucturées google!).

Je suis sur la version 1.6.1.18 et j'ai simplement opérés ces modifications car les suivantes n'apparaissent pas dans le fichier :

 

On 23/09/2016 at 9:57 AM, IED Factory said:

Dans le fichier product.tpl

Ligne 268
<span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span>
remplacer par
<span id="our_price_display" itemprop="price" content="{$productPrice}">{convertPrice price=$productPrice}</span>


Dans le fichier list_product.tpl du thème

ligne 75
<span itemprop="price" class="price product-price">
remplacer par
<span itemprop="price" class="price product-price" content="{$product.price}">

Ligne 124
<span itemprop="price" class="price product-price">
remplacer par
<span itemprop="price" class="price product-price" content="{$product.price}">

 

Link to comment
Share on other sites

  • 10 months later...

Bonjour,

Cela fonctionne "à moitié". Prestashop affiche bien ses prix avec un point (ce qu'attend Google), mais par je ne sais quelle opération, le résultat affiché pour le price est une virugle.

Et cela ne convient absolument pas à Google qui continue à déclarer le champ Price comme non valide.

Quelqu'un aurait-il l'info sur la ou les lignes de code à ajouter pour que la virgule se transforme en point ? (ou plutôt reste en point...).

Et pourtant le "content" est bien avec un point. Ce qu'il met en erreur c'est la zone à côté. Je ne comprend pas. Le surlignement orange n'est pas de mon fait, mais bien de la Search console.

image.png.3316e5da153a9bc350ea312a045f34a3.png

erreur : Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.

Format de prix non valide dans la propriété "price"

Merci d'avance.

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

Bonjour,
Modules ? La liste est très longue...
Version 1.6.0.8
Thème (ancien)
Voici ce qui est écrit dans l'aide Google sur le balisage des produits :
Prix du produit. Vous pouvez inclure le symbole de devise ou utiliser comme séparateur décimal soit un point décimal ("."), soit une virgule (","). Par exemple,
10,00 USD ou 10,00 €.
Link to comment
Share on other sites

  • 3 weeks later...

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...