Jump to content
Marmulet

Déclinaisons - Google Shopping - Structured Data

Recommended Posts

Bonjour à tous,

 

J'ai décidé d'utiliser les déclinaisons dans Google Shopping (Merchant Center) mais je rencontre un problème lié au structured data.

 

Je prends un exemple avec l'url suivante :

http://equi-clic.com/fr/articulations/2729-ekyflex-arthro-3515650660667.html#/107-conditionnement-14_kg

 

Le problème c'est que je communique à Google un tarif de 1168€ TTC mais quand il vient chercher la page il trouve le tarif de base et non le tarif de de la déclinaison ce qui ne lui convient pas du tout. Il exclut donc toutes mes déclinaisons.

 

Si j'utilise l'outils de test des Structured Data de Google, je n'ai pas le bon prix :

https://developers.google.com/structured-data/testing-tool?url=http%253A%252F%252Fequi-clic.com%252Ffr%252Farticulations%252F2729-ekyflex-arthro-3515650660667.html%2523%252F107-conditionnement-14_kg

Google trouve les données du produit de base et non de la déclinaison :-(

 

J'imagine que tout le monde doit être concerné par ce problème. Avez-vous une idée ?

 

Merci d'avance.

Share this post


Link to post
Share on other sites

J'ai ajouté un tableau des déclinaisons sur les pages produits concernées. On va voir si cela fonctionne.

Allez Google, soit sympa ;-)

Share this post


Link to post
Share on other sites

Comme je disais, j'ai ajouté un tableau avec les déclinaisons : référence, prix , valeurs des variations, EAN.

Il suffit de modifier le product.tpl

<!-- Block Variations -->
                {if isset($groups)}
                <section id="variations" class="page-product-box">
                    <h2 class="page-product-heading">{l s='Déclinaisons'} {$product->name|escape:'html':'UTF-8'}{if !(stripos(strtoupper($product->name),strtoupper($product->manufacturer_name)) !== FALSE)} {$product->manufacturer_name|escape:'html':'UTF-8'}{/if}</h2>
                    <div class="table-responsive">
                        <table border="1" class="table">
                          <thead> <!-- En-tête du tableau -->
                                <tr>
                                    <th>Réference</th>
                                    {foreach from=$groups item='attributearray' key='groupindex'}
                                    <th>{$attributearray.name}</th>
                                    {/foreach}
                                    <th>Prix</th>
                                    {if !empty($product->ean13)}<th>EAN</th>{/if}
                                </tr>
                                <tbody> <!-- Corps du tableau -->
                                  {foreach from=$combinations item='combination' key='combinationId'}
                                  <tr>
                                        <td>{$combination.reference}</td>
                                        {foreach from=$combination.attributes_values item='a' key='groupindex'}
                                        <td>{$a}</td>
                                        {/foreach}
                                        {if $priceDisplay >= 0 && $priceDisplay <= 2}
                                                 {if $combination.price != 0}
                                                      <td>{convertPrice price=($combination.price * ($tax_rate/100 + 1)) + $productPrice}</td>
                                                 {else}
                                                      <td>{convertPrice price=$productPrice}</td>
                                                 {/if}
                                        {/if}
                                        {if !empty($product->ean13)}<td>{if !empty($combination.ean13)}{$combination.ean13}{/if}</td>{/if}
                                  </tr>
                                  {/foreach}
                                </tbody>
                          </thead>
                        </table>
                    </div>
                </section>
                {/if}
<!-- /Block Variations -->

L'idéal serait d'ajouter les structured data aux déclinaisons. En effet, cela évite que mes produits soient refusés mais les prix ne sont pas mis à jour automatiquement.

  • Like 1

Share this post


Link to post
Share on other sites

Dans mon cas EAN13 pour les combinaisons ne se présentent pas. Avez-vous eu à faire quoi que ce soit pour les utiliser?

Share this post


Link to post
Share on other sites

Il faut remplir l'EAN du produit ou enlever la condition (2 fois) :

{if !empty($product->ean13)}
  • Like 1

Share this post


Link to post
Share on other sites

Dernière version avec les Structured Data en plus. Je n'ai pas d'erreurs quand j'utilise l'outils de test. J'attends le retour du bot de Google Shopping dans quelques jours.

