التخطيطات
التخطيطات هي مكونات أسترو، التي تُستخدم لتوفير هيكل واجهة مستخدم قابلة لإعادة الاستخدام، مثل قالب صفحة.
نستخدم مصطلح “التخطيط” عادةً لمكونات أسترو التي توفر عناصر واجهة مستخدم مشتركة لجميع الصفحات، مثل الرأس، والتنقل، والتذييل. عادةً ما توفر مكون تخطيط أسترو صفحات أسترو أو Markdown أو MDX ما يلي:
- غطاء الصفحة (
<html>
،<head>
، و<body>
) <Slot />
لتحديد المكان الذي يجب إدراج محتوى الصفحة فيه.
ومع ذلك، فإن مكونات التخطيط ليست شيئًا مميزًا! يمكنها قبول الخصائص واستيراد واستخدام مكونات أخرى مثل أي مكون أسترو آخر. يمكن أن تحتوي على مكونات إطار عمل واجهة المستخدم (EN) وبرامج نصية من جانب العميل (EN). ليست بحاجة لتوفير واجهة صفحة كاملة، بل يمكن استخدامها بدلاً من ذلك كقوالب واجهة مستخدم جزئية.
ومع ذلك، إذا كانت مكونة التخطيط تحتوي على غطاء صفحة، يجب أن يكون عنصر <html>
هو العنصر الأب لجميع العناصر الأخرى في المكون. يجب أن تكون جميع عناصر <style>
(EN) أو <script>
(EN) محاطة بعلامات <html>
.
عادةً ما يتم وضع مكونات التخطيط في دليل src/layouts
في مشروعك، ولكن هذا ليس شرطًا؛ يمكنك وضعها في أي مكان داخل مشروعك. يمكنك حتى وضع مكونات التخطيط بجانب صفحاتك عن طريق إضافة _
قبل اسم التخطيط.
التخطيط النموذجي
قسم بعنوان التخطيط النموذجياستخدام TypeScript مع التخطيطات
قسم بعنوان استخدام TypeScript مع التخطيطاتيمكن تعديل أي تخطيط في أسترو لإضافة أمان النوع وإكمال النصوص التلقائي عن طريق تقديم الأنواع لخصائصك:
التخطيطات باستخدام Markdown
قسم بعنوان التخطيطات باستخدام Markdownتعد التخطيطات الخاصة بالصفحات مفيدة بشكل خاص للصفحات الفردية من نوع Markdown التي لن تحتوي على تنسيق صفحة بشكل افتراضي.
توفر Astro خاصية layout
في الـ frontmatter، والتي تُستخدم لملفات .md
الفردية الموجودة داخل src/pages/
باستخدام التوجيه المعتمد على الملفات، لتحديد مكون .astro
الذي سيتم استخدامه كـ تخطيط للصفحة. يسمح لك هذا المكون بتوفير محتوى <head>
مثل العلامات الوصفية (مثل <meta charset="utf-8">
) والأساليب لصفحة Markdown. بشكل افتراضي، يمكن لهذا المكون المحدد الوصول تلقائيًا إلى البيانات من ملف Markdown.
لا يتم التعرف على هذه الخاصية كخاصية خاصة عند استخدام مجموعات المحتوى (EN) للاستعلام عن المحتوى وعرضه.
تتضمن التخطيط النموذجي لصفحة Markdown ما يلي:
- خاصية
frontmatter
للوصول إلى frontmatter الخاص بصفحة Markdown والبيانات الأخرى. - [
<slot />
] افتراضي لتحديد المكان الذي يجب أن يتم فيه عرض محتوى Markdown الخاص بالصفحة.
يمكنك تعيين نوعProps
type (EN) للتخطيط باستخدام مساعد MarkdownLayoutProps
:
خصائص تخطيط Markdown
قسم بعنوان خصائص تخطيط Markdownسيكون لتخطيط Markdown الوصول إلى المعلومات التالية عبر Astro.props
:
file
- المسار الكامل لهذا الملف (على سبيل المثال:/home/user/projects/.../file.md
).url
- عنوان URL للصفحة (على سبيل المثال:/ar/guides/markdown-content
).frontmatter
- جميع بيانات الـ frontmatter من مستند Markdown أو MDX.frontmatter.file
- نفس خاصيةfile
على المستوى الأعلى.frontmatter.url
- نفس خاصيةurl
على المستوى الأعلى.
headings
- قائمة بالعناوين (h1 -> h6
) في مستند Markdown أو MDX مع البيانات الوصفية المرتبطة. تتبع هذه القائمة النوع:{ depth: number; slug: string; text: string }[]
.rawContent()
- دالة تُعيد مستند Markdown الخام كسلسلة نصية.compiledContent()
- دالة غير متزامنة تُعيد مستند Markdown بعد تحويله إلى سلسلة HTML.
سيكون لتخطيط Markdown الوصول إلى جميع خصائص ملف Markdown المتاحة (EN) من Astro.props
مع فرقين رئيسيين:
-
معلومات العناوين (أي عناصر
h1 -> h6
) متاحة عبر مصفوفةheadings
، بدلاً من دالةgetHeadings()
. -
file
وurl
متاحان أيضًا كخصائص متداخلة فيfrontmatter
(أي:frontmatter.url
وfrontmatter.file
).
استيراد التخطيطات يدويًا (MDX)
قسم بعنوان استيراد التخطيطات يدويًا (MDX)يمكنك أيضًا استخدام خاصية تخطيط Markdown الخاصة في الـ frontmatter لملفات MDX لتمرير خصائص frontmatter
و headings
مباشرة إلى مكون التخطيط المحدد بنفس الطريقة.
لتمرير المعلومات إلى تخطيط MDX لا يمكن أن توجد (أو لا توجد) في الـ frontmatter، يمكنك بدلاً من ذلك استيراد واستخدام مكون <Layout />
. يعمل هذا مثل أي مكون آخر في Astro، ولن يتلقى أي خصائص تلقائيًا. مرر له أي خصائص ضرورية مباشرة:
ثم، ستكون القيم الخاصة بك متاحة لك من خلال Astro.props
في التخطيط الخاص بك، وسيتم حقن محتوى MDX في الصفحة حيث يتم كتابة مكون <slot />
:
عند استخدام أي تخطيط (سواء من خلال خاصية layout
في الـ frontmatter أو عن طريق استيراد تخطيط)، يجب عليك تضمين وسم <meta charset="utf-8">
في تخطيطك حيث أن Astro لن تضيفه تلقائيًا إلى صفحة MDX الخاصة بك.
تركيب التخطيطات
قسم بعنوان تركيب التخطيطاتلا تحتاج مكونات التخطيط إلى احتواء صفحة كاملة من HTML. يمكنك تقسيم تخطيطاتك إلى مكونات أصغر، ودمج مكونات التخطيط لإنشاء قوالب صفحات أكثر مرونة. هذه الطريقة مفيدة عندما تريد مشاركة بعض الأكواد عبر تخطيطات متعددة.
على سبيل المثال، يمكن أن يقوم مكون تخطيط BlogPostLayout.astro
بتنسيق عنوان المقالة وتاريخ النشر والمؤلف. بعد ذلك، يمكن أن يتعامل تخطيط الموقع العام BaseLayout.astro
مع بقية قالب الصفحة، مثل التنقل، والتذييل، ووسوم SEO، والأنماط العامة، والخطوط. يمكنك أيضًا تمرير الخصائص المستلمة من مقالك إلى تخطيط آخر، تمامًا كما تفعل مع أي مكون متداخل آخر.