انتقل إلى المحتوى الرئيسي

المقدمة

إدارة صفحات الموقع الإلكتروني وشاشات التطبيق المحمول بمحتوى ديناميكي.

🎯 ماذا يفعل هذا الموديل؟

يتيح لك موديل Pages إنشاء واسترجاع وإدارة الصفحات (للمواقع الإلكترونية) أو الشاشات (للتطبيقات المحمولة) مع كل محتواها - النصوص، الصور، إعدادات تحسين محركات البحث، والسمات المخصصة.

فكر في الأمر كنظام إدارة محتوى - بدلاً من ترميز الصفحات بشكل ثابت، يمكنك إدارتها في OneEntry واسترجاعها ديناميكيًا في تطبيقك.

📖 شرح بسيط

تخيل أنك تبني موقعًا إلكترونيًا مع هذه الصفحات:

  • 🏠 الصفحة الرئيسية - الصفحة الرئيسية
  • 📄 من نحن - معلومات الشركة
  • 📞 اتصل بنا - صفحة نموذج الاتصال
  • 📝 المقالات - صفحات مقالات متعددة
  • الأسئلة الشائعة - مركز المساعدة

بدلاً من إنشاء كل صفحة يدويًا في الكود الخاص بك، يمكنك:

  • ✅ إنشاء الصفحات في لوحة إدارة OneEntry (مع المحتوى، الصور، تحسين محركات البحث)
  • ✅ استرجاع الصفحات ديناميكيًا باستخدام هذا الموديل
  • ✅ تحديث المحتوى دون إعادة نشر تطبيقك
  • ✅ إدارة هيكل الصفحة، وعناوين URL، والبيانات الوصفية في مكان واحد

مثال من العالم الحقيقي:

Without Pages Module (hardcoded):
- Edit homepage → Change code → Test → Deploy → Wait ❌
- 10 pages = 10 code files to manage ❌
- SEO changes = code changes ❌

With Pages Module (dynamic):
- Edit homepage → Update in OneEntry admin → Live instantly ✅
- 100 pages = fetch dynamically from API ✅
- SEO changes = update in admin panel ✅

✨ المفاهيم الأساسية

ما هي الصفحة؟

الصفحة هي كيان محتوى يمثل:

  • ويب: صفحة على موقعك الإلكتروني (مثل: /about, /contact)
  • محمول: شاشة في تطبيقك (مثل: شاشة الملف الشخصي، شاشة الإعدادات)

تحتوي كل صفحة على:

  • المحتوى - نصوص، صور، فيديوهات
  • عنوان URL - عنوان الصفحة (مثل: /about-us)
  • تحسين محركات البحث - عنوان ميتا، وصف، كلمات مفتاحية
  • سمات مخصصة - أي حقول إضافية تحددها
  • الحالة - منشورة، مسودة، مؤرشفة
  • التعريب - دعم متعدد اللغات

أنواع الصفحات

يدعم OneEntry أنواعًا مختلفة من الصفحات:

النوعالوصفمثال الاستخدام
صفحة شائعةصفحة ثابتة قياسيةمن نحن، اتصل بنا، الشروط
صفحة كتالوجصفحات الكتالوجصفحات الكتالوج
صفحة خارجيةصفحات خارجيةصفحات خارجية
صفحة خطأصفحات خطأ 404، 500صفحة غير موجودة

هيكل الصفحة

يمكن تنظيم الصفحات في هيكل شجري:

📁 Company
├─ About Us
├─ Team
└─ Careers

📁 Products
├─ Product Category 1
│ ├─ Product A
│ └─ Product B
└─ Product Category 2

لماذا يهم هذا: يمكنك استرجاع جميع الصفحات في قسم أو بناء قوائم التنقل تلقائيًا.

📋 ما تحتاج لمعرفته

طريقتان لتحديد الصفحات

الطريقةمتى تستخدمهامثال
حسب URLيزور المستخدم صفحة معينة/about-us, /contact
حسب IDمراجع داخلية123, 456

