توثيق المطوّر

مرجع مخطط المحتوى

كل ما تحتاجه لإضافة منتجات ومقالات وتصنيفات إلى Zubd.io. يوجد كل المحتوى في src/content/ كملفات MDX.

نظرة عامة

Zubd.io موقع Astro ستاتيك. يُخزَّن المحتوى كملفات MDX (Markdown + JSX) داخل src/content/products/ وsrc/content/articles/. لكل نوع من المحتوى مخطط Zod يتحقق من الـ frontmatter وقت البناء — إذا كان حقل مطلوب مفقوداً أو خاطئاً، يتوقف البناء برسالة خطأ واضحة.

كل محتوى موجود في ملفين: أحدهما في en/ والآخر في ar/. يجب أن تحمل كلتاهما نفس قيمة handle (التي يجب أن تطابق اسم الملف أيضاً).

القاعدة الذهبية: اسم الملف = حقل handle = متطابق عبر النسختين EN و AR. مثال: cerave-moisturizing-cream.mdx في كلا المجلدَين en/ وar/، وكلاهما يحمل handle: "cerave-moisturizing-cream".

مخطط المنتج

مسار الملف: src/content/products/ar/{handle}.mdx

الحقلالنوعمطلوبالوصف
titlestringاسم عرض المنتج
handlestringرابط URL — يجب مطابقة اسم الملف، متطابق عبر اللغات
locale"en" | "ar"لغة هذا الملف
brandstringاسم العلامة التجارية
modelstringموديل/نسخة المنتج
categorystringslug التصنيف — يُنشئ صفحة التصنيف تلقائياً
subcategorystringتصنيف فرعي اختياري
tagsstring[]وسوم للبحث والتصفية
imagestring (URL)صورة المنتج — استخدم رابط Unsplash أو /images/products/
imageAltstringوصف بديل للصورة
gallerystring[]روابط صور إضافية (للمعرض)
rating0–5 floatالتقييم الإجمالي (مثال: 4.7)
reviewCountintegerعدد المراجعات
affiliateUrlURL stringرابط الإحالة الكامل — يحصل على rel="nofollow sponsored"
affiliateLabelstringنص زر الشراء (افتراضي: "اشترِ الآن")
pricestringنص السعر المعروض (مثال: "$24.99")
priceUpdatedISO dateتاريخ آخر التحقق من السعر
metaDescriptionstring ≤320وصف SEO
prosstring[]قائمة الإيجابيات
consstring[]قائمة السلبيات
userReviewsReview[]انظر كائن المراجعة أدناه
publishedAtISO dateتاريخ النشر
updatedAtISO dateتاريخ آخر تحديث
draftbooleantrue = مخفي من البناء (افتراضي: false)

كائن مراجعة المستخدم

الحقلالنوعالوصف
authorstringاسم المراجع
rating0–5 floatتقييم المراجع بالنجوم
dateISO dateتاريخ المراجعة
textstringنص المراجعة
source"amazon" | "google" | "manual"مصدر المراجعة

قالب المنتج الكامل

---
title: "اسم المنتج"
handle: "product-name"
locale: "ar"
brand: "العلامة التجارية"
model: "الموديل"
category: "category-slug"
tags: ["وسم1", "وسم2"]
image: "https://images.unsplash.com/photo-XXXXX?w=480&auto=format&fit=crop&q=80"
imageAlt: "وصف بديل للصورة"
rating: 4.5
reviewCount: 120
affiliateUrl: "https://amzn.to/XXXXXX"
affiliateLabel: "اشترِ من أمازون"
price: "$49.99"
priceUpdated: "2025-04-07"
metaDescription: "وصف قصير أقل من 160 حرف للـ SEO."
pros:
  - "الإيجابية الأولى"
  - "الإيجابية الثانية"
cons:
  - "السلبية الأولى"
userReviews:
  - author: "محمد أ."
    rating: 5
    date: "2025-03-01"
    text: "منتج رائع!"
    source: "amazon"
publishedAt: "2025-04-07"
draft: false
---

## نظرة عامة

نص مراجعتك بصيغة Markdown هنا...

مخطط المقال

مسار الملف: src/content/articles/ar/{handle}.mdx

