blog AI Technology

التخصيص الشديد لـ Strapi 5: دمج محرر Quill ومعمارية المستأجرين المتعددين

يعد Strapi 5 نظام إدارة محتوى ممتازًا، لكني قمت بتعديله بشكل كبير لـ kuro.boo، مستبدلاً Lexical بـ Quill ومضيفًا ميزة تعدد المستأجرين.


في سبتمبر 2025، جلب إصدار "Strapi 5" تحديثات رئيسية للمطورين. ومع كسر كامل لهياكل بيانات Strapi 4، قدم تغييرات جذرية، وواجهات برمجة تطبيقات لغات متعددة تم تجديدها، وحسن الأداء. وبينما أصبح أداة أبسط وأكثر قوة، إلا أن بعض التكوينات الافتراضية تركت مجالاً للتحسين.

وتحديداً، فإن محرر "Blocks" الافتراضي (المعتمد على Lexical) حديث ولكنه يفتقر إلى أدوات تحرير الجداول المتقدمة وتزيين النصوص اللازمة لتصميم التخطيط الغني. ولم يكن قادراً حتى على بناء جدول بسيط بمجرد تثبيته. ورغم أن حدود الجداول قد تكون أقل شيوعاً في التصاميم الغربية، إلا أنها ضرورية في اليابان لإنشاء صفحات منظمة وسهلة القراءة.

وعلاوة على ذلك، يفتقر Strapi 5 إلى تعدد المستأجرين الأصلي. ويمكنك تشغيل حاويات منفصلة لكل مؤسسة، ولكن تشغيل قاعدة بيانات PostgreSQL مخصصة لكل مستأجر أمر مكلف. ولتحقيق تعدد مستأجرين فعال من حيث التكلفة، قمت بتخصيص الخلفية. وإليك كيف قمت بتعديل بيئة Strapi 5 لمدونة "kuro.boo" لتحقيق تجربة تحرير رائعة وكفاءة إدارة عالية.

1. الانتقال إلى Quill

نظراً لأن Lexical و TipTap لم يناسبا احتياجاتي، فقد بحثت في Quill. ومع إطلاق إصدار v2، يوفر Quill مرونة ممتازة. وبدت ميزات WYSIWYG واعدة، ولكنها لا تزال تفتقر إلى الدعم الأصلي للجداول المتقدمة. ولإصلاح ذلك، قمت بدمج "quill-better-table" (بعد يوم من معالجة الأخطاء). ويسمح هذا المكون الإضافي بإضافة/حذف الصفوف والأعمدة عبر النقر بزر الماوس الأيمن، ودمج الخلايا، وتخصيص نمط الخلايا مباشرة داخل لوحة تحكم Strapi. والأهم من ذلك، يتم حفظ هذه الجداول كـ HTML قياسي، مما يسهل عرضها في واجهة Astro الأمامية.

وقد حل هذا كلاً من تحرير الجداول ومشكلات إدخال اللغة اليابانية (IME)، مما منحنا لوحة محرر WYSIWYG عالية الأداء داخل Strapi.

2. تعدد المستأجرين القائم على المخطط (Schema-Based)

لإدارة مواقع متعددة في نسخة Strapi واحدة دون تشغيل حاويات قاعدة بيانات منفصلة، قمت بتنفيذ تبديل مخطط قاعدة البيانات (DATABASE_SCHEMA) داخل نفس نسخة قاعدة البيانات. وهذا يحافظ على انخفاض تكاليف قاعدة البيانات مع الحفاظ على بيئات قاعدة بيانات منفصلة وآمنة لكل مستأجر.

3. سير عمل محلي لإنشاء المواقع الثابتة (SSG)

بينما يعد تشغيل خادم CMS على مدار الساعة طوال أيام الأسبوع مثالياً للفرق التعاونية، إلا أنه يضيف تكاليف غير ضرورية ومخاطر أمنية للمدونات الشخصية أو المواقع ذات التحديثات القليلة. لذلك، قمت بتغيير معمارية النشر:

  1. ابدأ نسخة Strapi المحلية فقط عند الكتابة أو التحرير.
  2. قم بتشغيل بناء تطوير يجمع محتوى Strapi في صفحات Astro ثابتة، مع نسخ الصور إلى مجلد البناء وتحديث روابط الصور.
  3. أوقف نسخة Strapi المحلية، وانشر الموقع الثابت بالكامل على Cloudflare Pages.

وهذا الإعداد يعني أن موقعنا العام مستضاف بالكامل على شبكة حافة Cloudflare. وهو يتحمل التحميل بسرعة فائقة، ولا يكلف شيئاً لاستضافته، ويلغي المخاطر الأمنية لقواعد البيانات التي تواجه الجمهور.

مقارنة بين الإعدادات الافتراضية والتخصيصات لـ kuro.boo

الميزة

الإعدادات الافتراضية

تخصيص kuro.boo

نواة المحرر

Lexical (Blocks)

Quill (v2+)

تحرير الجداول

محدود

quill-table-better (دمج وتعديل الخلايا)

تعدد المستأجرين

قاعدة بيانات / مخطط واحد

تعدد مستأجرين قائم على المخطط

سير العمل

نظام إدارة محتوى نشط دائماً

نظام محلي مع توليد الصفحات الثابتة (SSG)

[المصادر]


1. وثائق ومراجع المطورين لـ Strapi 5
2. موقع محرر النصوص الغنية Quill الرسمي
3. مستودع quill-table-better على GitHub