在 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
啊,不要忘记刷新缓存以使所有更改生效。
基本上就是这样。
如果您对此主题有任何疑问,请随时在下面的部分中留下您的评论。