Magento 2 でデフォルトのリッチ スニペット機能を非表示にする
公開: 2016-09-08このページにアクセスした場合は、リッチ スニペットとは何か、Magento 2 でどのように機能するかを知っている必要があります。
全体として、構造化データのマークアップは、e コマース プラットフォームの 2 番目のバージョンの非常に優れた機能です。 Schema.org がデフォルトのテンプレートとして追加されました。これにより、マーチャントは数回クリックするだけでサイトの検索結果に価格、評価、レビュー、またはその他のマークアップ値を追加できます。
ただし、デフォルトのリッチ スニペット機能を無効にしたい場合もあります。 その理由は次のとおりです。
- 価格形式の問題— 現在、Magento 2 で使用されている形式は最新の schema.Org 要件に対応していないため、次のエラーが発生する可能性があります。
- 一部のサードパーティの構造化データ マークアップ拡張機能と競合します。
- Google 製品の問題— このタイプの製品には異なる価格 (MSRP など) が設定されている場合があり、その結果、デフォルトの Magento 2 リッチ スニペットとの競合が発生します。
残念ながら、v.2.1.1 までは、 Config 設定でデフォルトのリッチ スニペット機能を無効にすることはできません。 したがって、回避策が必要です。
この記事では、Magento 2 用の少しではあるが非常に便利な拡張機能を作成して、デフォルトの構造化データ マークアップを無効にする方法を説明します。
まず、拡張機能の環境を作成しましょう。
拡張機能の作成
これを ' Owner_Custom ' と呼びましょう (ただし、任意の名前を選択できます)。
次に、 app/code に移動し、そこに ' Owner ' フォルダーを作成します。 このフォルダー内に、' Custom ' という名前の新しいフォルダーを作成します — これが拡張機能のルート フォルダーになります。
ここから、次のファイルを作成します。
ファイル: registration.php
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Owner_Custom', __DIR__ );
ファイル: etc/module.xml
<?xml バージョン="1.0"?> <config xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <モジュール名="Owner_Custom" setup_version="0.0.1"/> </config>
次のステップで、コンソール経由で拡張機能をインストールします。
php bin/magento setup:upgrade — キープ生成
これで、拡張機能が管理パネルの下のすべてのモジュールのリストに表示されます。
php bin/magento モジュール:ステータス
2. デフォルトのデータ マークアップの削除
拡張機能の環境の準備ができたら、すべての魔法が行われるレイアウト ファイルの作成に取り掛かることができます。
ファイル: view/frontend/layout/catalog_product_view.xml
<?xml バージョン="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <本体> <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> </ページ>
重要
ファイルに変更を加えるたびにキャッシュを更新することを忘れないでください。
コードのこの部分では、構造化データ マークアップの書式設定に使用されるパラメーターを変更します。 これを実装すると、マークアップにはオファーのみが含まれます。
ご覧のとおり、この操作の後、Google は「オファー」セクションで警告をスローしなくなりました。
さらにコード行を追加しましょう。
<?xml バージョン="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <本体> <attribute name="itemtype" remove="true"/> <attribute name="itemscope" remove="true"/> <referenceBlock name="product.price.final"> <引数> <argument name="zone" xsi:type="boolean">false</argument> </引数> </referenceBlock> </body> </ページ>
これらの部分を追加することで、このブロックを「オファー」としてマークアップする役割を担っていたパラメーターを削除しました。 その結果、Google ツールは次のリッチ スニペットに使用できるデータを検出しません。
そして、最後の仕上げが 1 つ残っています。
すべての商品タイプでデフォルトのリッチ スニペットを無効にするには、さらに 2 つのファイルを追加する必要があります。 ダウンロード可能な製品の場合:
ファイル: view/frontend/layout/catalog_product_view_type_downloadable.xml
<?xml バージョン="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <本体> <referenceContainer name="product.price.final.copy"> <引数> <argument name="zone" xsi:type="boolean">false</argument> </引数> </referenceContainer> </body> </ページ>
これはバンドル製品の場合です。
ファイル: view/frontend/layout/catalog_product_view_type_bundle.xml
<?xml バージョン="1.0"?> <page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <本体> <referenceBlock name="product.price.render.bundle.customization"> <引数> <argument name="zone" xsi:type="boolean">false</argument> </引数> </referenceBlock> </body> </ページ>
重要
Magento ストアの一部の製品がすでにレビューされている場合、このレビューはデフォルトのマークアップに含まれることに注意してください。 これにより、次のエラーが発生する可能性があります。
Magento テーマ ファイルにハードコーディングされているため、削除するには、このファイルを書き換える必要があります。
vendor/magento/module-review/view/frontend/templates/helper/summary.phtml
ファイルの内容を次の場所にコピーします。
app/design/frontend/[パッケージ]/[テーマ]/templates/helper/summary.phtml
マークアップを削除します。
(itemprop=“aggregateRating” itemscope itemtype=“https://schema.org/AggregateRating” ; itemprop=“bestRating” ; itemprop=“ratingValue” ; itemprop=“reviewCount” )
その結果、これを取得する必要があります (Magento 2.1x の場合):
<?php /** * 著作権 2016 マジェント。 全著作権所有。 * ライセンスの詳細については、COPYING.txt を参照してください。 */ // @codingStandardsIgnoreFile ?> <?php $url = $block->getReviewsUrl() . '#レビュー'; ?> <?php $urlForm = $block->getReviewsUrl() . '#レビューフォーム'; ?> <?php if ($block->getReviewsCount()): ?> <?php $rating = $block->getRatingSummary(); ?> <div class="product-reviews-summary<?php echo !$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>100</span></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) ? __('レビュー') : __('レビュー') ?></span></a> <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm ?>"><?php /* @escapeNotVerified */ echo __('レビューを追加') ?></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 __('Be the first to review this product') ?> </a> </div> </div> <?php endif; ?>
最後に、カスタム拡張機能を有効/無効にする方法は次のとおりです。
php bin/magento モジュール: Owner_Custom を有効にする
php bin/magento モジュール: Owner_Custom を無効にする
ああ、キャッシュを更新して、すべての変更を有効にすることを忘れないでください。
基本的にはそれだけです。
このトピックについて質問がある場合は、下のセクションにコメントを残してください。