Ausblenden der Standard-Rich-Snippets-Funktionalität in Magento 2
Veröffentlicht: 2016-09-08Wenn Sie auf diese Seite gekommen sind, müssen Sie wissen, was Rich Snippets sind und wie sie in Magento 2 funktionieren.
Insgesamt ist das strukturierte Daten-Markup ein ziemlich cooles Feature der zweiten Version der E-Commerce-Plattform. Schema.org wurde als Standardvorlage hinzugefügt, mit der Händler ihre Website-Suchergebnisse mit nur wenigen Klicks mit Preisen, Bewertungen, Rezensionen oder anderen Markup-Werten ausstatten können.
Es gibt jedoch einige Fälle, in denen Sie die standardmäßige Rich Snippets-Funktion deaktivieren möchten. Die Gründe dafür können sein:
- Probleme mit dem Preisformat – derzeit entspricht das von Magento 2 verwendete Format nicht den neuesten schema.Org-Anforderungen, was den folgenden Fehler auslösen kann:
- Konflikte mit einigen Markup-Erweiterungen für strukturierte Daten von Drittanbietern,
- Probleme mit Google-Produkten – diese Art von Produkten kann einen anderen Preis haben (z. B. UVP), was wiederum Konflikte mit den Standard-Rich-Snippets von Magento 2 auslöst.
Leider ist es bis v.2.1.1 nicht möglich, die standardmäßige Rich Snippets-Funktionalität über die Konfigurationseinstellungen zu deaktivieren. Daher benötigen Sie eine Workaround-Lösung.
In diesem Artikel erkläre ich Ihnen, wie Sie das standardmäßige strukturierte Daten-Markup deaktivieren, indem Sie eine kleine, aber sehr nützliche Erweiterung für Magento 2 erstellen.
Lassen Sie uns zunächst die Umgebung der Erweiterung erstellen.
Erstellen der Erweiterung
Nennen wir es " Owner_Custom " (obwohl Sie einen beliebigen Namen wählen können).
Gehen Sie als Nächstes zu App/Code und erstellen Sie dort einen Ordner „ Besitzer “. Erstellen Sie in diesem Ordner einen neuen mit dem Namen „ Benutzerdefiniert “ – es wird der Stammordner für unsere Erweiterung sein.
Von hier aus erstellen wir die folgenden Dateien:
DATEI: registrierung.php
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Eigentümer_Benutzerdefiniert', __DIR__ );
DATEI: 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"> <Modulname="Owner_Custom" setup_version="0.0.1"/> </config>
Installieren Sie im nächsten Schritt die Erweiterung über die Konsole:
php bin/magento setup:upgrade – Keep-Generated
Alles erledigt, jetzt ist unsere Erweiterung in der Liste aller Module unter dem Admin-Panel zu finden:
php bin/magento-Modul:status
2. Entfernen des standardmäßigen Daten-Markups
Wenn die Umgebung der Erweiterung fertig ist, können wir uns daran machen, eine Layoutdatei zu erstellen, in der die ganze Magie stattfindet.
DATEI: 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"> <Körper> <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> </Seite>
WICHTIG
Vergessen Sie nicht, den Cache jedes Mal zu aktualisieren, wenn Sie Änderungen an der Datei vornehmen.
In diesem Teil des Codes werden wir die Parameter ändern, die zum Formatieren von strukturiertem Daten-Markup verwendet werden. Nachdem wir dies implementiert haben, enthält das Markup nur noch unser Angebot, z. B.:
Wie Sie sehen können, gibt Google nach dieser Manipulation keine Warnungen mehr im Abschnitt " Angebot " aus.
Lassen Sie uns weitere Codezeilen hinzufügen:
<?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"> <Körper> <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> </ReferenzBlock> </body> </Seite>
Indem wir diese Teile hinzugefügt haben, haben wir den Parameter entfernt, der dafür verantwortlich war, diesen Block als „Angebot“ zu markieren. Infolgedessen erkennen die Google-Tools hier keine Daten, die für Rich Snippets verwendet werden könnten:
Und es bleibt noch ein letzter Schliff zu tun.
Um die standardmäßigen Rich Snippets für alle Produkttypen zu deaktivieren, müssen Sie zwei weitere Dateien hinzufügen. Dieses hier für herunterladbare Produkte:
DATEI: 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"> <Körper> <referenceContainer name="product.price.final.copy"> <Argumente> <argument name="zone" xsi:type="boolean">false</argument> </Argumente> </referenceContainer> </body> </Seite>
Und das gilt für Bundle-Produkte:
DATEI: 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"> <Körper> <referenceBlock name="product.price.render.bundle.customization"> <Argumente> <argument name="zone" xsi:type="boolean">false</argument> </Argumente> </ReferenzBlock> </body> </Seite>
WICHTIG
Beachten Sie, dass, wenn einige der Produkte in Ihrem Magento-Shop bereits bewertet wurden, diese Bewertung in das Standard-Markup aufgenommen wird. Dies kann den folgenden Fehler auslösen:
Da es in den Magento-Designdateien fest codiert ist, müssen Sie diese Datei neu schreiben, um es zu löschen:
vendor/magento/module-review/view/frontend/templates/helper/summary.phtml
Kopieren Sie den Dateiinhalt in:
app/design/frontend/[Paket]/[Design]/templates/helper/summary.phtml
und lösche das Markup:
(itemprop=“aggregateRating“ itemscope itemtype=“https://schema.org/AggregateRating“ ; itemprop=“bestRating“ ; itemprop=“ratingValue“ ; itemprop=“reviewCount“ )
Als Ergebnis sollten Sie Folgendes erhalten (für Magento 2.1x):
<?php /** * Urheberrecht 2016 Magento. Alle Rechte vorbehalten. * Siehe COPYING.txt für Lizenzdetails. */ // @codingStandardsIgnoreFile ?> <?php $url = $block->getReviewsUrl() . '#Bewertungen'; ?> <?php $urlForm = $block->getReviewsUrl() . '#Bewertungsformular'; ?> <?php if ($block->getReviewsCount()): ?> <?php $rating = $block->getRatingSummary(); ?> <div class="product-reviews-summary<?php echo !$rating ? 'no-rating' : ''?>"> <?php if ($rating):?> <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>% von <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> <span><?php /* @escapeNotVerified */ echo($block->getReviewsCount() == 1) ? __('Rezension'): __('Rezensionen') ?></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 __('Bewerten Sie dieses Produkt als Erster') ?> </a> </div> </div> <?php endif; ?>
Und schließlich können Sie unsere benutzerdefinierte Erweiterung folgendermaßen aktivieren/deaktivieren:
php bin/magento-Modul: Aktivieren Sie Owner_Custom
php bin/magento module: Owner_Custom deaktivieren
Ah, und vergessen Sie nicht, den Cache zu aktualisieren, damit alle Änderungen wirksam werden.
Das ist es im Grunde.
Sollten Sie Fragen zu diesem Thema haben, können Sie gerne Ihre Kommentare im folgenden Abschnitt hinterlassen.