دليل تكامل نظام تعليقات CWD
قمت بتهيئة مشروع Astro بنجاح ودمج نظام تعليقات CWD.
التغييرات الرئيسية
- تهيئة المشروع: إنشاء مشروع Astro جديد باستخدام قالب
basics. - إنشاء المكون: بناء مكون Astro قابل لإعادة الاستخدام [src/components/CwdComments.astro].
---interface Props { apiBaseUrl: string; elId?: string; pageSize?: number; theme?: 'light' | 'dark';}const { apiBaseUrl, elId = 'comments', pageSize = 20, theme = 'light' } = Astro.props;---
<!-- 1. الحاوية: استخدام سمات البيانات لتمرير المعلمات للسكربت --><div id={elId} class="cwd-comments-container" data-el-id={elId} data-api-base-url={apiBaseUrl} data-page-size={pageSize} data-theme={theme}></div><!-- 2. استيراد المكتبة: الحفاظ على is:inline للتحميل في أي وقت --><script is:inline src="https://unpkg.com/cwd-widget@latest/dist/cwd.js"></script><!-- 3. سكربت التهيئة: استخدام الوحدة لاستيراد دوال الأدوات المساعدة --><script> import { registerPageInit } from '@/utils/page-init'; // تحديد منطق التهيئة const initComments = () => { const containers = document.querySelectorAll('.cwd-comments-container');
containers.forEach((container) => { const el = container as HTMLElement; // منع التهيئة المكررة if (el.children.length > 0 || el.dataset.cwdInitialized) return; const apiBaseUrl = el.dataset.apiBaseUrl; const theme = el.dataset.theme; const pageSize = Number(el.dataset.pageSize);
// التحقق من تحميل المكتبة if ((window as any).CWDComments && apiBaseUrl) { try { const comments = new (window as any).CWDComments({ el: el, apiBaseUrl, pageSize, theme, }); comments.mount(); // وسم كمُهيأ el.dataset.cwdInitialized = 'true'; } catch (e) { console.error('[CWD] فشل التهيئة:', e); } } else { // إذا كان السكربت لا يزال يحمل، استطلاع بسرعة const checkTimer = setInterval(() => { if ((window as any).CWDComments) { clearInterval(checkTimer); // إعادة التشغيل initComments(); } }, 100); // التوقف بعد 5 ثواني setTimeout(() => clearInterval(checkTimer), 5000); } }); // إرجاع دالة التنظيف (اختياري) return () => { // قد لا توفر CWD طريقة destroy، فقط أفرغ الحاوية }; }; // 4. التسجيل في PageInitManager registerPageInit('init-cwd-comments', initComments, { immediate: true });</script>- دمج الصفحة: إضافة مكون التعليقات إلى الصفحة الرئيسية [src/pages/index.astro].
التكوين
يتطلب نظام التعليقات عنوان URL للواجهة البرمجية للاتصال بالخادم الخلفي. قم بتحديث سمة apiBaseUrl في [src/pages/index.astro] (أو أي مكان تستخدم فيه هذا المكون).
الملف: [src/pages/index.astro]
<CwdComments apiBaseUrl="https://cmt-api.xxx.com" />تأكد من استبدال https://cmt-api.xxx.com بعنوان URL الفعلي للـ Worker المنشور.
استخدام المكون
يمكنك استخدام مكون CwdComments في أي صفحة أو تخطيط Astro:
---import CwdComments from '../components/CwdComments.astro';---
<CwdComments apiBaseUrl="https://cmt-api.xxx.com" elId="comments" theme="light"/>التحقق
المشروع يبنى بنجاح. شغل خادم التطوير لعرض مكون التعليقات (تأكد من تكوين عنوان URL للواجهة البرمجية بشكل صحيح):
npm run devإعادة الاستخدام في مشاريع Astro الأخرى
لاستخدام نظام التعليقات هذا في مشاريع Astro أخرى، لا حاجة لإعادة نشر الخلفية أو لوحة الإدارة. فقط انسخ مكون الواجهة الأمامية.
-
نسخ المكون: انسخ [src/components/CwdComments.astro] إلى دليل
src/components/في مشروعك الجديد. ملاحظة: إذا كان مشروعك يستخدم انتقالات العرض، تأكد من الحفاظ على منطقregisterPageInit. -
الإضافة إلى الصفحة: استورد واستخدم في صفحتك:
---import CwdComments from '../components/CwdComments.astro';---<CwdComments apiBaseUrl="https://cmt-api.xxx.com" /> -
التعريف الفريد: يميز النظام التعليقات تلقائيًا عن طريق عنوان URL للصفحة (المسار). طالما أن نطاق أو مسار المشروع الجديد مختلف، سيتم عزل التعليقات تلقائيًا.
البقاء محدثًا
نظرًا لأن CWD في مرحلة التطوير المبكرة مع تحديثات متكررة، اتبع استراتيجية التحديث هذه:
-
الخلفية (API):
- شغل
git fetch upstreamوgit merge upstream/mainفي دليلcwdلمزامنة الكود. - شغل
npm installلتحديث التبعيات. - شغل
npx wrangler d1 migrations apply CWD_DB(إذا كانت هناك تغييرات في قاعدة البيانات). - شغل
npm run deployلنشر إصدار Worker الجديد.
- شغل
-
مكون الواجهة الأمامية:
- حدد إصدار عنوان URL للسكربت في
src/components/widgets/CwdComments.astro:<script is:inline src="https://unpkg.com/cwd-widget@latest/dist/cwd.js"></script> - استخدم
@latestللحصول على أحدث إصدار (موصى به للتطوير)، أو حدد رقم إصدار (مثل@0.0.5) للاستقرار.
- حدد إصدار عنوان URL للسكربت في
-
لوحة الإدارة:
- اسحب أحدث الكود (نفس خطوات الخلفية).
- شغل
npm installوnpm run build. - أعد النشر إلى Cloudflare Pages:
npx wrangler pages deploy dist --project-name cwd-admin.
تاريخ النشر: 6 فبراير 2026 · تاريخ التعديل: 6 فبراير 2026