الحقلالنوعمطلوبالوصف
titlestringعنوان المقال
handlestringرابط URL — يجب مطابقة اسم الملف
locale"en" | "ar"لغة هذا الملف
categorystringslug التصنيف
subcategorystringتصنيف فرعي اختياري
tagsstring[]وسوم للاكتشاف
heroImagestring (URL)رابط صورة الهيرو
heroImageAltstringالنص البديل لصورة الهيرو
excerptstring ≤300ملخص المقال في البطاقات
featuredProductsstring[]قائمة مرتبة بـ handle المنتجات (#1 أولاً)
metaTitlestringعنوان SEO بديل
metaDescriptionstring ≤320وصف SEO
authorstringاسم الكاتب (افتراضي: "فريق تحرير زُبد")
publishedAtISO dateتاريخ النشر
updatedAtISO dateتاريخ آخر تحديث رئيسي
draftbooleantrue = مخفي (افتراضي: false)
تلميح: featuredProducts هو الحقل الأساسي الذي يربط المقال ببطاقات المنتجات. أدرج قيم handle للمنتجات مرتبةً حسب التسلسل — #1 أولاً. يقوم مكوّن RankedProductList بجلبها وعرضها تلقائياً.

قالب المقال الكامل

---
title: "أفضل 10 [منتجات] لـ [حالة الاستخدام] (2025)"
handle: "top-10-products-use-case"
locale: "ar"
category: "category-slug"
tags: ["وسم1", "وسم2"]
heroImage: "https://images.unsplash.com/photo-XXXXX?w=1200&auto=format&fit=crop&q=80"
heroImageAlt: "النص البديل الوصفي لصورة الهيرو"
excerpt: "ملخص موجز لما يغطيه المقال (بحد أقصى 300 حرف)."
featuredProducts:
  - "product-handle-1"
  - "product-handle-2"
  - "product-handle-3"
metaTitle: "أفضل 10 [منتجات] لـ [حالة الاستخدام] (2025)"
metaDescription: "وصف SEO أقل من 160 حرف."
author: "فريق تحرير زُبد"
publishedAt: "2025-04-07"
draft: false
---

## لماذا تثق بهذه القائمة؟

فقرة المنهجية...

## ما الذي تبحث عنه؟

معايير الشراء الرئيسية...

التصنيفات

التصنيفات مشتقة تلقائياً من حقل category في frontmatter المقال. لا يوجد ملف تصنيف منفصل لإنشائه. عند نشر مقال بـ category: "fitness"، تُبنى صفحة /ar/categories/fitness تلقائياً وتعرض جميع المقالات في ذلك التصنيف.

لإضافة تصنيف جديد، استخدم قيمة category جديدة في frontmatter المقال. لإضافة تسمية مقروءة له، أضف إدخالاً إلى src/lib/utils.ts في دالة getCategoryLabel():

// src/lib/utils.ts → getCategoryLabel()
fitness: { en: 'Fitness', ar: 'اللياقة البدنية' },
food:    { en: 'Food & Kitchen', ar: 'الطعام والمطبخ' },
// أضف تصنيفك الجديد هنا:

الصور (Unsplash)

تستخدم جميع صور المنتجات والمقالات روابط Unsplash مباشرةً — لا حاجة لاستضافة الصور. استخدم هذا التنسيق:

https://images.unsplash.com/photo-{PHOTO_ID}?w=1200&auto=format&fit=crop&q=80

الأحجام الشائعة:

  • هيرو المقال: ?w=1200&h=630&fit=crop
  • صورة المنتج: ?w=480&h=480&fit=crop
  • صورة OG: ?w=1200&h=630&fit=crop

ابحث عن الصور على unsplash.com — انسخ معرف الصورة من الرابط.

سير عمل النشر

  1. أنشئ src/content/products/en/your-product.mdx
  2. أنشئ src/content/products/ar/your-product.mdx (نفس اسم الملف)
  3. أضف handle المنتج إلى قائمة featuredProducts في المقال
  4. أنشئ src/content/articles/en/your-article.mdx
  5. أنشئ src/content/articles/ar/your-article.mdx
  6. شغّل npm run build — يتحقق Zod من جميع frontmatter
  7. ادفع إلى main → ينشر Cloudflare Pages تلقائياً
التحقق من البناء: إذا كان أي حقل في frontmatter غير صالح، يتوقف البناء برسالة خطأ واضحة. هذا يمنع وصول محتوى مكسور إلى الإنتاج. استخدم draft: true لحفظ العمل الجاري دون نشر.

بنية الروابط

الصفحةرابط ENرابط AR
الرئيسية/en/ar
مقال/en/articles/{handle}/ar/articles/{handle}
منتج/en/products/{handle}/ar/products/{handle}
تصنيف/en/categories/{category}/ar/categories/{category}
الخصوصية/en/privacy/ar/privacy
التواصل/en/contact/ar/contact
التوثيق/en/docs/ar/docs
Sitemap/sitemap-index.xml
llms.txt/llms.txt