تكامل نظام تعليقات CWD

دليل تكامل نظام تعليقات CWD

البناء

دليل تكامل نظام تعليقات CWD

قمت بتهيئة مشروع Astro بنجاح ودمج نظام تعليقات CWD.

التغييرات الرئيسية

  1. تهيئة المشروع: إنشاء مشروع Astro جديد باستخدام قالب basics.
  2. إنشاء المكون: بناء مكون 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>
  1. دمج الصفحة: إضافة مكون التعليقات إلى الصفحة الرئيسية [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 للواجهة البرمجية بشكل صحيح):

Terminal window
npm run dev

إعادة الاستخدام في مشاريع Astro الأخرى

لاستخدام نظام التعليقات هذا في مشاريع Astro أخرى، لا حاجة لإعادة نشر الخلفية أو لوحة الإدارة. فقط انسخ مكون الواجهة الأمامية.

  1. نسخ المكون: انسخ [src/components/CwdComments.astro] إلى دليل src/components/ في مشروعك الجديد. ملاحظة: إذا كان مشروعك يستخدم انتقالات العرض، تأكد من الحفاظ على منطق registerPageInit.

  2. الإضافة إلى الصفحة: استورد واستخدم في صفحتك:

    ---
    import CwdComments from '../components/CwdComments.astro';
    ---
    <CwdComments apiBaseUrl="https://cmt-api.xxx.com" />
  3. التعريف الفريد: يميز النظام التعليقات تلقائيًا عن طريق عنوان URL للصفحة (المسار). طالما أن نطاق أو مسار المشروع الجديد مختلف، سيتم عزل التعليقات تلقائيًا.

البقاء محدثًا

نظرًا لأن CWD في مرحلة التطوير المبكرة مع تحديثات متكررة، اتبع استراتيجية التحديث هذه:

  1. الخلفية (API):

    • شغل git fetch upstream و git merge upstream/main في دليل cwd لمزامنة الكود.
    • شغل npm install لتحديث التبعيات.
    • شغل npx wrangler d1 migrations apply CWD_DB (إذا كانت هناك تغييرات في قاعدة البيانات).
    • شغل npm run deploy لنشر إصدار Worker الجديد.
  2. مكون الواجهة الأمامية:

    • حدد إصدار عنوان URL للسكربت في src/components/widgets/CwdComments.astro:
      <script is:inline src="https://unpkg.com/cwd-widget@latest/dist/cwd.js"></script>
    • استخدم @latest للحصول على أحدث إصدار (موصى به للتطوير)، أو حدد رقم إصدار (مثل @0.0.5) للاستقرار.
  3. لوحة الإدارة:

    • اسحب أحدث الكود (نفس خطوات الخلفية).
    • شغل npm install و npm run build.
    • أعد النشر إلى Cloudflare Pages: npx wrangler pages deploy dist --project-name cwd-admin.

تاريخ النشر: 6 فبراير 2026 · تاريخ التعديل: 6 فبراير 2026

مقالات ذات صلة