المقدمة
🎯 ماذا يفعل هذا الوحدة؟
تتيح لك وحدة GeneralTypes استرجاع أنواع الكيانات على مستوى النظام - أنواع الصفحات، أنواع النماذج، أنواع كتل المنتجات، والمزيد - التي تحدد هيكل وفئات المحتوى الخاص بك في OneEntry.
فكر في الأمر كنظام تصنيف المحتوى الخاص بك - يستخدم OneEntry الأنواع لتنظيم أنواع مختلفة من الصفحات (الصفحة الرئيسية، منشور المدونة، صفحة المنتج)، النماذج (اتصال، استبيان)، الكتل (بطل، معرض)، والمنتجات (مادية، رقمية)، وتتيح لك هذه الوحدة جلب جميع الأنواع المتاحة لبناء واجهات ديناميكية.
📖 شرح بسيط
في OneEntry، كل كيان له نوع يحدد غرضه وهيكله:
- أنواع الصفحات:
homepage,blog_post,product_page,landing_page - أنواع النماذج:
contact_form,survey,registration,feedback - أنواع كتل المنتجات:
hero_section,image_gallery,text_block,video_embed - أنواع المنتجات:
physical_product,digital_product,service,subscription
توفر وحدة GeneralTypes القائمة الكاملة لجميع الأنواع المكونة في مشروع OneEntry الخاص بك، بحيث يمكنك:
✅ بناء قوائم منسدلة ديناميكية - دع المسؤولين يختارون نوع الصفحة عند إنشاء المحتوى
✅ تصفية المحتوى - عرض صفحات "blog_post" فقط أو نماذج "contact_form"
✅ التحقق من صحة البيانات - تحقق مما إذا كان النوع موجودًا قبل إنشاء كيان
✅ إنشاء منطق قائم على النوع - عرض واجهة مستخدم مختلفة بناءً على نوع الصفحة
مثال من العالم الحقيقي:
Your blog app fetches all page types:
- "homepage" → Renders featured posts slider
- "blog_post" → Renders article layout with comments
- "about_page" → Renders team member cards
- "contact_page" → Renders contact form
✨ المفاهيم الأساسية
هيكل نظام الأنواع
ينظم OneEntry المحتوى باستخدام نظام نوع حيث ينتمي كل كيان إلى فئة:
| الكيان | أنواع الأمثلة | الغرض |
|---|---|---|
| الصفحات | homepage, blog_post, product_page, landing_page | تحديد تخطيطات الصفحات والوظائف |
| النماذج | contact_form, survey, registration, feedback | تصنيف أغراض النماذج المختلفة |
| كتل المنتجات | hero_section, gallery, text_block, video_embed | كتل بناء لصفحات المنتجات |
| المنتجات | physical_product, digital_product, service, subscription | تصنيف مخزون المنتجات |
هيكل كيان النوع
كل نوع يتم إرجاعه بواسطة GeneralTypes.getAllTypes() له هذا الهيكل:
interface GeneralTypeEntity {
id: number; // Unique numeric ID (e.g., 1, 2, 3)
type: string; // Type name (e.g., "blog_post", "contact_form")
}
متى تستخدم GeneralTypes
| حالة الاستخدام | لماذا GeneralTypes؟ |
|---|---|
| بناء واجهة إدارة CMS | ملء القوائم المنسدلة بالأنواع المتاحة |
| إنشاء فلاتر الأنواع | دع المستخدمين يقومون بتصفية المحتوى حسب النوع (منشورات المدونة مقابل صفحات الهبوط) |
| التحقق من صحة إنشاء الكيانات | تحقق مما إذا كان النوع موجودًا قبل إنشاء صفحة/نموذج |
| التوجيه الديناميكي | توجيه أنواع الصفحات المختلفة إلى مكونات مختلفة |
| أذونات قائمة على النوع | السماح لأدوار مختلفة بالوصول إلى أنواع محتوى مختلفة |
📋 ما تحتاج إلى معرفته
الأنواع مكونة في لوحة إدارة OneEntry
لا يمكنك إنشاء الأنواع عبر SDK - الأنواع محددة في لوحة إدارة OneEntry عند تكوين مشروعك. وحدة GeneralTypes تسترجع فقط قائمة الأنواع الموجودة.
كيف يتم إنشاء الأنواع:
OneEntry Admin Panel → Settings → Content Types → Add Page Type → "blog_post"
بمجرد إنشائها، يمكنك جلبها
الأنواع مقابل العلامات مقابل المعرفات
تمييز مهم:
| المعرف | ما هو | مثال | الأفضل للاستخدام |
|---|---|---|---|
| النوع | فئة/تصنيف الكيان | "blog_post" | التصفية والتجميع |
| العلامة | معرف فريد قابل للقراءة البشرية | "my_about_page" | جلب كيانات محددة |
| المعرف | معرف رقمي في قاعدة البيانات | 42 | للاستخدام الداخلي في النظام |
getAllTypes() ترجع جميع الأنواع عبر جميع الكيانات
تُرجع الطريقة قائمة مجمعة من الأنواع من:
- الصفحات
- النماذج
- كتل المنتجات
- المنتجات
- أي كيانات أخرى في مشروع OneEntry الخاص بك
لا يوجد تصفية مدمجة حسب فئة الكيان، لذا ستحتاج إلى التصفية يدويًا:
الأنواع حساسة لحالة الأحرف
استخدم دائمًا مطابقة الحالة الدقيقة عند العمل مع الأنواع
استخدم الأنواع لتقديم محتوى ديناميكي
تمكن الأنواع من محتوى متعدد الأشكال - منطق عرض مختلف بناءً على النوع:
📊 جدول مرجعي سريع
| الطريقة | الوصف | حالة الاستخدام |
|---|---|---|
| getAllTypes() | يسترجع جميع الأنواع العامة في النظام | ملء القوائم المنسدلة، التحقق من الأنواع |
هيكل GeneralTypeEntity:
{
id: number; // Unique numeric ID
type: string; // Type name (e.g., "blog_post")
}
❓ الأسئلة الشائعة (FAQ)
كيف يمكنني إنشاء أنواع جديدة؟
لا يمكنك إنشاء أنواع عبر SDK. يتم إنشاء الأنواع في لوحة إدارة OneEntry:
1. Log in to OneEntry Admin Panel
2. Go to Settings → Content Types
3. Click "Add Page Type" (or Form Type, Product Type, etc.)
4. Enter type name: "blog_post"
5. Save
Now fetch it via SDK:
const types = await GeneralTypes.getAllTypes();
// Returns: [{ id: 1, type: "blog_post" }, ...]
كيف يمكنني تصفية الأنواع حسب الكيان (الصفحات، النماذج، المنتجات)؟
تُرجع طريقة getAllTypes() جميع الأنواع عبر جميع الكيانات. تحتاج إلى التصفية يدويًا
هل يمكنني تحديث أو حذف الأنواع عبر SDK؟
لا. وحدة GeneralTypes هي للقراءة فقط. تتم جميع إدارة الأنواع في لوحة إدارة OneEntry.
ما الفرق بين معرف النوع واسم النوع؟
متى تستخدم كل منهما:
| الحقل | استخدم من أجل | مثال |
|---|---|---|
id | مراجع النظام الداخلية | علاقات قاعدة البيانات |
type | منطق الكود الخاص بك والمقارنات | if (page.type === 'blog_post') |
أفضل ممارسة: استخدم دائمًا سلسلة type في كودك، وليس رقم id (يمكن أن تتغير المعرفات بين البيئات).
هل يمكنني تخزين قائمة الأنواع في الذاكرة المؤقتة؟
نعم! الأنواع نادرًا ما تتغير، لذا يُوصى بالتخزين المؤقت
كيف يمكنني التعامل مع الأنواع المفقودة بشكل سلس؟
تحقق دائمًا من وجود نوع قبل استخدامه
هل يمكنني استخدام الأنواع للتفويض/الأذونات؟
نعم! يمكنك تنفيذ التحكم في الوصول القائم على النوع
💡 ملاحظات مهمة
⚠️ الأنواع خاصة بالمشروع
الأنواع مكونة في لوحة إدارة OneEntry الخاصة بك وتختلف بين المشاريع. لا توجد أنواع "افتراضية" عالمية - دائمًا اجلب القائمة ديناميكيًا:
// ❌ Don't hardcode types
const pageTypes = ['homepage', 'blog_post', 'product_page'];
// ✅ Fetch types dynamically
const allTypes = await GeneralTypes.getAllTypes();
const pageTypes = allTypes.filter(t => t.type.endsWith('_page'));
🔒 وحدة للقراءة فقط
تقوم وحدة GeneralTypes فقط بقراءة الأنواع. تتم جميع عمليات إنشاء وتعديل وحذف الأنواع في لوحة إدارة OneEntry.
🎓 أفضل الممارسات
- اجلب الأنواع ديناميكيًا - لا تقم بتشفير قوائم الأنواع
- قم بتخزين الأنواع في الذاكرة المؤقتة - نادرًا ما تتغير، خزّن لأداء أفضل
- استخدم سلاسل الأنواع، وليس المعرفات - أسماء الأنواع مستقرة عبر البيئات
- تحقق من وجود الأنواع - تحقق مما إذا كان النوع صالحًا قبل الاستخدام
- استخدم اتفاقيات التسمية - تجعل التصفية أسهل
- نفذ عرض احتياطي - تعامل مع الأنواع غير المعروفة بشكل سلس
- وثق أنواعك - احتفظ بقائمة من الأنواع وأغراضها
- استخدم TypeScript لسلامة النوع - استفد من واجهة
GeneralTypeEntity
تعريف وحدة GeneralTypes
وحدة GeneralTypes في منصة OneEntry مصممة لإدارة واسترجاع الأنواع العامة المستخدمة داخل النظام. باستخدام دالة defineOneEntry، يمكنك إنشاء كائن GeneralTypes للتفاعل مع هذه الأنواع.
الطريقة الرئيسية المتاحة هي getAllTypes، التي تسترجع جميع كائنات نوع GeneralTypeEntity من واجهة برمجة التطبيقات.
تُرجع هذه الطريقة وعدًا يتم حله إلى مصفوفة من كائنات GeneralTypeEntity، كل منها يحتوي على id و type.
تغطي الأنواع أغراضًا متنوعة، مثل تخطيطات الصفحات، النماذج، كتل المنتجات، والمزيد، مما يوفر مرونة لاحتياجات إدارة المحتوى المختلفة.
const { GeneralTypes } = defineOneEntry( "your-project-url", { "token": "your-app-token" });