Masquer la fonctionnalité par défaut des extraits enrichis dans Magento 2
Publié: 2016-09-08Si vous êtes arrivé sur cette page, vous devez savoir ce que sont les Rich Snippets et comment ils fonctionnent dans Magento 2.
Dans l'ensemble, le balisage de données structurées est une fonctionnalité assez intéressante de la deuxième version de la plate-forme de commerce électronique. Schema.org a été ajouté comme modèle par défaut, ce qui permet aux marchands d'équiper les résultats de recherche de leur site avec le prix, la note, les avis ou d'autres valeurs de balisage en quelques clics seulement.
Il existe toutefois des cas où vous souhaiterez peut-être désactiver la fonctionnalité d'extraits enrichis par défaut. Les raisons peuvent être :
- problèmes de format de prix — actuellement, le format utilisé par Magento 2 ne correspond pas aux dernières exigences de schema.Org, ce qui peut déclencher l'erreur suivante :
- entre en conflit avec certaines extensions de balisage de données structurées 3D,
- problèmes avec les produits Google - ce type de produits peut avoir un prix différent (par exemple, le PDSF), ce qui, à son tour, déclenche des conflits avec les extraits enrichis par défaut de Magento 2.
Malheureusement, jusqu'à la v.2.1.1, il est impossible de désactiver la fonctionnalité d'extraits enrichis par défaut via les paramètres de configuration . Par conséquent, vous avez besoin d'une solution de contournement.
Dans cet article, je vais vous expliquer comment désactiver le balisage de données structurées par défaut en créant une petite extension, mais très utile, pour Magento 2.
Commençons par créer l'environnement de l'extension.
Création de l'extension
Appelons-le ' Owner_Custom ' (bien que vous puissiez choisir le nom que vous souhaitez).
Ensuite, allez dans app/code et créez-y un dossier ' Propriétaire '. À l'intérieur de ce dossier, créez-en un nouveau, nommé ' Custom ' - ce sera le dossier racine de notre extension.
À partir de là, nous créons les fichiers suivants :
FICHIER : inscription.php
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Propriétaire_Personnalisé', __DIR__ );
FICHIER : 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"> <nom du module="Owner_Custom" setup_version="0.0.1"/> </config>
À l'étape suivante, installez l'extension via la console :
php bin/magento setup:upgrade — keep-generated
Tout est fait, maintenant notre extension se trouve dans la liste de tous les modules sous le panneau d'administration :
module php bin/magento:état
2. Suppression du balisage de données par défaut
Lorsque l'environnement de l'extension est prêt, nous pouvons commencer à créer un fichier de mise en page, où toute la magie opère.
FICHIER : 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"> <corps> <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>
IMPORTANT
N'oubliez pas de mettre à jour le cache chaque fois que vous modifiez le fichier.
Dans cette partie du code, nous allons modifier les paramètres utilisés pour formater le balisage des données structurées. Une fois cela mis en œuvre, le balisage ne contiendra que notre offre, par exemple :
Comme vous pouvez le voir, après cette manipulation, Google arrête de lancer des avertissements dans la section ' Offre '.
Ajoutons quelques lignes de code supplémentaires :
<?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"> <corps> <attribute name="itemtype" remove="true"/> <nom d'attribut="itemscope" remove="true"/> <referenceBlock name="product.price.final"> <arguments> <argument name="zone" xsi:type="boolean">faux</argument> </ arguments> </referenceBlock> </body> </page>
En ajoutant ces éléments, nous avons supprimé le paramètre responsable du marquage de ce bloc en tant qu'"offre". Par conséquent, les outils Google ne détectent ici aucune donnée susceptible d'être utilisée pour les extraits enrichis :
Et il reste une touche finale à faire.
Afin de désactiver les extraits enrichis par défaut pour tous les types de produits, vous devez ajouter 2 fichiers supplémentaires. Celui-ci pour les produits téléchargeables :
FICHIER : 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"> <corps> <referenceContainer name="product.price.final.copy"> <arguments> <argument name="zone" xsi:type="boolean">faux</argument> </ arguments> </referenceContainer> </body> </page>
Et c'est pour les produits groupés :
FICHIER : 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"> <corps> <referenceBlock name="product.price.render.bundle.customization"> <arguments> <argument name="zone" xsi:type="boolean">faux</argument> </ arguments> </referenceBlock> </body> </page>
IMPORTANT
Notez que si certains des produits de votre boutique Magento ont déjà été évalués, cet avis sera inclus dans le balisage par défaut. Cela peut déclencher l'erreur suivante :
Puisqu'il est codé en dur dans les fichiers du thème Magento, pour le supprimer, vous devez réécrire ce fichier :
fournisseur/magento/module-review/view/frontend/templates/helper/summary.phtml
Copiez le contenu du fichier dans :
app/design/frontend/[package]/[theme]/templates/helper/summary.phtml
et supprimez le balisage :
(itemprop=“aggregateRating” itemscope itemtype=“https://schema.org/AggregateRating” ; itemprop=“bestRating” ; itemprop=“ratingValue” ; itemprop=“reviewCount” )
En conséquence, vous devriez obtenir ceci (pour Magento 2.1x) :
<?php /** * Copyright 2016 Magento. Tous les droits sont réservés. * Voir COPYING.txt pour les détails de la licence. */ // @codingStandardsIgnoreFile ?> <?php $url = $block->getReviewsUrl() . '#Commentaires'; ?> <?php $urlForm = $block->getReviewsUrl() . '#review-form' ; ?> <?php si ($block->getReviewsCount()): ?> <?php $rating = $block->getRatingSummary(); ?> <div class="product-reviews-summary<?php echo !$rating ? ' no-rating' : ''?>"> <?php si ($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>% de <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) ? __('Review') : __('Reviews') ?></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 __('Soyez le premier à commenter ce produit') ?> </a> </div> </div> <?php endif; ?>
Et enfin, voici comment vous pouvez activer/désactiver notre extension personnalisée :
module php bin/magento : activer Owner_Custom
module php bin/magento : désactiver Owner_Custom
Ah, et n'oubliez pas de rafraîchir le cache pour que toutes les modifications prennent effet.
C'est essentiellement ça.
Si vous avez des questions à ce sujet, n'hésitez pas à laisser vos commentaires dans la section ci-dessous.