Nascondere la funzionalità predefinita dei rich snippet in Magento 2
Pubblicato: 2016-09-08Se sei arrivato a questa pagina, devi sapere cosa sono i Rich Snippet e come funzionano in Magento 2.
Nel complesso, il markup dei dati strutturati è una caratteristica interessante della seconda versione della piattaforma di eCommerce. Schema.org è stato aggiunto come modello predefinito, che consente ai commercianti di dotare i risultati di ricerca del proprio sito di prezzo, valutazione, recensioni o altri valori di markup in pochi clic.
Ci sono, tuttavia, alcuni casi in cui potresti voler disabilitare la funzionalità predefinita dei rich snippet. Le ragioni possono essere:
- problemi di formato del prezzo : attualmente, il formato utilizzato da Magento 2 non corrisponde agli ultimi requisiti schema.Org, che potrebbero causare il seguente errore:
- è in conflitto con alcune estensioni di markup dei dati strutturati di terze parti,
- problemi con i prodotti Google : questo tipo di prodotti potrebbe avere un prezzo diverso (ad es. MSRP), che, a sua volta, innesca conflitti con i rich snippet predefiniti di Magento 2.
Sfortunatamente, fino alla v.2.1.1, è impossibile disabilitare la funzionalità dei rich snippet predefinita tramite le impostazioni di configurazione . Quindi, hai bisogno di una soluzione alternativa.
In questo articolo, ti dirò come disabilitare il markup dei dati strutturati predefinito creando un'estensione piccola ma molto utile per Magento 2.
Innanzitutto, creiamo l'ambiente dell'estensione.
Creazione dell'estensione
Chiamiamolo ' Owner_Custom ' (anche se puoi scegliere qualsiasi nome desideri).
Quindi, vai su app/codice e crea lì una cartella " Proprietario ". All'interno di questa cartella, creane una nuova, denominata " Personalizzata " — sarà la cartella principale per la nostra estensione.
Da qui creiamo i seguenti file:
FILE: registrazione.php
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Proprietario_Personalizzato', __DIR__ );
FILE: etc/module.xml
<?versione xml="1.0"?> <config xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Owner_Custom" setup_version="0.0.1"/> </config>
Al passaggio successivo, installa l'estensione tramite Console:
php bin/magento setup:upgrade — keep-generated
Fatto tutto, ora la nostra estensione può essere trovata nell'elenco di tutti i moduli nel Pannello di amministrazione:
modulo php bin/magento: stato
2. Rimozione del markup dei dati predefinito
Quando l'ambiente dell'estensione è pronto, possiamo passare alla creazione di un file di layout, dove avviene tutta la magia.
FILE: view/frontend/layout/catalog_product_view.xml
<?versione xml="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <corpo> <attribute name="itemtype" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/> <attribute name="itemscope" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/> </corpo> </pagina>
IMPORTANTE
Non dimenticare di aggiornare la cache ogni volta che apporti modifiche al file.
In questa parte del codice, cambieremo i parametri utilizzati per la formattazione del markup dei dati strutturati. Dopo averlo implementato, il markup conterrà solo la nostra offerta, ad esempio:
Come puoi vedere, dopo questa manipolazione, Google smette di lanciare avvisi nella sezione " Offerta ".
Aggiungiamo altre righe di codice:
<?versione xml="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <corpo> <attribute name="itemtype" remove="true"/> <attribute name="itemscope" remove="true"/> <referenceBlock name="product.price.final"> <argomenti> <argomento name="zone" xsi:type="boolean">falso</argument> </argomenti> </referenceBlock> </corpo> </pagina>
Aggiungendo questi pezzi, abbiamo rimosso il parametro che era responsabile del contrassegno di questo blocco come "Offerta". Di conseguenza, gli strumenti di Google non rilevano alcun dato che potrebbe essere utilizzato per i Rich Snippet qui:
E c'è ancora un ultimo tocco da fare.
Per disabilitare i rich snippet predefiniti per tutti i tipi di prodotto, devi aggiungere altri 2 file. Questo per i prodotti scaricabili:
FILE: view/frontend/layout/catalog_product_view_type_downloadable.xml
<?versione xml="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <corpo> <referenceContainer name="product.price.final.copy"> <argomenti> <argomento name="zone" xsi:type="boolean">falso</argument> </argomenti> </referenceContenitore> </corpo> </pagina>
E questo è per i prodotti bundle:
FILE: view/frontend/layout/catalog_product_view_type_bundle.xml
<?versione xml="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <corpo> <referenceBlock name="product.price.render.bundle.customization"> <argomenti> <argomento name="zone" xsi:type="boolean">falso</argument> </argomenti> </referenceBlock> </corpo> </pagina>
IMPORTANTE
Tieni presente che se alcuni dei prodotti nel tuo negozio Magento sono già stati recensiti, questa recensione verrà inclusa nel markup predefinito. Ciò potrebbe causare il seguente errore:
Poiché è codificato nei file del tema Magento, per eliminarlo devi riscrivere questo file:
vendor/magento/module-review/view/frontend/templates/helper/summary.phtml
Copia il contenuto del file in:
app/design/frontend/[pacchetto]/[tema]/templates/helper/summary.phtml
ed elimina il markup:
(itemprop=“aggregateRating” itemscope itemtype=“https://schema.org/AggregateRating” ; itemprop=“bestRating” ; itemprop=“ratingValue” ; itemprop=“reviewCount” )
Di conseguenza, dovresti ottenere questo (per Magento 2.1x):
<?php /** * Copyright 2016 Magento. Tutti i diritti riservati. * Vedere COPYING.txt per i dettagli sulla licenza. */ // @codingStandardsIgnoreFile ?> <?php $url = $block->getReviewsUrl() . '#recensioni'; ?> <?php $urlForm = $blocco->getReviewsUrl() . '#modulo di revisione'; ?> <?php if ($block->getReviewsCount()): ?> <?php $rating = $block->getRatingSummary(); ?> <div class="product-reviews-summary<?php echo !$rating ? 'no-rating' : ''?>"> <?php se ($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>% di <span>100</span></span></span> </div> </div> <?php endif;?> <div class="recensioni-azioni"> <a class="action view" href="<?php /* @escapeNotVerified */ echo $url ?>"><span><?php /* @escapeNotVerified */ echo $block->getReviewsCount() ?>< /span> <span><?php /* @escapeNotVerified */ echo($block->getReviewsCount() == 1) ? __('Recensioni') : __('Recensioni') ?></span></a> <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm ?>"><?php /* @escapeNotVerified */ echo __('Aggiungi la tua recensione') ?></a > </div> </div> <?php elseif ($block->getDisplayIfEmpty()): ?> <div class="product-reviews-summary vuoto"> <div class="recensioni-azioni"> <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm; ?>"> <?php /* @escapeNotVerified */ echo __('Sii il primo a recensire questo prodotto') ?> </a> </div> </div> <?php endif; ?>
Infine, ecco come abilitare/disabilitare la nostra estensione personalizzata:
php bin/modulo magento: abilita Owner_Custom
php bin/modulo magento: disabilita Owner_Custom
Ah, e non dimenticare di aggiornare la cache per rendere effettive tutte le modifiche.
Questo è fondamentalmente.
In caso di domande su questo argomento, sentiti libero di lasciare i tuoi commenti nella sezione sottostante.