Ocultar la funcionalidad predeterminada de Rich Snippets en Magento 2

Publicado: 2016-09-08

Si has llegado a esta página, debes saber qué son los Rich Snippets y cómo funcionan en Magento 2.

En general, el marcado de datos estructurados es una característica bastante interesante de la segunda versión de la plataforma de comercio electrónico. Schema.org se agregó como plantilla predeterminada, lo que permite a los comerciantes equipar los resultados de búsqueda de su sitio con precio, calificación, reseñas u otros valores de marcado con solo unos pocos clics.

Sin embargo, hay algunos casos en los que es posible que desee deshabilitar la funcionalidad predeterminada de fragmentos enriquecidos. Las razones para ello pueden ser:

  • Problemas con el formato de precio : actualmente, el formato utilizado por Magento 2 no se corresponde con los últimos requisitos de schema.Org, lo que puede provocar el siguiente error: 1
  • entra en conflicto con algunas extensiones de marcado de datos estructurados de terceros,
  • problemas con los productos de Google : este tipo de productos pueden tener un precio diferente (por ejemplo, MSRP), lo que, a su vez, genera conflictos con los fragmentos enriquecidos predeterminados de Magento 2.

Desafortunadamente, hasta la versión 2.1.1, es imposible deshabilitar la funcionalidad predeterminada de fragmentos enriquecidos a través de la configuración . Por lo tanto, necesita alguna solución alternativa.

En este artículo, le diré cómo deshabilitar el marcado de datos estructurados predeterminado mediante la creación de una extensión pequeña pero muy útil para Magento 2.

Primero, creemos el entorno de la extensión.

  1. Crear la extensión

Llamémoslo ' Owner_Custom ' (aunque puede elegir el nombre que desee).

A continuación, vaya a aplicación/código y cree una carpeta ' Propietario ' allí. Dentro de esta carpeta, cree una nueva, llamada ' Personalizada '; será la carpeta raíz de nuestra extensión.

Desde aquí, creamos los siguientes archivos:

ARCHIVO: registro.php

<?php
\Magento\Framework\Component\ComponentRegistrar::registrar(
    \Magento\Framework\Component\ComponentRegistrar::MÓDULO,
    'Propietario_Personalizado',
    __DIR__
);

ARCHIVO: etc/módulo.xml

 <?xml versión="1.0"?>
<config xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<nombre del módulo="Owner_Custom" setup_version="0.0.1"/>
</config>

En el siguiente paso, instale la extensión a través de Consola:

Configuración de php bin/magento: actualizar — mantener generado

Listo, ahora nuestra extensión se puede encontrar en la lista de todos los módulos en el panel de administración:

php bin/módulo magento: estado

2. Eliminar el marcado de datos predeterminado

Cuando el entorno de la extensión esté listo, podemos comenzar a crear un archivo de diseño, donde tiene lugar toda la magia.

ARCHIVO: vista/frontend/layout/catalog_product_view.xml

<?xml versión="1.0"?>
<página xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <cuerpo>
        <atributo nombre="tipo de elemento" remove="verdadero" ifconfig="mageworx_seo/markup/product/rs_enabled"/>
        <atributo name="itemscope" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/>
    </cuerpo>
</página>

IMPORTANTE

No olvide actualizar la memoria caché cada vez que realice cambios en el archivo.

En esta parte del código, vamos a cambiar los parámetros que se utilizan para formatear el marcado de datos estructurados. Después de implementar esto, el marcado contendrá solo nuestra oferta, por ejemplo:

2

Como puedes ver, después de esta manipulación, Google deja de lanzar advertencias en la sección ' Oferta '.

Agreguemos algunas líneas de código más:

<?xml versión="1.0"?>
<página xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <cuerpo>
        <atributo nombre="tipo de elemento" eliminar="verdadero"/>
        <atributo nombre="itemscope" remove="true"/>
        <referenciaBloque nombre="producto.precio.final">
            <argumentos>
                <argumento nombre="zona" xsi:tipo="booleano">falso</argumento>
            </argumentos>
        </bloque de referencia>
    </cuerpo>
</página>

Al agregar estas piezas, eliminamos el parámetro responsable de marcar este bloque como 'Oferta'. Como resultado, las herramientas de Google no detectan ningún dato que pueda usarse para Rich Snippets aquí:

3

Y queda un toque final por hacer.

