Скрытие расширенных сниппетов по умолчанию в 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
А, и не забудьте обновить кеш, чтобы все изменения вступили в силу.
Это в основном все.
Если у вас есть какие-либо вопросы по этой теме, не стесняйтесь оставлять свои комментарии в разделе ниже.