أفضل ممارسة: استخدم id في الكود (لأنها لا تتغير)، استخدم عناوين URL للتوجيه.

هيكل الصفحة

كل صفحة تحتوي على هذه الحقول الرئيسية:

{
"id": 9, // unique ID
"parentId": 8, // parent ID
"moduleFormConfigs": [], // Forms module configurations
"pageUrl": "blog1", // page URL
"depth": 1, // depth
"localizeInfos": { // localization info
"title": "Blog 1", // title
"menuTitle": "Blog 1", // menu title
"htmlContent": "",
"plainContent": "",
},
"isVisible": true, // visibility
"blocks": [], // blocks
"type": "common_page", // page type
"templateIdentifier": null, // template identifier
"attributeSetIdentifier": null, // attribute set identifier
"attributeValues": {}, // attribute values
"isSync": false, // sync
}

التعريب (دعم متعدد اللغات)

تدعم الصفحات لغات متعددة

نفس الصفحة، لغات مختلفة!

السمات المخصصة

يمكنك إضافة أي حقول إلى الصفحات باستخدام AttributesSets:

أمثلة:

  • المقالات: المؤلف، تاريخ النشر، العلامات، الصورة المميزة
  • صفحات المنتجات: السعر، SKU، المعرض، المواصفات
  • صفحات الهبوط: صورة البطل، أزرار CTA، الشهادات

تعلم المزيد: انظر AttributesSets Module


📊 جدول مرجعي سريع - الطرق الشائعة

الطريقةماذا تفعلمتى تستخدمها
getPages()الحصول على جميع الصفحات (مقيدة)بناء خريطة الموقع، قائمة بجميع الصفحات
getRootPages()الحصول على جميع الصفحات الجذرية (مقيدة)
getChildPagesByParentUrl()الحصول على جميع الصفحات الفرعية حسب ParentUrl (مقيدة)
getBlocksByPageUrl()الحصول على كائنات PositionBlock للصفحة حسب URL.تُستخدم الكتل لعرض محتوى الصفحة.
getConfigPageByUrl()الحصول على الإعدادات للصفحة حسب URL.تُستخدم صفحات الإعدادات لتخزين الإعدادات للصفحة.
getPageById()الحصول على صفحة واحدة.تُستخدم الصفحات لعرض الصفحة.
getPageByUrl()الحصول على صفحة واحدة حسب URL.تُستخدم الصفحات لعرض الصفحة.
searchPage()بحث سريع عن الصفحات مع مخرجات محدودة.البحث عن الصفحات حسب العنوان، الوصف، العلامات، إلخ.

❓ الأسئلة الشائعة (FAQ)

ما الفرق بين URL و ID؟

  • URL (pageUrl) - عنوان الويب الذي يراه المستخدمون (مثل: /about-us, /contact)

    • يُستخدم للتوجيه
    • سهل الاستخدام
  • ID - معرف تقني في الكود (مثل: 123, 124)

    • يُستخدم في المراجع البرمجية
    • تقني، وليس موجهًا للمستخدم

💡 ملاحظات مهمة

عناوين URL للصفحات والتوجيه

أفضل ممارسة للتوجيه:

✅ جيد: مسار شامل ديناميكي مثال Next.js: pages/[...slug].js


التخزين المؤقت للأداء

تقليل استدعاءات API باستخدام التخزين المؤقت.


معاينة المسودات

عرض صفحات المسودات للمسؤولين فقط.


🎓 أفضل الممارسات

  • تخزين الصفحات مؤقتًا لتقليل استدعاءات API
  • التعامل مع أخطاء 404 بشكل سلس
  • تصفية حسب statusId: 1 و isVisible: true للإنتاج
  • إضافة حالات تحميل في واجهة المستخدم
  • تنفيذ استراتيجية تخزين مؤقت للصفحات

مزيد من المعلومات حول واجهة مستخدم الموديل https://doc.oneentry.cloud/docs/category/pages


تعريف موديل Pages


const { Pages } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);


🔗 الوثائق ذات الصلة