การซ่อนฟังก์ชัน Rich Snippets เริ่มต้นใน Magento 2

เผยแพร่แล้ว: 2016-09-08

หากคุณมาที่หน้านี้ คุณต้องรู้ว่า Rich Snippets คืออะไรและทำงานอย่างไรใน Magento 2

โดยรวมแล้ว มาร์กอัปข้อมูลที่มีโครงสร้างเป็นคุณสมบัติที่ยอดเยี่ยมของแพลตฟอร์มอีคอมเมิร์ซรุ่นที่สอง Schema.org ถูกเพิ่มเป็นเทมเพลตเริ่มต้น ซึ่งช่วยให้ผู้ค้าจัดเตรียมผลการค้นหาไซต์ของตนด้วยราคา การให้คะแนน บทวิจารณ์ หรือค่ามาร์กอัปอื่นๆ ได้ในไม่กี่คลิก

อย่างไรก็ตาม มีบางกรณีที่คุณอาจต้องการปิดใช้งานฟังก์ชันตัวอย่างข้อมูลสื่อสมบูรณ์ที่เป็นค่าเริ่มต้น เหตุผลในการที่สามารถ:

  • ปัญหารูปแบบราคา — ขณะนี้รูปแบบที่ใช้โดย Magento 2 ไม่สอดคล้องกับข้อกำหนด schema.Org ล่าสุด ซึ่งอาจทำให้เกิดข้อผิดพลาดต่อไปนี้: 1
  • ขัดแย้ง กับส่วนขยายมาร์กอัปข้อมูลที่มีโครงสร้าง 3 มิติ
  • ปัญหาเกี่ยวกับผลิตภัณฑ์ของ Google — ผลิตภัณฑ์ ประเภทนี้อาจมีราคาแตกต่างกัน (เช่น MSRP) ซึ่งจะทำให้เกิดข้อขัดแย้งกับตัวอย่างข้อมูลสื่อสมบูรณ์ของ Magento 2 ที่เป็นค่าเริ่มต้น

ขออภัย จนถึง v.2.1.1 เป็นไปไม่ได้ที่จะปิดใช้งานฟังก์ชันตัวอย่างข้อมูลสื่อสมบูรณ์ที่เป็นค่าเริ่มต้นผ่านการ ตั้งค่า Config ดังนั้น คุณต้องมีวิธีแก้ปัญหา

ในบทความนี้ ผมจะบอกคุณถึงวิธีปิดใช้งานมาร์กอัปข้อมูลที่มีโครงสร้างเริ่มต้นผ่านการสร้างส่วนขยายเพียงเล็กน้อยแต่มีประโยชน์มากสำหรับ Magento 2

ขั้นแรก มาสร้างสภาพแวดล้อมของส่วนขยายกัน

  1. การสร้างส่วนขยาย

เรียกมันว่า ' Owner_Custom ' (แต่คุณสามารถเลือกชื่อใดก็ได้ที่คุณต้องการ)

ถัดไป ไปที่แอพ/โค้ด และสร้างโฟลเดอร์ ' Owner ' ที่นั่น ภายในโฟลเดอร์นี้ ให้สร้างโฟลเดอร์ใหม่ชื่อ ' กำหนดเอง ' — มันจะเป็นโฟลเดอร์รูทสำหรับส่วนขยายของเรา

จากที่นี่ เราสร้างไฟล์ต่อไปนี้:

ไฟล์: register.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Owner_Custom',
    __DIR__
);

ไฟล์: etc/module.xml

 <?xml version="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 version="1.0"?>
<page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <attribute name="itemtype" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/>
        <attribute name="itemscope" remove="true" ifconfig="mageworx_seo/markup/product/rs_enabled"/>
    </body>
</page>

สำคัญ

อย่าลืมอัปเดตแคชทุกครั้งที่คุณเปลี่ยนแปลงไฟล์