Para deshabilitar los fragmentos enriquecidos predeterminados para todos los tipos de productos, debe agregar 2 archivos más. Este para productos descargables:

ARCHIVO: vista/frontend/layout/catalog_product_view_type_downloadable.xml

<?xml versión="1.0"?>
<página xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <cuerpo>
        <referenceContainer name="producto.precio.final.copia">
            <argumentos>
                <argumento nombre="zona" xsi:tipo="booleano">falso</argumento>
            </argumentos>
        </contenedor de referencia>
    </cuerpo>
</página>

Y esto es para productos de paquete:

ARCHIVO: vista/frontend/layout/catalog_product_view_type_bundle.xml

<?xml versión="1.0"?>
<página xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <cuerpo>
        <referenceBlock name="producto.precio.render.paquete.personalización">
            <argumentos>
                <argumento nombre="zona" xsi:tipo="booleano">falso</argumento>
            </argumentos>
        </bloque de referencia>
    </cuerpo>
</página>

IMPORTANTE

Tenga en cuenta que si algunos de los productos en su tienda Magento ya han sido revisados, esta revisión se incluirá en el marcado predeterminado. Esto puede desencadenar el siguiente error:

31e6d408642cc8cc288f6fde6f6fb0d8
Dado que está codificado en los archivos de temas de Magento, para eliminarlo, debe volver a escribir este archivo:

 proveedor/magento/module-review/view/frontend/templates/helper/summary.phtml

Copie el contenido del archivo en:

 app/design/frontend/[paquete]/[tema]/templates/helper/summary.phtml

y eliminar el marcado:

 (itemprop=“valoración agregada” itemscope itemtype=“https://schema.org/AggregateRating” ; itemprop=“mejorpuntuación” ; itemprop=“valor de calificación” ; itemprop=“reviewCount” )

Como resultado, debería obtener esto (para Magento 2.1x):

 <?php
/**
 * Derechos de autor 2016 Magento. Reservados todos los derechos.
 * Consulte COPYING.txt para conocer los detalles de la licencia.
 */

// @EstándaresdecodificaciónIgnorarArchivo

?>
<?php $url = $bloque->getReviewsUrl() . '#reseñas'; ?>
<?php $urlForm = $bloque->getReviewsUrl() . '#formulario-de-revisión'; ?>
<?php if ($bloque->getReviewsCount()): ?>
<?php $puntuación = $bloque->getRatingSummary(); ?>
<div class="product-reviews-summary<?php echo !$rating ? ' no-rating' : ''?>">
    <?php si ($calificación):?>
    <div class="calificación-resumen">
         <span class="label"><span><?php /* @escapeNotVerified */ echo __('Calificación') ?>:</span></span>
         <div class="rating-result" title="<?php /* @escapeNotVerified */ echo $rating; ?>%">
             <span><span><span><?php /* @escapeNotVerified */ echo $calificación; ?></span>% de <span>100</span></span></span>
         </div>
     </div>
    <?php endif;?>
    <div class="reseñas-acciones">
        <a class="action view" href="<?php /* @escapeNotVerified */ echo $url ?>"><span><?php /* @escapeNotVerified */ echo $block->getReviewsCount() ?>< /span>&nbsp;<span><?php /* @escapeNotVerified */ echo($block->getReviewsCount() == 1) ? __('Reseña') : __('Reseñas') ?></span></a>
        <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm ?>"><?php /* @escapeNotVerified */ echo __('Add Your Review') ?></a >
    </div>
</div>
<?php elseif ($bloque->getDisplayIfEmpty()): ?>
<div class="reseñas-de-producto-resumen vacío">
    <div class="reseñas-acciones">
        <a class="acción añadir" href="<?php /* @escapeNotVerified */ echo $urlForm; ?>">
            <?php /* @escapeNotVerified */ echo __('Sé el primero en evaluar este producto') ?>
        </a>
    </div>
</div>
<?php endif; ?>

Y finalmente, así es como puede habilitar/deshabilitar nuestra extensión personalizada:

Módulo php bin/magento: habilitar Owner_Custom
Módulo php bin/magento: deshabilitar Owner_Custom

Ah, y no olvides actualizar la memoria caché para que todos los cambios surtan efecto.

Eso es básicamente todo.

Si tiene alguna pregunta sobre este tema, no dude en dejar sus comentarios en la sección a continuación.