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

المقدمة

استرجع قوائم التنقل متعددة المستويات المكونة من الصفحات المكونة في OneEntry.

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


🎯 ماذا تفعل هذه الوحدة؟

تتيح لك وحدة Menus استرجاع هياكل التنقل في الموقع - قوائم الرأس، قوائم التذييل، التنقل الجانبي، قوائم الهواتف المحمولة - من خلال بناء تنقل متعدد المستويات ديناميكي من الصفحات المكونة في OneEntry.

تقوم بإنشاء القوائم في لوحة إدارة OneEntry (ربط الصفحات معًا) وتقوم هذه الوحدة باسترجاع شجرة القائمة الكاملة، بحيث يمكنك عرض التنقل ديناميكيًا دون الحاجة إلى ترميز الروابط بشكل ثابت. SDK هو للقراءة فقط بالنسبة للقوائم - تقوم باسترجاعها، ولا تقوم بإنشائها عبر الكود.

🚀 البدء السريع

قم بتهيئة الوحدة من defineOneEntry:


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

استرجع قائمة بواسطة علامتها وتصفح صفحاتها:

// Fetch the "main_menu" structure in English.
const menu = await Menus.getMenusByMarker("main_menu", "en_US");

console.log(menu.identifier, menu.localizeInfos.title);

// Top-level items; nested items live in each item's children[].
menu.pages.forEach((item) => {
console.log(item.pageUrl, item.localizeInfos.title, item.children);
});

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

ما هي القائمة؟

القائمة (IMenusEntity) هي هيكل تنقل يربط الصفحات معًا:

  • identifier - علامة القائمة (مثل: "main_menu")
  • localizeInfos - عنوان القائمة المحلي
  • pages - مصفوفة عناصر القائمة (كل عنصر هو صفحة)

هيكل عنصر القائمة

كل عنصر في pages هو كائن IMenusPages:

{
id: 123, // Page ID
pageUrl: "home", // Page URL (marker)
localizeInfos: { title: "Home" },
attributeValues: {}, // Custom attribute values
parentId: null, // null for top-level items
position: 1, // Display order
children: [] // Nested menu items
}

تسلسل القائمة

تدعم القوائم الهياكل المتداخلة. يتم التعبير عن التداخل من خلال مصفوفة children[] لكل عنصر مع parentId الخاص به (العناصر في المستوى الأعلى لها parentId: null). لا يوجد حقل عمق منفصل - تحدد العمق من خلال تصفح children[].

📂 Header Menu
├─ Home (parentId: null)
├─ About (parentId: null)
│ ├─ Team (parentId: 2)
│ └─ History (parentId: 2)
├─ Products (parentId: null)
│ └─ Electronics (parentId: 4)
│ ├─ Phones (parentId: 5)
│ └─ Laptops (parentId: 5)
└─ Contact (parentId: null)

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

يتم إنشاء القوائم في لوحة الإدارة

لا يمكنك إنشاء القوائم عبر SDK - يتم إنشاؤها في لوحة إدارة OneEntry (Menus → Create Menu → Add Pages → Save) أو عبر واجهة برمجة التطبيقات الإدارية. SDK مخصص لـ استرجاع هياكل القوائم.

عناصر القائمة هي صفحات

كل عنصر في القائمة هو صفحة مكونة في OneEntry - لا يمكنك إضافة روابط عشوائية. لإضافة رابط خارجي، قم بإنشاء صفحة برابط خارجي في وحدة الصفحات وأضفها إلى القائمة.

الترتيب حسب الموضع

تحمل العناصر حقل position - قم بترتيبها وفقًا له لاحترام ترتيب العرض المكون في لوحة الإدارة.

دعم متعدد اللغات

تتم محلية القوائم بواسطة langCode الممرر إلى getMenusByMarker() (تعود إلى اللغة المحددة في defineOneEntry()). استرجع القوائم بلغة المستخدم المفضلة.


📊 جدول المرجع السريع

الطريقةالوصفحالة الاستخدام
getMenusByMarker()احصل على القائمة بواسطة العلامةاسترجع هيكل قائمة محددة

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

كيف يمكنني إنشاء قائمة متعددة المستويات (منسدلة)؟

قم ببناء شجرة القائمة في لوحة الإدارة عن طريق تداخل الصفحات. يتم إرجاع التداخل من خلال مصفوفة children[] لكل عنصر - قم بعرضها بشكل متكرر.


هل يمكنني إضافة روابط خارجية إلى القوائم؟

يجب أن تكون عناصر القائمة صفحات مكونة في OneEntry. لإضافة رابط خارجي، قم بإنشاء صفحة برابط خارجي في وحدة الصفحات، ثم أضفها إلى قائمتك.


كيف يمكنني التعامل مع حالة عنصر القائمة النشط؟

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


كيف يمكنني بناء فتات الخبز؟

تتبع من الصفحة الحالية عبر علاقات parentId (الرئيسية > الفئة > الفئة الفرعية > الصفحة الحالية).


هل يمكنني الحصول على قوائم مختلفة لأقسام مختلفة؟

نعم - قم بإنشاء قوائم متعددة بعلامات مختلفة (مثل: header_menu, footer_menu, sidebar_menu) واسترجع كل منها باستخدام getMenusByMarker().


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

  • استخدم العلامات، وليس المعرفات - العلامات مستقرة عبر البيئات.
  • قم بعرض children[] بشكل متكرر - هذه هي الطريقة التي يتم بها تمثيل التداخل.
  • رتب حسب position - احترم ترتيب العرض المكون.
  • قم بتخزين القوائم في الذاكرة - نادرًا ما تتغير.
  • مرر langCode - استرجع القائمة بلغة المستخدم.
  • تعامل مع القوائم المفقودة بشكل لطيف - قدم بديلًا عندما لا يتم العثور على العلامة.

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