Скрытие расширенных сниппетов по умолчанию в Magento 2
Опубликовано: 2016-09-08Если вы пришли на эту страницу, вы должны знать, что такое расширенные сниппеты и как они работают в Magento 2.
В целом, разметка структурированных данных — довольно крутая фича второй версии платформы электронной коммерции. Schema.org был добавлен в качестве шаблона по умолчанию, что позволяет продавцам оборудовать результаты поиска по сайту ценой, рейтингом, отзывами или другими значениями разметки всего за несколько кликов.
Однако в некоторых случаях вам может потребоваться отключить функцию расширенных фрагментов по умолчанию. Причинами тому могут быть:
- проблемы с форматом цен — в настоящее время формат, используемый Magento 2, не соответствует последним требованиям schema.Org, что может вызвать следующую ошибку:

- конфликтует с некоторыми сторонними расширениями разметки структурированных данных,
- проблемы с продуктами Google — этот тип продуктов может поставляться с другой ценой (например, MSRP), что, в свою очередь, вызывает конфликты с расширенными фрагментами Magento 2 по умолчанию.
К сожалению, вплоть до версии 2.1.1 невозможно отключить расширенные сниппеты по умолчанию через настройки конфигурации . Следовательно, вам нужно какое-то обходное решение.
В этой статье я расскажу вам, как отключить разметку структурированных данных по умолчанию, создав небольшое, но очень полезное расширение для Magento 2.
Во-первых, давайте создадим среду расширения.
Создание расширения
Назовем его Owner_Custom (хотя вы можете выбрать любое имя).
Затем перейдите в app/code и создайте там папку « Владелец ». Внутри этой папки создайте новую под названием « Custom » — это будет корневая папка для нашего расширения.
Отсюда мы создаем следующие файлы:
ФАЙЛ: Registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Владелец_Пользовательский',
__КАТАЛОГ__
);ФАЙЛ: 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"/> </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"/>
</тело>
</страница>
ВАЖНЫЙ
Не забывайте обновлять кэш каждый раз, когда вы вносите изменения в файл.
В этой части кода мы собираемся изменить параметры, которые используются для форматирования разметки структурированных данных. После того, как мы это реализуем, разметка будет содержать только наше предложение, например:

Как видите, после этой манипуляции 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>
</тело>
</страница>Добавив эти части, мы убрали параметр, отвечающий за разметку этого блока как «Предложение». В результате инструменты Google не обнаруживают здесь никаких данных, которые можно было бы использовать для расширенных сниппетов:

И осталось сделать последний штрих.

Чтобы отключить расширенные описания по умолчанию для всех типов продуктов, вам нужно добавить еще 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>
</тело>
</страница>
И это для комплектных продуктов:
ФАЙЛ: 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>
</тело>
</страница>
ВАЖНЫЙ
Обратите внимание: если некоторые товары в вашем магазине Magento уже были проверены, этот обзор будет включен в разметку по умолчанию. Это может вызвать следующую ошибку:

Поскольку он жестко запрограммирован в файлах темы Magento, чтобы удалить его, вам нужно переписать этот файл:
поставщик/magento/module-review/view/frontend/templates/helper/summary.phtml
Скопируйте содержимое файла в:
приложение/дизайн/интерфейс/[пакет]/[тема]/templates/helper/summary.phtml
и удалите разметку:
(itemrop="aggregateRating" itemscope itemtype="https://schema.org/AggregateRating"; itemprop="bestRating"; itemprop="ratingValue"; itemprop="reviewCount").
В результате вы должны получить это (для Magento 2.1x):
<?php
/**
* Copyright 2016 Magento. Все права защищены.
* Подробнее о лицензии см. 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 ? ' no-rating' : ''?>">
<?php если ($рейтинг):?>
<div class="рейтинг-резюме">
<span class="label"><span><?php /* @escapeNotVerified */ echo __('Рейтинг') ?>:</span></span>
<div class="rating-result" title="<?php /* @escapeNotVerified */ echo $rating; ?>%">
<span><span><span><?php /* @escapeNotVerified */ echo $rating; ?></span>% от <span>100</span></span></span>
</div>
</div>
<?php конец;?>
<div class="отзывы-действия">
<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 пустой">
<div class="отзывы-действия">
<a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm; ?>">
<?php /* @escapeNotVerified */ echo __('Будьте первым, кто оставит отзыв об этом товаре') ?>
</a>
</div>
</div>
<?php конец; ?>И, наконец, вот как вы можете включить/отключить наше пользовательское расширение:
Модуль php bin/magento: включить Owner_Custom
Модуль php bin/magento: отключить Owner_Custom
А, и не забудьте обновить кеш, чтобы все изменения вступили в силу.
Это в основном все.
Если у вас есть какие-либо вопросы по этой теме, не стесняйтесь оставлять свои комментарии в разделе ниже.
