profound-logoProfound CMS
⌘K
Admin
Theme
Docsبرنامج تعليميBlogPhilosophy
Docsبرنامج تعليميBlogPhilosophy

Hybrid

التوجيه البارامتريTypes of Componentsإس إس إيInstall Profound CMS as a proxyالبرمجة النصية في منشئ القوالبProject Scaffoldingمكتبة الوسائط

بلا رأس

البدء السريعJSON و Claude CodeComponent Zod Pull

واجهة برمجة تطبيقات REST

نظرة عامة على واجهة RESTgetربط موقع الويب بواجهة برمجة التطبيقاتgetالحصول على المساراتgetالحصول على مسارgetالحصول على الكتلgetجلب الكتل مع ذاكرة CEL المؤقتةgetGET /blocks/generatedgetالحصول على المكوناتgetGET /components/{name}getالحصول على اسم مخطط مجموعة البياناتgetالحصول على تغييرات المحتوى (SSE)patchPATCH /dataset/{schema_name}postترجمة المنشورpatchPATCH /translationsgetالحصول على الاستخدامpostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

البدء السريع

منشور حول المخططات

إنشاء مخططات Zod آمنة من ناحية الأنواع

تتيح لك هذه الميزة الحصول على وصف مكوناتك على شكل مخطط Zod آمن من ناحية الأنواع، مما يوفر:

  • التحقق من المخططات مع التركيز على TypeScript أولاً
  • استنتاج الأنواع بشكل ثابت

تعرّف أكثر: https://zod.dev

الإعداد

لاستخراج مخطط Zod الخاص بك، عليك:

  1. تحميل الاعتمادات المطلوبة
  2. إنشاء برنامج نصي باستخدام الأدوات المساعدة من cms-renderer

هيكل المشروع

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts   # ملف البرنامج النصي

البرنامج النصي: generated-schema.ts

import { fetchAllCustomSchemaFields, saveZodSchemaCode } from 'cms-renderer/lib/custom-schemas';
import { cmsConfig } from '../lib/cms-config';

async function main() {
  const { cmsUrl, websiteId, apiKey } = cmsConfig;

  if (!cmsUrl) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_CMS_API_URL غير مُعد. اضبطه في بيئتك أو في ملف .env.'
    );
  }

  if (!websiteId) {
    throw new Error(
      '[generate-schemas] CMS_WEBSITE_ID غير مُعد. اضبطه في بيئتك أو في ملف .env.'
    );
  }

  if (!apiKey) {
    throw new Error(
      '[generate-schemas] PROFOUND_API_KEY غير مُعد. اضبطه في بيئتك أو في ملف .env.'
    );
  }

  const schemas = await fetchAllCustomSchemaFields({ cmsUrl, websiteId, apiKey });

  if (schemas.length === 0) {
    throw new Error(
      '[generate-schemas] لم تُرجع واجهة البرمجة أي مكوّنات. تحقّق من أن PROFOUND_API_KEY صالح ويشير إلى الموقع الصحيح.'
    );
  }

  console.log(
    `[generate-schemas] العثور على ${schemas.length} من المكوّنات: ${schemas.map((s) => s.name).join(', ')}`
  );

  await saveZodSchemaCode(schemas, './generated/cms-schemas.ts');

  console.log('[generate-schemas] تم الانتهاء.');
}

main().catch((err) => {
  console.error('[generate-schemas] فشل:', err);
  process.exit(1);
});

مثال على تهيئة CMS

export const cmsConfig = {
  cmsUrl: process.env.NEXT_PUBLIC_CMS_API_URL,
  apiKey: process.env.CMS_API_KEY,
  websiteId: '...',
};

إعدادات package.json

ملاحظة: إذا لم يكن لديك ملف tsconfig.json، فاحذف الوسيطة --tsconfig.

{
  "name": "web",
  "version": "0.1.0",
  "type": "module",
  "private": true,
  "scripts": {
    "generate-schemas": "tsx --tsconfig tsconfig.json scripts/generate-schemas.ts",
    "...": "..."
  },
  "dependencies": {
    "cms-renderer": "0.3.1",
    "zod": "^4.3.6",
    "...": "..."
  },
  "devDependencies": {
    "tsx": "^4.21.0",
    "object-hash": "^3.0.0",
    "...": "..."
  }
}

تشغيل البرنامج النصي

bun run generate-schemas

مثال على المخرجات:

tsx --tsconfig tsconfig.json scripts/generate-schemas.ts
[generate-schemas] العثور على 3 من المكوّنات: post, categories, header
[generate-schemas] تم الانتهاء.

هيكل المشروع المحدّث

apps/
  web/
    app/
      page.tsx
    scripts/
      generated-schema.ts
    generated/
      cms-schemas.ts   # مخطط Zod المُنشأ

الاستخدام في page.tsx

import type { PetFoodPost, SiteConfig } from '@/generated/cms-schemas';
import { petFoodPostSchema } from '@/generated/cms-schemas';

// استخدمه لعمليات التحليل الآمنة من ناحية الأنواع
petFoodPostSchema.parse(obj);

ملاحظات

  • تفحّص الملف المُنشأ لفهم بنية المكوّن الخاص بك
  • أعد تشغيل البرنامج النصي كلما تغيّرت بنية المكوّن الخاص بك:
bun run generate-schemas
  • يمكنك دمج ذلك في سير عمل التطوير أو البناء لديك
  • حدّث المكوّنات عبر لوحة الإدارة، ثم أعد التوليد محليًّا
Continue Reading
NextJSON و Claude Code›