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.