إخفاء وظيفة المقتطفات المنسقة الافتراضية في Magento 2
نشرت: 2016-09-08إذا وصلت إلى هذه الصفحة ، فيجب أن تعرف ما هي المقتطفات المنسقة وكيف تعمل في Magento 2.
بشكل عام ، يعد ترميز البيانات المنظمة ميزة رائعة للإصدار الثاني من منصة التجارة الإلكترونية. تمت إضافة Schema.org كنموذج افتراضي ، والذي يسمح للتجار بتزويد نتائج بحث مواقعهم بالسعر أو التقييم أو المراجعات أو قيم الترميز الأخرى ببضع نقرات فقط.
ومع ذلك ، هناك بعض الحالات التي قد ترغب فيها في تعطيل وظيفة المقتطفات المنسقة الافتراضية. يمكن أن تكون أسباب ذلك:
- مشكلات تنسيق السعر - حاليًا ، لا يتوافق التنسيق المستخدم بواسطة Magento 2 مع أحدث متطلبات المخطط ، والتي قد تؤدي إلى حدوث الخطأ التالي:
- تتعارض مع بعض امتدادات ترميز البيانات المنظمة ثلاثية الأبعاد ،
- مشاكل مع منتجات Google - قد يأتي هذا النوع من المنتجات بسعر مختلف (مثل MSRP) ، والذي بدوره يؤدي إلى تعارض مع المقتطفات المنسقة الافتراضية لـ Magento 2.
لسوء الحظ ، حتى الإصدار 2.1.1 ، من المستحيل تعطيل وظيفة المقتطفات المنسقة الافتراضية عبر إعدادات التهيئة . ومن ثم ، فأنت بحاجة إلى بعض الحلول البديلة.
في هذه المقالة ، سأخبرك بكيفية تعطيل ترميز البيانات المنظمة الافتراضي عن طريق إنشاء ملحق صغير ولكنه مفيد للغاية لـ Magento 2.
أولاً ، لنقم بإنشاء بيئة الامتداد.
إنشاء الامتداد
دعنا نسميها " 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>
مهم
لا تنس تحديث ذاكرة التخزين المؤقت في كل مرة تقوم فيها بإجراء تغيير على الملف.
في هذا الجزء من الكود ، سنقوم بتغيير المعلمات المستخدمة لتنسيق ترميز البيانات المنظمة. بعد تنفيذ ذلك ، ستحتوي الترميز على عرضنا فقط ، على سبيل المثال:
كما ترى ، بعد هذا التلاعب ، تتوقف 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 أي بيانات يمكن استخدامها في المقتطفات المنسقة هنا:
وهناك لمسة أخيرة متبقية.
لتعطيل المقتطفات المنسقة الافتراضية لجميع أنواع المنتجات ، تحتاج إلى إضافة ملفين آخرين. هذا واحد للمنتجات القابلة للتنزيل:
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 بالفعل ، فسيتم تضمين هذه المراجعة في الترميز الافتراضي. قد يؤدي هذا إلى تشغيل الخطأ التالي:
نظرًا لأنه تم ترميزه بشكل ثابت في ملفات موضوع 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
آه ، ولا تنس تحديث ذاكرة التخزين المؤقت لجعل جميع التغييرات سارية المفعول.
هذا هو الأساس.
إذا كان لديك أي أسئلة حول هذا الموضوع ، فلا تتردد في ترك تعليقاتك في القسم أدناه.