在 Magento 2 中隱藏默認的豐富片段功能
已發表: 2016-09-08如果你來到這個頁面,你一定知道什麼是 Rich Snippets 以及它們在 Magento 2 中是如何工作的。
總的來說,結構化數據標記是電子商務平台第二版的一個很酷的功能。 Schema.org 被添加為默認模板,商家只需單擊幾下,即可為其網站搜索結果配備價格、評級、評論或其他標記值。
但是,在某些情況下,您可能想要禁用默認的豐富網頁摘要功能。 其原因可能是:
- 價格格式問題——目前,Magento 2 使用的格式不符合最新的 schema.Org 要求,可能會觸發以下錯誤:
- 與一些 3-d 方結構化數據標記擴展衝突,
- Google 產品的問題——這種類型的產品可能有不同的價格(例如 MSRP),這反過來又會觸發與默認的 Magento 2 豐富網頁摘要的衝突。
不幸的是,直到 v.2.1.1,無法通過Config settings禁用默認的豐富網頁摘要功能。 因此,您需要一些解決方法。
在本文中,我將告訴您如何通過為 Magento 2 創建一個小但非常有用的擴展來禁用默認的結構化數據標記。
首先,讓我們創建擴展的環境。
創建擴展
我們稱它為“ Owner_Custom ”(儘管您可以選擇任何您想要的名稱)。
接下來,轉到 app/code 並在那裡創建一個“所有者”文件夾。 在這個文件夾中,創建一個名為“ 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"> <module name="Owner_Custom" setup_version="0.0.1"/> </配置>
下一步,通過控制台安裝擴展:
php bin/magento setup:upgrade — 保持生成
全部完成,現在我們的擴展可以在管理面板下的所有模塊列表中找到:
php bin/magento 模塊:狀態
2.刪除默認數據標記
當擴展的環境準備好後,我們可以開始創建一個佈局文件,所有的魔法都在這裡發生。
文件:視圖/前端/佈局/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"/> </正文> </頁面>
重要的
每次更改文件時不要忘記更新緩存。
在這部分代碼中,我們將更改用於格式化結構化數據標記的參數。 在我們實現這個之後,標記將只包含我們的報價,例如:
如您所見,在此操作之後,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> </參數> </參考塊> </正文> </頁面>
通過添加這些部分,我們刪除了負責將此塊標記為“報價”的參數。 因此,Google 工具在此處未檢測到任何可用於 Rich Snippets 的數據:
還有最後一步要做。
為了禁用所有產品類型的默認豐富網頁摘要,您需要再添加 2 個文件。 這是可下載產品的一個:
文件:查看/前端/佈局/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> </正文> </頁面>
這適用於捆綁產品:
文件:視圖/前端/佈局/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> </參數> </參考塊> </正文> </頁面>
重要的
請注意,如果您的 Magento 商店中的某些產品已經過審核,則此評論將包含在默認標記中。 這可能會觸發以下錯誤:
由於它是硬編碼在 Magento 主題文件中的,要刪除它,你必須重寫這個文件:
供應商/magento/module-review/view/frontend/templates/helper/summary.phtml
將文件內容複製到:
app/design/frontend/[package]/[theme]/templates/helper/summary.phtml
並刪除標記:
(itemprop=“aggregateRating” itemscope itemtype=“https://schema.org/AggregateRating”;itemprop=“bestRating”;itemprop=“ratingValue”;itemprop=“reviewCount”)
結果,你應該得到這個(對於 Magento 2.1x):
<?php /** * 版權所有 2016 Magento。 版權所有。 * 有關許可證的詳細信息,請參閱 COPYING.txt。 */ // @codingStandardsIgnoreFile ?> <?php $url = $block->getReviewsUrl() 。 '#reviews'; ?> <?php $urlForm = $block->getReviewsUrl() 。 '#review-form'; ?> <?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>% of <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) ? __('評論') : __('評論') ?></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 __('Be the first to review this product') ?> </a> </div> </div> <?php endif; ?>
最後,您可以通過以下方式啟用/禁用我們的自定義擴展:
php bin/magento 模塊:啟用 Owner_Custom
php bin/magento 模塊:禁用 Owner_Custom
啊,不要忘記刷新緩存以使所有更改生效。
基本上就是這樣。
如果您對此主題有任何疑問,請隨時在下面的部分中留下您的評論。