<!-- Block Variations -->
                {if isset($groups)}
                <section id="variations" class="page-product-box">
                    <h2 class="page-product-heading">{l s='Déclinaisons'} {$product->name|escape:'html':'UTF-8'}{if !(stripos(strtoupper($product->name),strtoupper($product->manufacturer_name)) !== FALSE)} {$product->manufacturer_name|escape:'html':'UTF-8'}{/if}</h2>
                    <div class="table-responsive">
                        <table border="1" class="table">
                          <thead> <!-- En-tête du tableau -->
                                <tr>
                                    <th>{l s='Réference'}</th>
                                    {foreach from=$groups item='attributearray' key='groupindex'}
                                    <th>{$attributearray.name}</th>
                                    {/foreach}
                                    <th>{l s='Nom'}</th>
                                    <th>{l s='Prix'}</th>
                                    {if !empty($product->ean13)}<th>{l s='EAN'}</th>{/if}
                                </tr>
                                <tbody> <!-- Corps du tableau -->
                                  {foreach from=$combinations item='combination' key='combinationId'}
                                  <tr itemscope itemtype="https://schema.org/Product">
                                        <td itemprop="sku">{$combination.reference}</td>
                                        {foreach from=$combination.attributes_values item='a' key='groupindex'}
                                        <td>{$a}</td>                                        
                                        {/foreach}
                                        <td itemprop="name">{$product->name|escape:'html':'UTF-8'}{foreach from=$combination.attributes_values item='a' key='groupindex'} {$a}{/foreach}</td>
                                        {if $priceDisplay >= 0 && $priceDisplay <= 2}
                                                 {if $combination.price != 0}
                                                     <td itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span itemprop="price" content="{($combination.price * ($tax_rate/100 + 1)) + $productPrice}"">{convertPrice price=($combination.price * ($tax_rate/100 + 1)) + $productPrice}</span></td>
                                                 {else}
                                                     <td itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <span  itemprop="price" content="{$productPrice}">{convertPrice price=$productPrice}</span></td>
                                                 {/if}
                                        {/if}
                                        {if !empty($product->ean13)}<td itemprop="gtin13">{if !empty($combination.ean13)}{$combination.ean13}{/if}</td>{/if}
                                  </tr>
                                  {/foreach}
                                </tbody>
                          </thead>
                        </table>
                    </div>
                </section>
                {/if}
<!-- /Block Variations -->
Edited by Marmulet (see edit history)

Share this post


Link to post
Share on other sites

Je confirme Google est passé et ça se confirme. Cela fonctionne parfaitement ;-)

Share this post


Link to post
Share on other sites
Je pense que vous avez créé une condition qui empêche les structured data initiales du produit sont chargées s'il y a des combinaisons. Pouvez-vous partager ce morceau de product.tpl? Merci!!

Share this post


Link to post
Share on other sites

J'avoue je suis en train de faire encore des modifications. J'ai du mal à satisfaire Google complètement. Il me reste encore des problèmes sur certains prix aussi donc il s'agit toujours d'un version Beta  :D

{if !isset($groups)}
                            {if !$product->is_virtual && $product->condition}
                                  {if $product->condition == 'new'}
                                    <link itemprop="itemCondition" href="https://schema.org/NewCondition"/>
                                  {elseif $product->condition == 'used'}
                                    <link itemprop="itemCondition" href="https://schema.org/UsedCondition"/>
                                  {elseif $product->condition == 'refurbished'}
                                    <link itemprop="itemCondition" href="https://schema.org/RefurbishedCondition"/>
                                  {/if}
                            {/if}
                        {/if}
                        <!--EAN13-->
                        {if $product->ean13}
                        <p id="product_ean13">
                                <label>{l s='EAN'} </label>
                                <span class="editable" {if !isset($groups)}itemprop="gtin13"{/if} content="{$product->ean13}">{if !isset($groups)}{$product->ean13|escape:'html':'UTF-8'}{/if}</span>
                        </p>
                        {/if}
<p class="our_price_display" {if !isset($groups)}itemprop="offers" itemscope itemtype="https://schema.org/Offer"{/if}>{strip}
									{if !isset($groups)}{if $product->quantity > 0}<link itemprop="availability" href="https://schema.org/InStock"/>{/if}{/if}
									{if $priceDisplay >= 0 && $priceDisplay <= 2}
										<span id="our_price_display" class="price" {if !isset($groups)}itemprop="price"{/if} content="{$productPrice}">{convertPrice price=$productPrice|floatval}</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}
										{if !isset($groups)}<meta itemprop="priceCurrency" content="{$currency->iso_code}" />{/if}
										{hook h="displayProductPriceBlock" product=$product type="price"}
									{/if}
								{/strip}
