Ukrywanie domyślnej funkcji Rich Snippets w Magento 2

Opublikowany: 2016-09-08

Jeśli trafiłeś na tę stronę, musisz wiedzieć, czym są Rich Snippets i jak działają w Magento 2.

Podsumowując, znaczniki danych strukturalnych są całkiem fajną funkcją drugiej wersji platformy eCommerce. Schema.org został dodany jako domyślny szablon, który pozwala sprzedawcom wyposażyć wyniki wyszukiwania w swojej witrynie w cenę, ocenę, recenzje lub inne wartości znaczników za pomocą zaledwie kilku kliknięć.

W niektórych przypadkach możesz jednak chcieć wyłączyć domyślną funkcję opisów rozszerzonych. Przyczynami tego mogą być:

  • problemy z formatem ceny — obecnie format używany przez Magento 2 nie jest zgodny z najnowszymi wymaganiami schema.Org, co może spowodować następujący błąd: 1
  • jest w konflikcie z niektórymi rozszerzeniami znaczników danych strukturalnych innych firm,
  • problemy z produktami Google — tego typu produkty mogą mieć inną cenę (np. sugerowana cena detaliczna), co z kolei powoduje konflikty z domyślnymi fragmentami rozszerzonymi Magento 2.

Niestety do wersji 2.1.1 nie można wyłączyć domyślnej funkcjonalności fragmentów rozszerzonych za pomocą ustawień konfiguracji . Dlatego potrzebujesz jakiegoś rozwiązania obejściowego.

W tym artykule powiem Ci, jak wyłączyć domyślne znaczniki danych strukturalnych, tworząc małe, ale bardzo przydatne rozszerzenie dla Magento 2.

Najpierw stwórzmy środowisko rozszerzenia.

  1. Tworzenie rozszerzenia

Nazwijmy go „ Owner_Custom ” (chociaż możesz wybrać dowolną nazwę).

Następnie przejdź do aplikacji/kodu i utwórz tam folder „ Właściciel ”. Wewnątrz tego folderu utwórz nowy o nazwie „ Niestandardowy ” — będzie to folder główny dla naszego rozszerzenia.

Stąd tworzymy następujące pliki:

PLIK: rejestracja.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    „Właściciel_Niestandardowy”,
    __KATALOG__
);

PLIK: 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">
<nazwa modułu="Owner_Custom" setup_version="0.0.1"/>
</config>

W następnym kroku zainstaluj rozszerzenie za pomocą konsoli:

php bin/magento setup:upgrade — keep-generated

Gotowe, teraz nasze rozszerzenie można znaleźć na liście wszystkich modułów w panelu Admin:

php bin/magento moduł: status

2. Usuwanie domyślnego znacznika danych

Gdy środowisko rozszerzenia jest już gotowe, możemy zabrać się za stworzenie pliku layoutu, w którym odbywa się cała magia.

PLIK: 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">
    <ciało>
        <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>

WAŻNY

Nie zapomnij zaktualizować pamięci podręcznej za każdym razem, gdy wprowadzasz zmiany w pliku.

W tej części kodu zmienimy parametry używane do formatowania znaczników danych strukturalnych. Po zaimplementowaniu tego znacznika będzie zawierała tylko nasza oferta, np.:

2

Jak widać, po tej manipulacji Google przestaje rzucać ostrzeżenia w sekcji „ Oferta ”.

Dodajmy więcej linii kodu:

<?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">
    <ciało>
        <attribute name="typ elementu" remove="true"/>
        <attribute name="itemscope" remove="true"/>
        <referenceBlock name="product.price.final">
            <argumenty>
                <argument name="zone" xsi:type="boolean">fałsz</argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

Dodając te elementy, usunęliśmy parametr odpowiedzialny za oznaczenie tego bloku jako „Oferta”. W rezultacie narzędzia Google nie wykrywają tutaj żadnych danych, których można by użyć w przypadku fragmentów rozszerzonych:

3

Pozostał jeszcze jeden ostatni szlif.

Aby wyłączyć domyślne fragmenty rozszerzone dla wszystkich typów produktów, musisz dodać jeszcze 2 pliki. Ten dla produktów do pobrania:

PLIK: 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">
    <ciało>
        <referenceContainer name="product.price.final.copy">
            <argumenty>
                <argument name="zone" xsi:type="boolean">fałsz</argument>
            </arguments>
        </referenceContainer>
    </body>
</page>

A to dotyczy produktów w pakiecie:

PLIK: 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">
    <ciało>
        <referenceBlock name="product.price.render.bundle.customization">
            <argumenty>
                <argument name="zone" xsi:type="boolean">fałsz</argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

WAŻNY

Pamiętaj, że jeśli niektóre produkty w Twoim sklepie Magento zostały już sprawdzone, ta recenzja zostanie uwzględniona w domyślnych znacznikach. Może to spowodować następujący błąd:

31e6d408642cc8cc288f6fde6f6fb0d8
Ponieważ jest zakodowany w plikach motywu Magento, aby go usunąć, musisz przepisać ten plik:

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

Skopiuj zawartość pliku do:

 app/design/frontend/[pakiet]/[motyw]/templates/helper/summary.phtml

i usuń znaczniki:

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

W rezultacie powinieneś otrzymać to (dla Magento 2.1x):

 <?php
/**
 * Prawa autorskie 2016 Magento. Wszelkie prawa zastrzeżone.
 * Zobacz COPYING.txt, aby uzyskać szczegółowe informacje o licencji.
 */

// @codingStandardsIgnoreFile

?>
<?php $url = $block->getReviewsUrl() . '#Opinie'; ?>
<?php $urlForm = $block->getReviewsUrl() . '#formularz-recenzyjny'; ?>
<?php if ($block->getReviewsCount()): ?>
<?php $rating = $block->getRatingSummary(); ?>
<div class="product-reviews-summary<?php echo !$rating ? ' no-rating' : ''?>">
    <?php if ($ocena):?>
    <div class="podsumowanie-oceny">
         <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>% z <span>100</span></span></span>
         </div>
     </div>
    <?php endif;?>
    <div class="recenzje-działania">
        <a class="action view" href="<?php /* @escapeNotVerified */ echo $url ?>"><span><?php /* @escapeNotVerified */ echo $block->getReviewsCount() ?>< /span>&nbsp;<span><?php /* @escapeNotVerified */ echo($block->getReviewsCount() == 1) ? __('Recenzja') : __('Recenzje') ?></span></a>
        <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm ?>"><?php /* @escapeNotVerified */ echo __('Dodaj swoją recenzję') ?></a >
    </div>
</div>
<?php elseif ($block->getDisplayIfEmpty()): ?>
<div class="product-reviews-summary empty">
    <div class="recenzje-działania">
        <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm; ?>">
            <?php /* @escapeNotVerified */ echo __('Bądź pierwszym, który oceni ten produkt') ?>
        </a>
    </div>
</div>
<?php endif; ?>

I wreszcie, w ten sposób możesz włączyć/wyłączyć nasze niestandardowe rozszerzenie:

php bin/magento moduł: włącz Owner_Custom
php bin/magento moduł: wyłącz Owner_Custom

Ach, i nie zapomnij odświeżyć pamięci podręcznej, aby wszystkie zmiany zaczęły obowiązywać.

To w zasadzie to.

Jeśli masz jakieś pytania na ten temat, możesz zostawić swoje komentarze w poniższej sekcji.