Ukrywanie domyślnej funkcji Rich Snippets w Magento 2
Opublikowany: 2016-09-08Jeś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:

- 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.
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.:

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:

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:

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> <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.
