Ascunderea funcționalității implicite Rich Snippets în Magento 2

Publicat: 2016-09-08

Dacă ați ajuns la această pagină, trebuie să știți ce sunt Rich Snippets și cum funcționează ele în Magento 2.

În general, marcarea datelor structurate este o caracteristică destul de interesantă a celei de-a doua versiuni a platformei de comerț electronic. Schema.org a fost adăugat ca șablon implicit, care le permite comercianților să-și echipeze rezultatele căutării pe site cu preț, evaluare, recenzii sau alte valori de markup cu doar câteva clicuri.

Există, totuși, unele cazuri în care este posibil să doriți să dezactivați funcționalitatea implicită a fragmentelor îmbogățite. Motivele pentru aceasta pot fi:

  • probleme legate de formatul prețului — în prezent, formatul utilizat de Magento 2 nu corespunde celor mai recente cerințe schema.Org, ceea ce poate declanșa următoarea eroare: 1
  • intră în conflict cu unele extensii de markup pentru date structurate tridimensionale,
  • probleme cu produsele Google — acest tip de produse pot avea un preț diferit (de exemplu, MSRP), care, la rândul său, declanșează conflicte cu fragmentele îmbogățite Magento 2 implicite.

Din păcate, până la v.2.1.1, este imposibil să dezactivați funcționalitatea implicită a fragmentelor îmbogățite prin setările de configurare . Prin urmare, aveți nevoie de o soluție de soluție.

În acest articol, vă voi spune cum să dezactivați marcarea implicită a datelor structurate prin crearea unei extensii puțin, dar foarte utile pentru Magento 2.

Mai întâi, să creăm mediul extensiei.

  1. Crearea extensiei

Să-l numim „ Owner_Custom ” (deși, puteți alege orice nume doriți).

Apoi, accesați aplicația/codul și creați acolo un dosar „ Proprietar ”. În interiorul acestui folder, creați unul nou, denumit „ Personalizat ” – acesta va fi folderul rădăcină pentru extensia noastră.

De aici, creăm următoarele fișiere:

FIȘIER: registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    „Owner_Custom”,
    __DIR__
);

FIȘIER: 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>

La pasul următor, instalați extensia prin Consolă:

php bin/magento setup:upgrade — generat în continuare

Gata, acum extensia noastră poate fi găsită pe lista tuturor modulelor din panoul de administrare:

php bin/magento module:status

2. Eliminarea marcajului implicit de date

Când mediul extensiei este gata, putem trece la crearea unui fișier de aspect, unde are loc toată magia.

FIȘIER: view/frontend/layout/catalog_product_view.xml

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

IMPORTANT

Nu uitați să actualizați memoria cache de fiecare dată când modificați fișierul.

În această parte a codului, vom modifica parametrii utilizați pentru formatarea marcajului de date structurate. După ce implementăm acest lucru, marcajul va conține doar oferta noastră, de exemplu:

2

După cum puteți vedea, după această manipulare, Google încetează să mai arunce avertismente în secțiunea „ Ofertă ”.

Să mai adăugăm câteva linii de cod:

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

Adăugând aceste piese, am eliminat parametrul care era responsabil pentru marcarea acestui bloc ca „Ofertă”. Ca urmare, instrumentele Google nu detectează nicio dată care ar putea fi utilizată pentru fragmentele îmbogățite aici:

3

Și mai rămâne o ultimă atingere de făcut.

Pentru a dezactiva fragmentele îmbogățite implicite pentru toate tipurile de produse, trebuie să adăugați încă 2 fișiere. Acesta pentru produsele descărcabile:

FIȘIER: view/frontend/layout/catalog_product_view_type_downloadable.xml

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

Și acesta este pentru produsele pachetului:

FIȘIER: view/frontend/layout/catalog_product_view_type_bundle.xml

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

IMPORTANT

Rețineți că, dacă unele dintre produsele din magazinul dvs. Magento au fost deja examinate, această recenzie va fi inclusă în marcajul implicit. Acest lucru poate declanșa următoarea eroare:

31e6d408642cc8cc288f6fde6f6fb0d8
Deoarece este codificat în fișierele cu tema Magento, pentru a-l șterge, trebuie să rescrieți acest fișier:

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

Copiați conținutul fișierului în:

 app/design/frontend/[pachet]/[theme]/templates/helper/summary.phtml

și ștergeți marcajul:

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

Ca rezultat, ar trebui să obțineți acest lucru (pentru Magento 2.1x):

 <?php
/**
 * Copyright 2016 Magento. Toate drepturile rezervate.
 * Consultați COPYING.txt pentru detalii despre licență.
 */

// @codingStandardsIgnoreFile

?>
<?php $url = $block->getReviewsUrl() . „#recenzii”; ?>
<?php $urlForm = $block->getReviewsUrl() . '#review-form'; ?>
<?php if ($block->getReviewsCount()): ?>
<?php $rating = $block->getRatingSummary(); ?>
<div class="product-reviews-summary<?php echo !$rating ? 'no-rating' : ''?>">
    <?php dacă ($evaluare):?>
    <div class="rating-summary">
         <span class="label"><span><?php /* @escapeNotVerified */ echo __('Evaluare') ?>:</span></span>
         <div class="rating-result" title="<?php /* @escapeNotVerified */ echo $rating; ?>%">
             <span><span><span><?php /* @escapeNotVerified */ echo $rating; ?></span>% din <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) ? __('Recenzie'): __('Recenzii') ?></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 empty">
    <div class="reviews-actions">
        <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm; ?>">
            <?php /* @escapeNotVerified */ echo __(„Fii primul care scrie recenzia acestui produs”) ?>
        </a>
    </div>
</div>
<?php endif; ?>

Și, în sfârșit, iată cum puteți activa/dezactiva extensia noastră personalizată:

Modulul php bin/magento: activați Owner_Custom
Modulul php bin/magento: dezactivați Owner_Custom

Ah, și nu uitați să reîmprospătați memoria cache pentru ca toate modificările să intre în vigoare.

Practic asta este.

Dacă aveți întrebări pe această temă, nu ezitați să lăsați comentariile dumneavoastră în secțiunea de mai jos.