Este error de la consola de búsqueda de Google en Prestashop ((“offers”, “review”, or “aggregateRating”)) como en WordPress que ya hablamos de su solución (ver aquí) y que ha funcionado muy bien, en Prestashop puede que no sea tan fácil, de momento.

Hemos realizado muchas pruebas en varias versiones de Prestashop 1.6.1.23, en 1.7.1 y 1.7.5, pero no con el tiempo necesario para poder determinar una solución estable, pero en tiendas online sencillas si que ha funcionado bien. En las tiendas que hemos probado nos ha funcionado correctamente y han sido verificadas en GSC (Google Search Console) sin ningún tipo de advertencia o error.

La consola de Google se queja y con toda la razón de un desorden en la estructura de los archivos de productos. ¿Qué quiere decir? De que el archivo de producto no proporciona ninguna información sobre lo que significa la cadena de texto que se está mostrando. Solo quieren entender el contenido de tu página web y clasificar el contenido de la página.

¿Qué quiere Google? Pues que agregues un marcado a las páginas de tus productos para que Google pueda proporcionar información detallada del producto en los resultados de la búsqueda. Que el usuario pueda ver y ellos puedan enlazar y mostrar los precios, disponibilidad, calificaciones. Anteriormente conocidos como “Fragmentos enriquecidos” 

Lo que se ha de especificar es realmente toda la información del producto para no confundir como el ejemplo que muestra https://schema.org/ que solo pide datos estructurado y poder seguir todos sus estandares que es como las sigue Google.

“Por ejemplo, <h1>Avatar</h1> le dice al navegador que muestre la cadena de texto «Avatar» en un formato de encabezado 1. Sin embargo, la etiqueta HTML no proporciona ninguna información sobre lo que significa esa cadena de texto: «Avatar» podría referirse a la película en 3D de tuvo tanto éxito, o podría referirse a un tipo de imagen de perfil, y esto puede dificultar la búsqueda.”

La consola de Google te muestra al final del error el enlace referente al schema. Por ejemplo: Falta el campo “Price” la clase es availability y la URL  https://schema.org/InStock. Aquí lo que te está diciendo es que muestres al público que el producto está en Stock.

Los errores (no advertencias) que nos muestra la nueva consola de Google tanto de los datos de “offers”, “review”, “AggregateRating”, incluso de “brands” es que mostremos datos para identificarlos o no enviarlos vacíos, ¿Cuál puede ser nuestro problema? Que no todos los productos tienen calificaciones, ofertas, productos vistos, miniaturas…. Aunque si es lo aconsejable incluso para enriquecer nuestra tienda online o página web.

Tenemos muchos datos en nuestros productos pero no siempre tenemos etiquetadas las propiedades del elemento, llamado en este caso «itemprop».

Antiguamente, nosotros cuando desarrollabamos a medida con PHP, HTML, etc por ejemplo en estos encabezados teniamos la costumbre de poner una pequeña descripción, por ejemplo; <h1 title=”Avatar, película de ciencia ficción”>Avatar</h1>

El ejemplo actual que nos muestra «Schema» es:

<div itemscope itemtype = «http://schema.org/Movie»>
<h1 itemprop = «name» > Avatar </h1>
<span> Director: <span itemprop = «director» > James Cameron </span> (nacido el 16 de agosto de 1954) </span>
<span itemprop = «genre» > Ciencia ficción </span>
<a href=»../movies/avatar-theatrical-trailer.html» itemprop=»trailer»> Trailer </a>
</div>
Los motores de búsqueda ahora pueden entender, no solo que http://www.avatarmovie.com es una URL, sino también que es la URL del tráiler de la película de ciencia ficción Avatar, dirigida por James Cameron.

Nosotros desde www.eligeunaweb.es ahora mismo no hemos dado con una solución consolidada que pueda solucionar el fallo por completo, pero si podemos hacer un pequeño cambio en el archivo product.tpl y product-prices.tpl para que no nos afecte al posicionamiento SEO y poder tener el problema solucionado temporalmente hasta que Prestashop decida arreglar el fallo en una nueva actualización.

También tenemos que tener en cuenta si usamos un modulo de terceros que pueda estar afectando en la revisión de los índices en la consola de Google. Si dispones de un módulo que te genere evaluaciones, calificaciones, Google Shopping, etc, incluso de comentarios, mira de desactivarlo y enviar de nuevo los índices, espera a ver si la consola te muestra los mismos o diferentes errores o mejor aún, ninguno.

Si desactivas el modulo déjalo así unos días, cuenta que es posible que Google no te muestre los mensajes de inmediato.

¿Porque se está portando así ahora Google? Desde mi humilde opinión creo que pronto van a cambiar el concepto de búsqueda y nos están obligando a perfeccionar las páginas para facilitar la búsqueda a la inteligencia artificial. El concepto al que me refiero es al de búsqueda por voz. No olvidemos que cada vez están perfeccionando mas sus dispositivos de IA como Alexa, Siri, asistenta de Google, y estos errores que nos muestran ahora son datos importantes para un asistente de IA, cuenta que el 95% de las tiendas online muestra si hay en stock, ofertas, precios, etc. y podemos visualizarlos humanamente con la vista, pero que, llamémosle robot, lea un dato que no existe, es una cosa imposible, ¿verdad?

También lo que podemos hacer es eliminar fragmentos enriquecidos incompletos o completarlos (a menudo en módulos de terceros o en la lista de productos).

Recordamos que lo importante es arreglar los errores no las advertencias y que nuestra pagina cunpla con los estandares exigidos.

Vamos a solucionarlo de una forma, que siendo realista no soy muy partidario de modificarlo así, pero al menos se nos quitan los errores y advertencias. Mas adelante veremos otra forma de la que estoy mas de acuerdo.

