سؤال

لقد أنشأت سمة المنتج الخاصة "الارتفاع" في Magento-backend. نوع الإدخال هو "نص" (لأنه لم يكن هناك نوع مماثل مثل "تعويم"). لاستخدام هذه السمة كمرشح كتبت ملحق صغير. في هذا الملحق، أتصفية المنتجات مع

giveacodicetagpre.

عندما يكون ارتفاع المنتجات 69 سم (69.00) والمرشح هو "<= 80 سم" (LTEQ 80.00) يعمل المرشح بشكل جيد. لكنه لا يعمل عند المرشح هو "<= 100 سم" (LTEQ 100.00). وذلك لأن Magento أنشأ السمة الارتفاع مثل varchar وهكذا فإن الوظيفة addattributtoFilter يجعل سلسلة مقارنة. في سلسلة مقارنة "69" أكبر من "100" لأن "6" أكبر من "1".

هل هناك طريقة لإخبار AddattributetoFilter أنها يجب أن تقارن القيم كأرقام بدلا من السلاسل؟

(أعرف أن أفضل طريقة ستكون حذف السمة وإنشاء واحدة جديدة مع نوع "تعويم" عبر الملحق. ولكن يتم الانتهاء من المتجر تقريبا ويحتوي بالفعل على منتجات حتى أرغب في تجنب إجراءات "كبيرة" في هذه الحالة.)

هل كانت مفيدة؟

المحلول

تعليق براتيك مع textpart

ستكون مقارنة mysql وليس php

توجهني إلى حل دون تغيير نوع الحقل.لقد غيرت التعليمات البرمجية الخاصة بي ل mage_catalog_block_product_list في الوظيفة _getproductCollection إلى:

giveacodicetagpre.

بالطبع لم أغير الرمز في القلب.لقد اكتشفت الوظيفة في امتدادي.بسبب Typecast، تتم مقارنة القيم كأرقام بدلا من السلاسل. إنه ليس أنظف حل ولكن حسنا بالنسبة لي في الوقت الحالي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top