فلتر حسب المتغير
مكون فلتر منتجات متصل بـ Shopify لـ Framer يجلب جميع خيارات المتغيرات من الكتالوج ويعرضها كأزرار فلتر قابلة للنقر، مع حفظ التحديد النشط فيlocalStorage لاستخدامه من قِبل مكونات أخرى.
ما الذي يفعله
يجلب فلتر حسب المتغير جميع متغيرات المنتجات من متجر Shopify عبر Storefront API، ويجمّعها حسب اسم الخيار (مثل الحجم، اللون، نمط الإطار)، ويعرض كل قيمة فريدة كزر فلتر. عند نقر المستخدم على زر، يحفظ المكون التحديد فيlocalStorage ويبث حدث تخزين — مما يتيح لمكون قائمة المنتجات في نفس الصفحة تصفية نتائجه بشكل تفاعلي.
السلوكيات الرئيسية:
- يجلب المتغيرات من Shopify — عند التحميل، يستعلم عن Shopify Storefront API للحصول على جميع المنتجات ومتغيراتها. يعود إلى بيانات معاينة وهمية إذا لم تكن بيانات اعتماد Shopify متاحة (مثل داخل لوحة Framer).
- يجمّع حسب اسم الخيار — تُجمَّع خيارات المتغيرات تلقائيًا وتُصنَّف حسب اسم خيار Shopify (مثل جميع قيم الحجم معًا، وجميع قيم اللون معًا).
- تحديد فردي أو متعدد — يمكن تكوينه للسماح بتحديد فلتر واحد في كل مرة أو فلاتر متعددة في آنٍ واحد.
- منطق فلتر AND/OR — تحديد قيم متعددة ضمن مجموعة الخيار نفسها يستخدم منطق OR (مثل Small أو Medium). تحديد قيم عبر مجموعات خيارات مختلفة يستخدم منطق AND (مثال: الحجم: Small AND اللون: Black).
- يحفظ التحديد في
localStorage— تُكتَب وسوم الفلتر النشط ومعرّفات المنتجات المطابقة كلاهما فيlocalStorageوتُبقى متزامنة عبر تفاعلات الصفحة ونسخ المكونات. - يبث أحداث التخزين — يطلق أحداث
storageحتى تتفاعل المكونات الأخرى (مثل شبكة المنتجات) مع تغييرات الفلتر دون إعادة تحميل الصفحة. - تسمية اختيارية — يمكن عرض تسمية نصية فوق أزرار الفلتر.
- آمن للمعاينة — يعرض خيارات الحجم واللون الوهمية في لوحة Framer عندما لا تتوفر بيانات اعتماد Shopify.
ضوابط الخصائص
جميع الضوابط متاحة في لوحة Framer اليمنى عند تحديد المكون.Initial
Label
Show Label
Product Limit
Variants Per Product
Fetch All Variants
Enable Multi-Select
Filter by Product ID
Layout
Gap
Styles
يتحكم في المظهر البصري لأزرار الفلتر.ملاحظات
- يتطلب هذا المكون تعيين
window.DOMAINوwindow.ACCESSTOKENعالميًا على الصفحة لجلب البيانات المباشرة من Shopify. بدونها، يعرض خيارات الحجم واللون الوهمية لمعاينة اللوحة. - تُحفظ حالة الفلتر في
localStorageتحت مفتاحين:variantFilter(الوسوم المحددة) وvariantFilterProductIds(معرّفات المنتجات المطابقة). يمكن لأي مكون آخر في الصفحة قراءة هذين المفتاحين لتطبيق الفلتر. - يطلق المكون حدث
storageعلىwindowفي كل مرة يتغير فيها الفلتر، حتى تتحدث مكونات قائمة المنتجات بشكل تفاعلي دون إعادة تحميل الصفحة. - منطق AND/OR: تُجمَع قيم متعددة ضمن نفس الخيار (مثل حجمين) بـ OR. تُجمَع القيم عبر خيارات مختلفة (مثل حجم ولون) بـ AND.
- في وضع Fetch All Variants، يتنقل المكون عبر حتى 100 صفحة من المنتجات. قد يستغرق هذا لحظة عند التحميل الأول للكتالوجات الكبيرة جدًا.