Lo que hacemos es anular estos campos, es decir, poner un parche, pero no una solución correcta. Lo correcto sería que rellenaras todos los campos de todos tus productos.

Abrimos el archivo themes/mytheme/templates/catalog/_partials/miniatures/product.tpl (recordemos hacer copia del archivo o renómbralo en el servidor antes de subir el fichero modificado, pon un guion al final, por ejemplo)

En la línea (+- 26):

Cambia:

<div class=»product-miniature js-product-miniature» data-id-product=»{$product.id_product}» data-id-product-attribute=»{$product.id_product_attribute}» itemscope itemtype=»http://schema.org/Product»>

Por:

<div class=»product-miniature js-product-miniature» data-id-product=»{$product.id_product}» data-id-product-attribute=»{$product.id_product_attribute}» {* itemscope itemtype = «http://schema.org/Product» *} >

Antes nos mostraba estos errores, por eso estas leyendo ahora este artículo ?:

Y ahora nos muestra lo siguiente:

Otra solución y de la que soy mas partidario es la siguiente opción: La anterior te quita el error general pero no del producto, si buscas error dentro de un producto te mostrará la advertenca. Abajo puedes descargar el archivo product-prices.tpl.

En el archivo theme/mytheme/templates/catalog/_partials/product-prices.tpl (recordemos hacer copia del archivo o renómbralo en el servidor antes de subir el fichero modificado, pon un guion al final, por ejemplo)

Ves a la línea +- 43 y busca

<link itemprop=»availability» href=»https://schema.org/InStock»/>
<meta itemprop=»priceCurrency» content=»{$currency.iso_code}»>

Y lo cambias por: (agregamos dos nuevas líneas)

<link itemprop=»availability» href=»{$product.seo_availability}»/>
<meta itemprop=»priceCurrency» content=»{$currency.iso_code}»>
<meta itemprop=»priceValidUntil» content=»{‘Y’|date+1}-12-31″>
<meta itemprop=»url» content=»{$link->getProductLink($smarty.get.id_product)|escape:’htmlall’:’UTF-8′}»>

Ahora por la línea +- 66 busca:

{block name=’product_unit_price’}
{if $displayUnitPrice}
<p class=»product-unit-price sub»>{l s='(%unit_price%)’ d=’Shop.Theme.Global’ sprintf=[‘%unit_price%’ => $product.unit_price_full]}</p>
{/if}
{/block}
</div>
{/block}

También antes del {/block} añades las siguientes líneas:

<div itemprop=»aggregateRating» itemscope itemtype=»http://schema.org/AggregateRating» style=»display:none»>
<span itemprop=»ratingValue»>5</span>
<span itemprop=»ratingCount»>1</span></div>
<meta itemprop=»brand» content=»{if !empty(Manufacturer::getnamebyid($product.id_manufacturer))}{Manufacturer::getnamebyid($product.id_manufacturer)}{else}{Configuration::get(‘PS_SHOP_NAME’)}{/if}»>
<meta itemprop=»image» content=»{$product.cover.bySize.home_default.url}»>
<meta itemprop=»sku» content=»{$product->id}» />
<meta itemprop=»mpn» content=»{$product->reference}» />
<div itemprop=»review» itemscope itemtype=»http://schema.org/Review» style=»display:none»>
<span itemprop=»author»>{Configuration::get(‘PS_SHOP_NAME’)}</span>,
<meta itemprop=»datePublished» content=»{‘Y’|date}-{‘m’|date}-{‘d’|date}»>
<div itemprop=»reviewRating» itemscope itemtype=»http://schema.org/Rating»>
<meta itemprop=»worstRating» content=»1″/>
<span itemprop=»ratingValue»>5</span>/
<span itemprop=»bestRating»>5</span>
</div>
<span itemprop=»description»></span>
</div>

Y también antes del final del archivo:

{hook h=’displayProductPriceBlock’ product=$product type=»price»}
{hook h=’displayProductPriceBlock’ product=$product type=»after_price»}
</div>
</div>
{/if}

Pon lo siguiente:

{hook h=’displayProductPriceBlock’ product=$product type=»price»}
{hook h=’displayProductPriceBlock’ product=$product type=»after_price»}
{if $product.additional_delivery_times == 1}
{if $product.delivery_information}
<span class=»delivery-information»>{$product.delivery_information}</span>
{/if}
{elseif $product.additional_delivery_times == 2}
{if $product.quantity > 0}
<span class=»delivery-information»>{$product.delivery_in_stock}</span>
{* Out of stock message should not be displayed if customer can’t order the product. *}
{elseif $product.quantity <= 0 && $product.add_to_cart_url}
<span class=»delivery-information»>{$product.delivery_out_stock}</span>
{/if}
{/if}
</div>
</div>
{/if}

Puedes descargar el archivo product-prices ya modificado (Para versión 1.7.5)

Como puedes ver lo que te muestra la consola. Vas a https://search.google.com/structured-data/testing-tool/ e introduces la URL a revisar.

Más información sobre las propiedades recomendadas

AggregateRating Una aggregateRating anidada del producto.

brand La marca del producto.

description Descripción del producto

Offers Corresponde a una oferta para vender el producto. Incluye una Offer o AggregateOfferanidada

review Una Review anidada del producto. Sigue los lineamientos para los fragmentos de opiniones, así como la lista de propiedades de opiniones obligatorias y recomendadas.

gtin8 | gtin13 | gtin14 | mpn | isbn Incluye todos los identificadores globales correspondientes, que se describen en schema.org/Product.

sku Corresponde al identificador específico del comercio para el producto.

Espero que lo entiendas, si no siempre puedes llamar o escribirnos.

Quieres valorar esta entrada? Nos sería de utilidad.

[ratings]
Ir al contenido