مقدمة
استرجع تسميات حالة المنتج ("جديد"، "تخفيض"، "نفد من المخزون") لتصنيف وتصفية عناصر الكتالوج.
مزيد من المعلومات حول حالات المنتجات في لوحة إدارة OneEntry: https://doc.oneentry.cloud/docs/category/catalog
🎯 ماذا يفعل هذا الموديل؟
يمكن لموديل ProductStatuses تمكين شروط تصفية إضافية لعناصر الكتالوج بجانب الفلاتر المعتمدة على السمات الموجودة. تتيح حالات المنتجات لك إنشاء تسميات وفلاتر مخصصة للمنتجات - مثل "وصول جديد"، "الأكثر مبيعًا"، "تخفيض"، "نفد من المخزون" - لتنظيم وتصنيف المنتجات في كتالوج التجارة الإلكترونية الخاص بك.
تعمل الحالات كآليات تصفية إضافية لعناصر الكتالوج، حيث تعمل بالتزامن مع التصفية المعتمدة على السمات لتوفير خيارات تنظيم وتصنيف أكثر دقة لإدارة المنتجات.
فكر في الأمر كنظام تصنيف للمنتجات الخاص بك - تقوم بتعريف تسميات الحالة في لوحة إدارة OneEntry (الكتالوج > حالات المنتجات)، وتعيينها للمنتجات، واستخدامها لتصفية وتصنيف المنتجات بشكل ديناميكي.
📖 شرح بسيط
تحتاج كل متجر إلكتروني إلى تسليط الضوء على المنتجات الخاصة:
- 🆕 وصول جديد - منتجات تمت إضافتها مؤخرًا
- 🔥 الأكثر مبيعًا - عناصر شائعة
- 💰 تخفيض - منتجات مخفضة
- ⭐ مميز - منتجات بارزة
- 📦 نفد من المخزون - عناصر غير متاحة
- 🎁 إصدار محدود - منتجات حصرية
- 🚚 شحن مجاني - منتجات مع توصيل مجاني
المشكلات:
- 🔒 غير مرن - يحتاج إلى تغييرات في الكود لإضافة حالات جديدة
- 📊 صعب الإدارة - حقول منطقية متعددة
- 🔄 لا إعادة استخدام - لا يمكن إعادة استخدام منطق الحالة
- 🎨 غير متسق - أنماط شارات مختلفة في كل مكان
حل ProductStatuses:
الفوائد:
- 🔒 مرن - إضافة/إزالة الحالات في لوحة الإدارة
- 📊 سهل الإدارة - تعريفات حالة مركزية
- 🔄 قابل لإعادة الاستخدام - نفس الحالة للعديد من المنتجات
- 🎨 متسق - عرض شارات موحد
✨ المفاهيم الأساسية
ما هي حالة المنتج؟
حالة المنتج هي تسمية/علامة مخصصة للمنتجات:
- اسم الحالة - اسم العرض (مثل "وصول جديد"، "تخفيض")
- علامة الحالة - معرف فريد للتصفية
- لون/نمط - تمثيل بصري (مُعد في الإدارة)
- ارتباط المنتج - أي المنتجات تحمل هذه الحالة
- التصفية - استعلام عن المنتجات حسب الحالة
سير عمل حالة المنتج
1. Create status in admin panel
(e.g., "New Arrival")
↓
2. Assign status to products
(Select products in admin)
↓
3. Fetch statuses via SDK
(ProductStatuses.getProductStatuses())
↓
4. Display status badges on products
(Render badges in product listings)
↓
5. Filter products by status
(Products.getProducts({ statusId }))
لماذا تستخدم موديل ProductStatuses؟
| الفائدة | الوصف |
|---|---|
| تصفية مرنة | تصفية المنتجات حسب معايير مخصصة متعددة |
| شارات ديناميكية | عرض شارات بصرية دون ترميز ثابت |
| إدارة سهلة | إضافة/إزالة الحالات في لوحة الإدارة |
| تسميات قابلة لإعادة الاستخدام | تطبيق نفس الحالة على العديد من المنتجات |
| دعم متعدد اللغات | أسماء الحالات محلية حسب اللغة |
| تصميم مخصص | تعريف الألوان والأنماط لكل حالة |
📋 ما تحتاج إلى معرفته
تُنشأ حالات المنتجات في لوحة الإدارة
لا يمكنك إنشاء حالات عبر SDK - يتم إنشاؤها في لوحة إدارة OneEntry:
OneEntry Admin Panel → Catalog → Product Statuses → Create Status → Set Name/Marker → Save
عملية الإنشاء:
- قدم اسمًا - تعيين الحالة (مطلوب)
- قدم علامة - معرف فريد (مطلوب، أحرف وأرقام لاتينية فقط)
- انقر على "إنشاء" لإنهاء العملية
قيود العلامة:
- أحرف لاتينية فقط (a-z, A-Z)
- أرقام (0-9)
- الرموز (_) و(-)
- لا يُسمح بأحرف خاصة أو مسافات
إدارة الحالة:
- عرض القائمة - جدول مع أعمدة الاسم، العلامة، والإجراءات
- تعديل الحالة - تعديل حقول الاسم والعلامة
- حذف الحالة - إزالة الحالات غير المستخدمة
- إعادة ترتيب - سحب وإفلات لتغيير ترتيب العرض (يؤثر على حقل
sortOrder)
SDK مخصص لـ استرجاع الحالات وتصفية المنتجات، وليس لإنشاء الحالات.
تعيين الحالة
تُعين الحالات للمنتجات في لوحة الإدارة:
OneEntry Admin Panel → Products → Edit Product → Assign Statuses → Save
في SDK: تحتوي المنتجات على مصفوفة statusIds مع معرفات الحالة المعينة:
const product = await Products.getProductById(123);
console.log(product.statusIds); // [1, 2] - Status IDs
التصفية حسب الحالة
استخدم معرف الحالة لتصفية المنتجات
دعم متعدد اللغات
تُترجم أسماء الحالات تلقائيًا
💡 ملاحظات هامة
تُنشأ الحالات في لوحة الإدارة
تذكر: SDK مخصص لـ استرجاع الحالات، وليس لإنشائها.
لإنشاء/تعديل الحالات: استخدم لوحة إدارة OneEntry.
واجهة قائمة الحالات
تظهر لوحة الإدارة جميع الحالات في جدول مع ثلاثة أعمدة:
- الاسم - تعيين الحالة
- العلامة - معرف فريد
- الإجراءات - عمليات التعديل والحذف، بالإضافة إلى إعادة ترتيب السحب والإفلات
التحقق من العلامة
مهم: تساعد طريقة validateMarker() في التحقق مما إذا كانت العلامة موجودة بالفعل قبل إنشائها/استخدامها.
قيود العلامة:
- أحرف أبجدية رقمية لاتينية فقط (a-z, A-Z, 0-9)
- يُسمح بالرموز (_) و(-)
- لا مسافات أو أحرف خاصة
- يجب أن تكون فريدة عبر جميع الحالات
حالات متعددة لكل منتج
يمكن أن تحتوي المنتجات على حالات متعددة في نفس الوقت (مثل "وصول جديد" + "تخفيض")
الحالة مقابل السمات
ProductStatuses تختلف عن سمات المنتج:
| الميزة | ProductStatuses | السمات |
|---|---|---|
| الغرض | تسميات/شارات/فلاتر | خصائص المنتج |
| أمثلة | "جديد"، "تخفيض"، "مميز" | اللون، الحجم، المادة |
| قيم متعددة | نعم (حالات متعددة) | نعم (سمات متعددة) |
| التصفية | بسيطة (حسب معرف الحالة) | معقدة (نطاقات، قيم) |
| حالة الاستخدام | تسميات تسويقية | مواصفات المنتج |
أفضل ممارسة: استخدم الحالات للتسميات التسويقية، والسمات لخصائص المنتج.
📊 جدول مرجعي سريع
| الطريقة | الوصف | حالة الاستخدام |
|---|---|---|
| getProductStatuses() | الحصول على جميع حالات المنتجات | عرض جميع الحالات المتاحة |
| getProductsByStatusMarker() | الحصول على حالة المنتج حسب العلامة | استرجاع الحالة حسب المعرف |
| validateMarker() | التحقق مما إذا كانت العلامة موجودة | التحقق من العلامة قبل الاستخدام |
❓ الأسئلة الشائعة (FAQ)
ما الفرق بين حالات المنتجات وسمات المنتجات؟
حالات المنتجات هي تسميات تسويقية (جديد، تخفيض، مميز) للتصفية والتصنيف، بينما السمات هي مواصفات المنتج (اللون، الحجم، المادة). استخدم الحالات للعلامات الترويجية والسمات لخصائص المنتج.
هل يمكن أن يحتوي المنتج على حالات متعددة في نفس الوقت؟
نعم! يمكن أن تحتوي المنتجات على حالات متعددة في نفس الوقت. على سبيل المثال، يمكن أن يكون المنتج "وصول جديد" و"تخفيض" في نفس الوقت. تحتوي مصفوفة statusIds في كائن المنتج على جميع معرفات الحالات المعينة.
كيف يمكنني تصفية المنتجات حسب الحالة؟
استخدم طرق موديل المنتجات مع فلاتر الحالة. مرر معرف الحالة أو العلامة في استعلامك لاسترجاع المنتجات ذات الحالات المحددة. يمكنك أيضًا دمج فلاتر حالات متعددة.
كيف يمكنني التحقق من علامة قبل إنشاء حالة؟
استخدم طريقة validateMarker() للتحقق مما إذا كانت العلامة موجودة بالفعل. يساعد ذلك في منع العلامات المكررة ويضمن أن تتبع علامتك قواعد التسمية (أحرف لاتينية، أرقام، شرطة سفلية، شرطة فقط).
هل يمكنني تغيير ترتيب الحالات المعروضة؟
نعم! في لوحة الإدارة، يمكنك سحب وإفلات الحالات لإعادة ترتيبها. يؤثر ذلك على حقل sortOrder ويحدد أولوية العرض في تطبيقك.
كيف يمكنني إضافة تصميم مخصص لشارات الحالة؟
استرجع جميع الحالات، وأنشئ خريطة من علامات الحالة إلى فئات CSS أو أنماط مضمنة في كود الواجهة الأمامية الخاص بك. طبق هذه الأنماط عند عرض شارات المنتجات بناءً على مصفوفة statusIds الخاصة بالمنتج.
🎓 أفضل الممارسات
- استخدم علامات وصفية -
new_arrival، وليسstatus1 - حدد الألوان بشكل متسق - استخدم لوحة ألوان العلامة التجارية
- حدد حالات نشطة - لا تفرط في إرباك المستخدمين بالعديد من الشارات
- اجعل أسماء الحالات قصيرة - "تخفيض" أفضل من "منتجات في التخفيض"
- استخدم الحالة للتصفية - اجعل الحالات قابلة للتصفية في واجهة المستخدم
- قم بتخزين الحالات مؤقتًا - نادرًا ما تتغير، خزّنها لأداء أفضل
- عرض حالات متعددة - عرض جميع الشارات ذات الصلة على المنتجات
- استخدم الحالة للفرز - فرز حسب حالة "مميز" أولاً
تعريف موديل ProductStatuses
يدير موديل ProductStatuses الحالات التي تعمل كفلاتر إضافية بجانب الشروط المحددة بواسطة السمات. تتيح حالات المنتجات شروط تصفية إضافية لعناصر الكتالوج في منصة OneEntry، وتعمل بالتزامن مع التصفية المعتمدة على السمات.
const { ProductStatuses } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
🔗 الوثائق ذات الصلة
- لوحة إدارة OneEntry - حالات المنتجات - الوثائق الرسمية للوحة الإدارة
- موديل المنتجات - إدارة المنتجات مع الحالات
- موديل السمات - سمات المنتج مقابل الحالات
- موديل GeneralTypes - أنواع وفئات المنتجات
- موديل Locales - أسماء الحالات متعددة اللغات