Magento 2에서 기본 리치 스니펫 기능 숨기기

게시 됨: 2016-09-08

이 페이지를 방문했다면 Rich Snippet이 무엇이고 Magento 2에서 어떻게 작동하는지 알아야 합니다.

전체적으로 구조화된 데이터 마크업은 전자 상거래 플랫폼의 두 번째 버전에서 상당히 멋진 기능입니다. Schema.org가 기본 템플릿으로 추가되어 판매자가 몇 번의 클릭만으로 사이트 검색 결과에 가격, 평가, 리뷰 또는 기타 마크업 값을 제공할 수 있습니다.

그러나 기본 리치 스니펫 기능을 비활성화하려는 경우가 있습니다. 그 이유는 다음과 같습니다.

  • 가격 형식 문제 - 현재 Magento 2에서 사용하는 형식이 최신 schema.Org 요구 사항과 일치하지 않아 다음 오류가 발생할 수 있습니다. 1
  • 일부 3차원 구조화된 데이터 마크업 확장과 충돌 ,
  • Google 제품 관련 문제 — 이 유형의 제품은 다른 가격(예: MSRP)과 함께 제공될 수 있으며, 이는 차례로 기본 Magento 2 리치 스니펫과 충돌을 유발합니다.

안타깝게도 v.2.1.1까지는 구성 설정 을 통해 기본 리치 스니펫 기능을 비활성화할 수 없습니다. 따라서 몇 가지 해결 방법이 필요합니다.

이 기사에서는 Magento 2에 대해 작지만 매우 유용한 확장을 만들어 기본 구조화된 데이터 마크업을 비활성화하는 방법을 알려 드리겠습니다.

먼저 확장 프로그램의 환경을 만들어 보겠습니다.

  1. 확장 만들기

' Owner_Custom '이라고 부르겠습니다(원하는 이름을 선택할 수 있음).

다음으로, app/code로 이동하여 거기에 ' Owner ' 폴더를 만듭니다. 이 폴더 안에 ' 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">
<모듈 이름="Owner_Custom" setup_version="0.0.1"/>
</구성>

다음 단계에서 콘솔을 통해 확장을 설치합니다.

php bin/magento 설정:업그레이드 — 계속 생성

모두 완료되었습니다. 이제 관리자 패널 아래의 모든 모듈 목록에서 확장 프로그램을 찾을 수 있습니다.

PHP bin/magento 모듈:상태

2. 기본 데이터 마크업 제거

확장의 환경이 준비되면 모든 마술이 일어나는 레이아웃 파일을 생성할 수 있습니다.

파일: 보기/프론트엔드/레이아웃/catalog_product_view.xml

<?xml 버전="1.0"?>
<페이지 xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <본체>
        <속성 이름="itemtype" remove="true" ifconfig="mageorx_seo/markup/product/rs_enabled"/>
        <속성 이름="itemscope" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/>
    </바디>
</페이지>

중요한

파일을 변경할 때마다 캐시를 ​​업데이트하는 것을 잊지 마십시오.

코드의 이 부분에서는 구조화된 데이터 마크업의 형식을 지정하는 데 사용되는 매개변수를 변경합니다. 이것을 구현한 후 마크업에는 다음과 같은 제안만 포함됩니다.

2

보시다시피, 이 조작 후 Google은 ' 제안 ' 섹션에서 경고를 표시하지 않습니다.

코드 라인을 더 추가해 보겠습니다.

<?xml 버전="1.0"?>
<페이지 xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <본체>
        <속성 이름="항목 유형" 제거="true"/>
        <속성 이름="itemscope" 제거="true"/>
        <referenceBlock name="product.price.final">
            <인수>
                <argument name="zone" xsi:type="boolean">거짓</argument>
            </인수>
        </referenceBlock>
    </바디>
</페이지>

이 부분을 추가하여 이 블록을 '오퍼'로 표시하는 매개변수를 제거했습니다. 결과적으로 Google 도구는 여기에서 Rich Snippet에 사용할 수 있는 데이터를 감지하지 못합니다.

삼

그리고 마지막으로 한 번의 터치가 남았습니다.

모든 제품 유형에 대해 기본 리치 스니펫을 비활성화하려면 파일을 2개 더 추가해야 합니다. 다운로드 가능한 제품:

파일: 보기/프론트엔드/레이아웃/catalog_product_view_type_downloadable.xml

<?xml 버전="1.0"?>
<페이지 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">거짓</argument>
            </인수>
        </reference컨테이너>
    </바디>
</페이지>

그리고 이것은 번들 제품을 위한 것입니다:

파일: 보기/프론트엔드/레이아웃/catalog_product_view_type_bundle.xml

<?xml 버전="1.0"?>
<페이지 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">거짓</argument>
            </인수>
        </referenceBlock>
    </바디>
</페이지>

중요한

Magento 매장의 일부 제품이 이미 검토된 경우 이 검토가 기본 마크업에 포함됩니다. 이로 인해 다음 오류가 발생할 수 있습니다.

31e6d408642cc8cc288f6fde6f6fb0d8
Magento 테마 파일에 하드코딩되어 있으므로 삭제하려면 다음 파일을 다시 작성해야 합니다.

 공급업체/magento/module-review/view/frontend/templates/helper/summary.phtml

파일 내용을 다음 위치로 복사:

 앱/디자인/프론트엔드/[패키지]/[테마]/templates/helper/summary.phtml

마크업을 삭제합니다.

 (itemprop=“aggregateRating” itemscope itemtype=“https://schema.org/AggregateRating” ; itemprop=“bestRating” ; itemprop=“ratingValue” ; itemprop=“reviewCount” )

결과적으로 다음을 얻어야 합니다(Magento 2.1x의 경우).

 <?php
/**
 * Copyright 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 ? ' no-rating' : ''?>">
    <?php if ($rating):?>
    <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 endif;?>
    <div class="리뷰-액션">
        <a class="action view" href="<?php /* @escapeNotVerified */ echo $url ?>"><span><?php /* @escapeNotVerified */ echo $block->getReviewsCount() ?>< /span>&nbsp;<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="리뷰-액션">
        <a class="action add" href="<?php /* @escapeNotVerified */ echo $urlForm; ?>">
            <?php /* @escapeNotVerified */ echo __('이 제품의 첫 리뷰가 되세요') ?>
        </a>
    </div>
</div>
<?php endif; ?>

마지막으로 사용자 정의 확장을 활성화/비활성화하는 방법은 다음과 같습니다.

php bin/magento 모듈: Owner_Custom 활성화
php bin/magento 모듈: Owner_Custom 비활성화

아, 그리고 모든 변경 사항을 적용하려면 캐시를 새로 고치는 것을 잊지 마십시오.

기본적으로 그렇습니다.

이 주제에 대해 질문이 있는 경우 아래 섹션에 자유롭게 의견을 남겨주세요.