ในโค้ดส่วนนี้ เราจะเปลี่ยนพารามิเตอร์ที่ใช้สำหรับการจัดรูปแบบมาร์กอัปข้อมูลที่มีโครงสร้าง หลังจากที่เราใช้สิ่งนี้ มาร์กอัปจะมีเฉพาะข้อเสนอของเรา เช่น:

2

อย่างที่คุณเห็น หลังจากการปรับเปลี่ยนนี้ Google จะหยุดแสดงคำเตือนในส่วน ' ข้อเสนอ '

มาเพิ่มบรรทัดโค้ดเพิ่มเติมกัน:

<?xml version="1.0"?>
<page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <attribute name="itemtype" remove="true"/>
        <attribute name="itemscope" remove="true"/>
        <referenceBlock name="product.price.final">
            <อาร์กิวเมนต์>
                <argument name="zone" xsi:type="boolean">เท็จ</argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

โดยการเพิ่มชิ้นส่วนเหล่านี้ เราได้ลบพารามิเตอร์ที่รับผิดชอบในการทำเครื่องหมายบล็อกนี้เป็น 'ข้อเสนอ' ด้วยเหตุนี้ เครื่องมือของ Google จึงไม่ตรวจพบข้อมูลใดๆ ที่อาจใช้สำหรับ Rich Snippets ที่นี่:

3

และเหลืออีกหนึ่งสัมผัสสุดท้ายที่ต้องทำ

หากต้องการปิดใช้ตัวอย่างข้อมูลสื่อสมบูรณ์เริ่มต้นสำหรับผลิตภัณฑ์ทุกประเภท คุณต้องเพิ่มไฟล์อีก 2 ไฟล์ อันนี้สำหรับผลิตภัณฑ์ที่ดาวน์โหลดได้:

ไฟล์: view/frontend/layout/catalog_product_view_type_downloadable.xml

<?xml version="1.0"?>
<page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="product.price.final.copy">
            <อาร์กิวเมนต์>
                <argument name="zone" xsi:type="boolean">เท็จ</argument>
            </arguments>
        </referenceContainer>
    </body>
</page>

และนี่คือสำหรับผลิตภัณฑ์มัด:

ไฟล์: view/frontend/layout/catalog_product_view_type_bundle.xml

<?xml version="1.0"?>
<page xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="product.price.render.bundle.customization">
            <อาร์กิวเมนต์>
                <argument name="zone" xsi:type="boolean">เท็จ</argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

สำคัญ

โปรดทราบว่าหากผลิตภัณฑ์บางรายการในร้านค้าวีโอไอพีของคุณได้รับการตรวจสอบแล้ว บทวิจารณ์นี้จะรวมอยู่ในมาร์กอัปเริ่มต้น ซึ่งอาจทำให้เกิดข้อผิดพลาดต่อไปนี้:

31e6d408642cc8cc288f6fde6f6fb0d8
เนื่องจากมันถูกฮาร์ดโค้ดในไฟล์ธีมของ Magento เพื่อลบออก คุณต้องเขียนไฟล์นี้ใหม่:

 vendor/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
/**
 * ลิขสิทธิ์ 2016 Magento สงวนลิขสิทธิ์.
 * ดู COPYING.txt สำหรับรายละเอียดใบอนุญาต
 */

// @codingStandardsIgnoreFile

?>
<?php $url = $block->getReviewsUrl() . '#รีวิว'; ?>
<?php $urlForm = $block->getReviewsUrl() . '#รีวิว-แบบฟอร์ม'; ?>
<?php if ($block->getReviewsCount()): ?>
<?php $คะแนน = $block->getRatingSummary(); ?>
<div class="product-reviews-summary<?php echo !$rating ? ' no-rating' : ''?>">
    <?php ถ้า ($ เรต):?>
    <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>% ของ <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>&nbsp;<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

อ้อ และอย่าลืมรีเฟรชแคชเพื่อให้การเปลี่ยนแปลงทั้งหมดมีผล

ที่เป็นพื้นมัน

หากคุณมีคำถามเกี่ยวกับหัวข้อนี้ โปรดแสดงความคิดเห็นในส่วนด้านล่าง