المقدمة
إدارة صفحات الموقع الإلكتروني وشاشات التطبيق المحمول بمحتوى ديناميكي.
🎯 ماذا يفعل هذا الموديل؟
يتيح لك موديل Pages إنشاء واسترجاع وإدارة الصفحات (للمواقع الإلكترونية) أو الشاشات (للتطبيقات المحمولة) مع كل محتواها - النصوص، الصور، إعدادات تحسين محركات البحث، والسمات المخصصة.
فكر في الأمر كنظام إدارة محتوى - بدلاً من ترميز الصفحات بشكل ثابت، تديرها في OneEntry وتسترجعها ديناميكيًا في تطبيقك.
📖 شرح بسيط
تخيل أنك تبني موقعًا إلكترونيًا مع هذه الصفحات:
- 🏠 الصفحة الرئيسية - الصفحة الرئيسية
- 📄 من نحن - معلومات الشركة
- 📞 اتصل بنا - صفحة نموذج الاتصال
- 📝 المقالات - صفحات مقالات متعددة
- ❓ الأسئلة الشائعة - مركز المساعدة
بدلاً من إنشاء كل صفحة يدويًا في الكود الخاص بك، أنت:
- ✅ إنشاء الصفحات في لوحة إدارة OneEntry (مع المحتوى، الصور، تحسين محركات البحث)
- ✅ استرجاع الصفحات ديناميكيًا باستخدام هذا الموديل
- ✅ تحديث المحتوى دون إعادة نشر تطبيقك
- ✅ إدارة هيكل الصفحة، وعناوين URL، والبيانات الوصفية في مكان واحد
مثال من العالم الحقيقي:
بدون موديل الصفحات (ترميز ثابت):
- تحرير الصفحة الرئيسية → تغيير الكود → اختبار → ن شر → الانتظار ❌
- 10 صفحات = 10 ملفات كود لإدارتها ❌
- تغييرات تحسين محركات البحث = تغييرات في الكود ❌
مع موديل الصفحات (ديناميكي):
- تحرير الصفحة الرئيسية → تحديث في لوحة إدارة OneEntry → مباشرة ✅
- 100 صفحة = استرجاع ديناميكي من API ✅
- تغييرات تحسين محركات البحث = تحديث في لوحة الإدارة ✅
✨ المفاهيم الأساسية
ما هي الصفحة؟
الصفحة هي كيان محتوى يمثل:
- ويب: صفحة على موقعك الإلكتروني (مثل،
/about,/contact) - محمول: شاشة في تطبيقك (مثل، شاشة الملف الشخصي، شاشة الإعدادات)
تحتوي كل صفحة على:
- المحتوى - نصوص، صور، فيديوهات
- عنوان URL - عنوان الصفحة (مثل،
/about-us) - تحسين محركات البحث - عنوان ميتا، وصف، كلمات مفتاحية
- سمات مخصصة - أي حقول إضافية تحددها
- الحالة - منشورة، مسودة، مؤرشفة
- التعريب - دعم متعدد اللغات
أنواع الصفحات
يدعم OneEntry أنواعًا مختلفة من الصفحات:
| النوع | الوصف | مثال الاستخدام |
|---|---|---|
| صفحة عادية | صفحة ثابتة قياس ية | من نحن، اتصل بنا، الشروط |
| صفحة خطأ | صفحات خطأ 404، 500 | صفحة غير موجودة |
| صفحة نظام | صفحات خاصة | سياسة الخصوصية، الكوكيز |
| صفحة قالب | هيكل صفحة قابلة لإعادة الاستخدام | قالب مقالة المدونة |
هيكل الصفحة
يمكن تنظيم الصفحات في هيكل شجري:
📁 الشركة
├─ من نحن
├─ الفريق
└─ الوظائف
📁 المنتجات
├─ فئة المنتج 1
│ ├─ المنتج أ
│ └─ المنتج ب
└─ فئة المنتج 2
لماذا هذا مهم: يمكنك استرجاع جميع الصفحات في قسم أو بناء قوائم التنقل تلقائيًا.
📋 ما تحتاج إلى معرفته
طريقتان لتحديد الصفحات
| الطريقة | متى تستخدمها | المثال |
|---|---|---|
| حسب URL | يزور المستخدم صفحة معينة | /about-us, /contact |
| حسب ID | مراجع داخلية | 123, 456 |
أفضل ممارسة: استخدم id في الكود (لأنها لا تتغير)، استخدم عناوين URL للتوجيه.
هيكل الصفحة
كل صفحة تحتوي على هذه الحقول الرئيسية:
{
"id": 9, // معرف فريد
"parentId": 8, // معرف الوالد
"moduleFormConfigs": [], // تكوينات موديل النماذج
"pageUrl": "blog1", // عنوان URL للصفحة
"depth": 1, // العمق
"localizeInfos": { // معلومات التعريب
"title": "مدونة 1", // العنوان
"menuTitle": "مدونة 1", // عنوان القائمة
"htmlContent": "",
"plainContent": "",
},
"isVisible": true, // الرؤية
"blocks": [], // الكتل
"type": "common_page", // نوع الصفحة
"templateIdentifier": null, // معرف القالب
"attributeSetIdentifier": null, // معرف مجموعة السمات
"attributeValues": {}, // قيم السمات
"isSync": false, // المزامنة
}
التعريب (متعدد اللغات)
تدعم الصفحات لغات متعددة
نفس الصفحة، لغات مختلفة!
السمات المخصصة
يمكنك إضافة أي حقول إلى الصفحات باستخدام AttributesSets:
أمثلة:
- مقالات المدونة: المؤلف، تاريخ النشر، العلامات، الصورة المميزة
- صفحات المنتجات: السعر، SKU، المعرض، المواصفات
- صفحات الهبوط: صورة البطل، أزرار CTA، الشهادات
تعلم المزيد: انظر AttributesSets Module
📊 جدول مرجعي سريع - الطرق الشائعة
| الطريقة | ماذا تفعل | متى تستخدمها |
|---|---|---|
| getPages() | الحصول على جميع الصفحات (مقيدة) | بناء خريطة الموقع، قائمة بجميع الصفحات |
| getRootPages() | الحصول على جميع الصفحات الجذرية (مقيدة) | |
| getChildPagesByParentUrl() | الحصول على جميع الصفحات الفرعية حسب ParentUrl (مقيدة) | |
| getBlocksByPageUrl() | الحصول على كائنات PositionBlock للصفحة حسب URL. | تُستخدم الكتل لعرض محتوى الصفحة. |
| getConfigPageByUrl() | الحصول على إعدادات الصفحة حسب URL. | تُستخدم صفحات الإعدادات لتخزين إعدادات الصفحة. |
| getPageById() | الحصول على صفحة واحدة. | تُستخدم الصفحات لعرض الصفحة. |
| getPageByUrl() | الحصول على صفحة واحدة حسب URL. | تُستخدم الصفحات لعرض الصفحة. |
| searchPage() | بحث سريع عن الصفحات مع مخرجات محدودة. | البحث عن الصفحات حسب العنوان، الوصف، العلامات، إلخ. |
❓ الأسئلة الشائعة (FAQ)
ما الفرق بين URL و Marker؟
-
URL (
pageUrl) - عنوان الويب الذي يراه المستخدمون (مثل،/about-us,/contact)- يُستخدم للتوجيه
- سهل الاستخدام
-
Marker - معرف تقني في الكود (مثل،
homepage,contact_page)- يُستخدم في المراجع البرمجية
- تقني، وليس موجهًا للمستخدم
💡 ملاحظات مهمة
عناوين URL للصفحات والتوجيه
أفضل ممارسة للتوجيه:
✅ جيد: مسار شامل ديناميكي مثال Next.js: pages/[...slug].js
التخزين المؤقت للأداء
تقليل استدعاءات API باستخدام التخزين المؤقت.