إخفاء وظيفة المقتطفات المنسقة الافتراضية في Magento 2

نشرت: 2016-09-08

إذا وصلت إلى هذه الصفحة ، فيجب أن تعرف ما هي المقتطفات المنسقة وكيف تعمل في Magento 2.

بشكل عام ، يعد ترميز البيانات المنظمة ميزة رائعة للإصدار الثاني من منصة التجارة الإلكترونية. تمت إضافة Schema.org كنموذج افتراضي ، والذي يسمح للتجار بتزويد نتائج بحث مواقعهم بالسعر أو التقييم أو المراجعات أو قيم الترميز الأخرى ببضع نقرات فقط.

ومع ذلك ، هناك بعض الحالات التي قد ترغب فيها في تعطيل وظيفة المقتطفات المنسقة الافتراضية. يمكن أن تكون أسباب ذلك:

  • مشكلات تنسيق السعر - حاليًا ، لا يتوافق التنسيق المستخدم بواسطة Magento 2 مع أحدث متطلبات المخطط ، والتي قد تؤدي إلى حدوث الخطأ التالي: 1
  • تتعارض مع بعض امتدادات ترميز البيانات المنظمة ثلاثية الأبعاد ،
  • مشاكل مع منتجات Google - قد يأتي هذا النوع من المنتجات بسعر مختلف (مثل MSRP) ، والذي بدوره يؤدي إلى تعارض مع المقتطفات المنسقة الافتراضية لـ Magento 2.

لسوء الحظ ، حتى الإصدار 2.1.1 ، من المستحيل تعطيل وظيفة المقتطفات المنسقة الافتراضية عبر إعدادات التهيئة . ومن ثم ، فأنت بحاجة إلى بعض الحلول البديلة.

في هذه المقالة ، سأخبرك بكيفية تعطيل ترميز البيانات المنظمة الافتراضي عن طريق إنشاء ملحق صغير ولكنه مفيد للغاية لـ Magento 2.

أولاً ، لنقم بإنشاء بيئة الامتداد.

  1. إنشاء الامتداد

دعنا نسميها " Owner_Custom " (على الرغم من أنه يمكنك اختيار أي اسم تريده).

بعد ذلك ، انتقل إلى التطبيق / الرمز وأنشئ مجلد " مالك " هناك. داخل هذا المجلد ، أنشئ مجلدًا جديدًا باسم " Custom " - سيكون المجلد الجذر لملحقنا.

من هنا نقوم بإنشاء الملفات التالية:

ملف: registration.php

<؟ php
\ Magento \ Framework \ Component \ ComponentRegistrar :: تسجيل (
    \ Magento \ Framework \ مكون \ ComponentRegistrar :: MODULE ،
    "Owner_Custom"،
    __DIR__
) ؛

FILE: 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">
<اسم الوحدة النمطية = "Owner_Custom" setup_version = "0.0.1" />
</config>

في الخطوة التالية ، قم بتثبيت الامتداد عبر وحدة التحكم:

إعداد php bin / magento: الترقية - الاحتفاظ به

تم الانتهاء من كل شيء ، والآن يمكن العثور على امتدادنا في قائمة جميع الوحدات تحت لوحة المسؤول:

php bin / magento module: status

2. إزالة ترميز البيانات الافتراضية

عندما تكون بيئة الامتداد جاهزة ، يمكننا البدء في إنشاء ملف تخطيط ، حيث يحدث كل السحر.

FILE: view / frontend / layout /atalog_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">
    <الجسم>
        <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">
    <الجسم>
        <attribute name = "itemtype" remove = "true" />
        <attribute name = "itemscope" remove = "true" />
        <referenceBlock name = "product.price.final">
            <الحجج>
                <اسم الوسيطة = "zone" xsi: type = "منطقية"> خطأ </ وسيطة>
            </ الحجج>
        </referenceBlock>
    </body>
</page>

بإضافة هذه القطعة ، قمنا بإزالة المعلمة التي كانت مسؤولة عن ترميز هذه الكتلة على أنها "عرض". نتيجة لذلك ، لا تكتشف أدوات Google أي بيانات يمكن استخدامها في المقتطفات المنسقة هنا:

3

وهناك لمسة أخيرة متبقية.

لتعطيل المقتطفات المنسقة الافتراضية لجميع أنواع المنتجات ، تحتاج إلى إضافة ملفين آخرين. هذا واحد للمنتجات القابلة للتنزيل:

FILE: view / frontend / layout /atalog_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">
    <الجسم>
        <referenceContainer name = "product.price.final.copy">
            <الحجج>
                <اسم الوسيطة = "zone" xsi: type = "منطقية"> خطأ </ وسيطة>
            </ الحجج>
        </referenceContainer>
    </body>
</page>

وهذا لمنتجات الحزمة:

FILE: view / frontend / layout /atalog_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">
    <الجسم>
        <referenceBlock name = "product.price.render.bundle.customization">
            <الحجج>
                <اسم الوسيطة = "zone" xsi: type = "منطقية"> خطأ </ وسيطة>
            </ الحجج>
        </referenceBlock>
    </body>
</page>

مهم

لاحظ أنه إذا تمت مراجعة بعض المنتجات الموجودة في متجر Magento بالفعل ، فسيتم تضمين هذه المراجعة في الترميز الافتراضي. قد يؤدي هذا إلى تشغيل الخطأ التالي:

31e6d408642cc8cc288f6fde6f6fb0d8
نظرًا لأنه تم ترميزه بشكل ثابت في ملفات موضوع Magento ، لحذفه ، يجب عليك إعادة كتابة هذا الملف:

 vendor / magento / module-review / view / frontend / قوالب / helper / abstract.phtml

انسخ محتوى الملف إلى:

 app / design / frontend / [package] / [theme] /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 $ rating = $ block-> getRatingSummary ()؛ ؟>
<div class = "product-reviews-abstract <؟ php echo! $ rating؟ 'no-rating': ''؟>">
    <؟ php if ($ rating):؟>
    <div class = "rating-abstract">
         <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 __ ('أضف تعليقك')؟> </ a >
    </div>
</div>
<؟ php elseif ($ block-> getDisplayIfEmpty ()):؟>
<div class = "product-reviews-abstract فارغ">
    <div class = "reviews-Actions">
        <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

آه ، ولا تنس تحديث ذاكرة التخزين المؤقت لجعل جميع التغييرات سارية المفعول.

هذا هو الأساس.

إذا كان لديك أي أسئلة حول هذا الموضوع ، فلا تتردد في ترك تعليقاتك في القسم أدناه.