Magento 2에서 기본 리치 스니펫 기능 숨기기
게시 됨: 2016-09-08이 페이지를 방문했다면 Rich Snippet이 무엇이고 Magento 2에서 어떻게 작동하는지 알아야 합니다.
전체적으로 구조화된 데이터 마크업은 전자 상거래 플랫폼의 두 번째 버전에서 상당히 멋진 기능입니다. Schema.org가 기본 템플릿으로 추가되어 판매자가 몇 번의 클릭만으로 사이트 검색 결과에 가격, 평가, 리뷰 또는 기타 마크업 값을 제공할 수 있습니다.
그러나 기본 리치 스니펫 기능을 비활성화하려는 경우가 있습니다. 그 이유는 다음과 같습니다.
- 가격 형식 문제 - 현재 Magento 2에서 사용하는 형식이 최신 schema.Org 요구 사항과 일치하지 않아 다음 오류가 발생할 수 있습니다.
- 일부 3차원 구조화된 데이터 마크업 확장과 충돌 ,
- Google 제품 관련 문제 — 이 유형의 제품은 다른 가격(예: MSRP)과 함께 제공될 수 있으며, 이는 차례로 기본 Magento 2 리치 스니펫과 충돌을 유발합니다.
안타깝게도 v.2.1.1까지는 구성 설정 을 통해 기본 리치 스니펫 기능을 비활성화할 수 없습니다. 따라서 몇 가지 해결 방법이 필요합니다.
이 기사에서는 Magento 2에 대해 작지만 매우 유용한 확장을 만들어 기본 구조화된 데이터 마크업을 비활성화하는 방법을 알려 드리겠습니다.
먼저 확장 프로그램의 환경을 만들어 보겠습니다.
확장 만들기
' 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"/> </바디> </페이지>
중요한
파일을 변경할 때마다 캐시를 업데이트하는 것을 잊지 마십시오.
코드의 이 부분에서는 구조화된 데이터 마크업의 형식을 지정하는 데 사용되는 매개변수를 변경합니다. 이것을 구현한 후 마크업에는 다음과 같은 제안만 포함됩니다.
보시다시피, 이 조작 후 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 매장의 일부 제품이 이미 검토된 경우 이 검토가 기본 마크업에 포함됩니다. 이로 인해 다음 오류가 발생할 수 있습니다.
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> <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 비활성화
아, 그리고 모든 변경 사항을 적용하려면 캐시를 새로 고치는 것을 잊지 마십시오.
기본적으로 그렇습니다.
이 주제에 대해 질문이 있는 경우 아래 섹션에 자유롭게 의견을 남겨주세요.