Escondendo a funcionalidade de Rich Snippets padrão no Magento 2

Publicados: 2016-09-08

Se você chegou a esta página, você deve saber o que são Rich Snippets e como eles funcionam no Magento 2.

No geral, a marcação de dados estruturados é um recurso bastante interessante da segunda versão da plataforma de comércio eletrônico. Schema.org foi adicionado como o modelo padrão, que permite aos comerciantes equipar seus resultados de pesquisa do site com preço, classificação, comentários ou outros valores de marcação em apenas alguns cliques.

Há, no entanto, alguns casos em que você pode querer desabilitar a funcionalidade padrão de rich snippets. As razões para isso podem ser:

  • problemas de formato de preço - atualmente, o formato usado pelo Magento 2 não corresponde aos requisitos mais recentes do schema.Org, o que pode desencadear o seguinte erro: 1
  • conflitos com algumas extensões de marcação de dados estruturados de terceiros,
  • problemas com produtos do Google — esse tipo de produto pode ter um preço diferente (por exemplo, MSRP), o que, por sua vez, aciona conflitos com os rich snippets padrão do Magento 2.

Infelizmente, até a v.2.1.1, é impossível desabilitar a funcionalidade de rich snippets padrão por meio das configurações de configuração . Portanto, você precisa de alguma solução alternativa.

Neste artigo, mostrarei como desabilitar a marcação de dados estruturados padrão criando uma extensão pequena, mas muito útil, para Magento 2.

Primeiro, vamos criar o ambiente da extensão.

  1. Criando a extensão

Vamos chamá-lo de ' Owner_Custom ' (embora você possa escolher qualquer nome que desejar).

Em seguida, vá para app/code e crie uma pasta ' Owner ' lá. Dentro desta pasta, crie uma nova, chamada ' Custom ' — ela será a pasta raiz da nossa extensão.

A partir daqui, criamos os seguintes arquivos:

ARQUIVO: registro.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Proprietário_Personalizado',
    __DIR__
);

ARQUIVO: etc/module.xml

 <?xml version="1.0"?>
<config xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Owner_Custom" setup_version="0.0.1"/>
</config>

Na próxima etapa, instale a extensão via Console:

php bin/magento setup:upgrade — Keep-generated

Tudo pronto, agora nossa extensão pode ser encontrada na lista de todos os módulos no painel Admin:

módulo php bin/magento:status

2. Removendo a marcação de dados padrão

Quando o ambiente da extensão estiver pronto, podemos começar a criar um arquivo de layout, onde toda a mágica acontece.

ARQUIVO: view/frontend/layout/catalog_product_view.xml

<?xml version="1.0"?>
<page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <corpo>
        <attribute name="itemtype" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/>
        <attribute name="itemscope" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/>
    </body>
</page>

IMPORTANTE

Não se esqueça de atualizar o cache sempre que fizer alterações no arquivo.

Nesta parte do código, vamos alterar os parâmetros usados ​​para formatar a marcação de dados estruturados. Depois de implementarmos isso, a marcação conterá apenas nossa oferta, por exemplo:

2

Como você pode ver, após essa manipulação, o Google para de lançar quaisquer avisos na seção ' Oferta '.

Vamos adicionar mais algumas linhas de código:

<?xml version="1.0"?>
<page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <corpo>
        <attribute name="itemtype" remove="true"/>
        <attribute name="itemscope" remove="true"/>
        <referenceBlock name="product.price.final">
            <argumentos>
                <argument name="zone" xsi:type="boolean">falso</argument>
            </argumentos>
        </referenceBlock>
    </body>
</page>

Ao adicionar essas peças, removemos o parâmetro que era responsável por marcar este bloco como 'Oferta'. Como resultado, as ferramentas do Google não detectam nenhum dado que possa ser usado para Rich Snippets aqui:

3

E falta um toque final.

Para desabilitar os rich snippets padrão para todos os tipos de produtos, você precisa adicionar mais 2 arquivos. Este para produtos para download:

ARQUIVO: view/frontend/layout/catalog_product_view_type_downloadable.xml

<?xml version="1.0"?>
<page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <corpo>
        <referenceContainer name="product.price.final.copy">
            <argumentos>
                <argument name="zone" xsi:type="boolean">falso</argument>
            </argumentos>
        </referenceContainer>
    </body>
</page>

E isso é para produtos de pacote:

ARQUIVO: view/frontend/layout/catalog_product_view_type_bundle.xml

<?xml version="1.0"?>
<page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <corpo>
        <referenceBlock name="product.price.render.bundle.customization">
            <argumentos>
                <argument name="zone" xsi:type="boolean">falso</argument>
            </argumentos>
        </referenceBlock>
    </body>
</page>

IMPORTANTE

Observe que, se alguns dos produtos em sua loja Magento já foram revisados, essa revisão será incluída na marcação padrão. Isso pode acionar o seguinte erro:

31e6d408642cc8cc288f6fde6f6fb0d8
Como está codificado nos arquivos do tema Magento, para excluí-lo, você deve reescrever este arquivo:

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

Copie o conteúdo do arquivo em:

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

e exclua a marcação:

 (itemprop=“aggregateRating” itemscope itemtype=“https://schema.org/AggregateRating” ; itemprop=“bestRating” ; itemprop=“ratingValue” ; itemprop=“reviewCount” )

Como resultado, você deve obter isso (para Magento 2.1x):

 <?php
/**
 * Direitos autorais 2016 Magento. Todos os direitos reservados.
 * Consulte COPYING.txt para obter detalhes da licença.
 */

// @codingStandardsIgnoreFile

?>
<?php $url = $block->getReviewsUrl() . '#avaliações'; ?>
<?php $urlForm = $block->getReviewsUrl() . '#revisão-formulário'; ?>
<?php if ($block->getReviewsCount()): ?>
<?php $rating = $block->getRatingSummary(); ?>
<div class="product-reviews-summary<?php echo !$rating ? ' no-rating' : ''?>">
    <?php if ($classificação):?>
    <div class="rating-summary">
         <span class="label"><span><?php /* @escapeNotVerified */ echo __('Rating') ?>:</span></span>
         <div class="rating-result" title="<?php /* @escapeNotVerified */ echo $rating; ?>%">
             <span><span><span><?php /* @escapeNotVerified */ echo $rating; ?></span>% de <span>100</span></span></span>
         </div>
     </div>
    <?php endif;?>
    <div class="reviews-actions">
        <a class="action view" href="<?php /* @escapeNotVerified */ echo $url ?>"><span><?php /* @escapeNotVerified */ echo $block->getReviewsCount() ?>< /span>&nbsp;<span><?php /* @escapeNotVerified */ echo($block->getReviewsCount() == 1) ? __('Review') : __('Reviews') ?></span></a>
        <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm ?>"><?php /* @escapeNotVerified */ echo __('Add Your Review') ?></a >
    </div>
</div>
<?php elseif ($block->getDisplayIfEmpty()): ?>
<div class="product-reviews-summary vazio">
    <div class="reviews-actions">
        <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm; ?>">
            <?php /* @escapeNotVerified */ echo __('Seja o primeiro a avaliar este produto') ?>
        </a>
    </div>
</div>
<?php endif; ?>

E, finalmente, é assim que você pode ativar/desativar nossa extensão personalizada:

módulo php bin/magento: habilite Owner_Custom
módulo php bin/magento: desabilitar Owner_Custom

Ah, e não se esqueça de atualizar o cache para que todas as alterações entrem em vigor.

É basicamente isso.

Se você tiver alguma dúvida sobre este tópico, sinta-se à vontade para deixar seus comentários na seção abaixo.