</p>
<!-- Block Variations -->
                {if isset($groups)}
                <section id="variations" class="page-product-box">
                    <h2 class="page-product-heading">{l s='Déclinaisons'} {$product->name|escape:'html':'UTF-8'}{if !(stripos(strtoupper($product->name),strtoupper($product->manufacturer_name)) !== FALSE)} {$product->manufacturer_name|escape:'html':'UTF-8'}{/if}</h2>
                    <div class="table-responsive">
                        <table border="1" class="table">
                          <thead> <!-- En-tête du tableau -->
                                <tr>
                                    <th>{l s='Réference'}</th>
                                    {foreach from=$groups item='attributearray' key='groupindex'}
                                    <th>{$attributearray.name}</th>
                                    {/foreach}
                                    <th>{l s='Nom'}</th>
                                    <th>{l s='Prix'}</th>
                                    {if !empty($product->ean13)}<th>{l s='EAN'}</th>{/if}
                                </tr>
                                <tbody> <!-- Corps du tableau -->
                                  {foreach from=$combinations item='combination' key='combinationId'}
                                  <tr itemscope itemtype="https://schema.org/Product">
                                        <td itemprop="model">{$combination.reference}</td>
                                        {foreach from=$combination.attributes_values item='a' key='groupindex'}
                                        <td>{$a}</td>                                        
                                        {/foreach}    
                                        <td itemprop="name">[spam-filter]$product->name|escape:'html':'UTF-8'[spam-filter]{foreach from=$combination.attributes_values item='a' key='groupindex'} {$a}{/foreach}</td>
                                        {if $priceDisplay >= 0 && $priceDisplay <= 2}
                                            <td itemprop="offers" itemscope itemtype="https://schema.org/Offer">
                                                 {if $combination.price != 0}
                                                    {if isset($combination.specific_price.reduction_type)} 
                                                        {if $combination.specific_price.reduction_type==amount}
                                                            <span itemprop="price" content="{($combination.price * ($tax_rate/100 + 1)) + $productPrice - $combination.specific_price.reduction}"">{convertPrice price=($combination.price * ($tax_rate/100 + 1)) + $productPrice - $combination.specific_price.reduction}</span>
                                                        {elseif $combination.specific_price.reduction_type==percentage}
                                                            <span itemprop="price" content="{(($combination.price * ($tax_rate/100 + 1)) + $productPrice)* (1-$combination.specific_price.reduction)}"">{convertPrice price=(($combination.price * ($tax_rate/100 + 1)) + $productPrice) * (1-$combination.specific_price.reduction)}</span>                                                                                                               
                                                        {/if}   
                                                    {else}    
                                                     <span itemprop="price" content="{($combination.price * ($tax_rate/100 + 1)) + $productPrice}"">{convertPrice price=($combination.price * ($tax_rate/100 + 1)) + $productPrice}</span>
						    {/if}
                                                 {else}
                                                     {if isset($combination.specific_price.reduction_type)} 
                                                        {if $combination.specific_price.reduction_type==amount}
                                                            <span  itemprop="price" content="{$productPrice - $combination.specific_price.reduction}">{convertPrice price=($productPrice - $combination.specific_price.reduction)}</span>                     
                                                        {elseif $combination.specific_price.reduction_type==percentage}                                                                                                                                     
                                                            <span  itemprop="price" content="{$productPrice*(1-$combination.specific_price.reduction)}">{convertPrice price=($productPrice* (1-$combination.specific_price.reduction))}</span>                                                       
                                                        {/if}   
                                                    {else}    
                                                     <span  itemprop="price" content="{$productPrice}">{convertPrice price=$productPrice}</span>
						    {/if}
                                                 {/if}
                                                 {if $combination.quantity > 0}<link itemprop="availability" href="https://schema.org/InStock"/>{/if}
                                                 <link itemprop="itemCondition" href="https://schema.org/NewCondition"/>                                                 
                                            </td>         
                                        {/if}
                                        {if !empty($product->ean13)}<td itemprop="gtin13">{if !empty($combination.ean13)}{$combination.ean13}{/if}</td>{/if}
                                  </tr>
                                  {/foreach}
                                </tbody>
                          </thead>
                        </table>
                    </div>
                </section>
                {/if}
 <!-- /Block Variations -->
  • Like 1

Share this post


Link to post
Share on other sites

Moi aussi, certains produits continuent d'être désapprouvé... Google est insatiable!  :ph34r:

 

Je vais essayer la Beta  :lol: , merci!!

Share this post


Link to post
Share on other sites

Hello,

Do you have solution for this problem?

With Best Regards

Michał Wojciechowski

Share this post


Link to post
Share on other sites

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

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More