LoveIt-tailwindcss — قالب Hugo مُعاد بناؤه على Tailwind مع دعم RTL
قالب Hugo مشتقّ من LoveIt، أُعيد بناؤه بالكامل على Tailwind CSS وأُضيف إليه دعم اللغات من اليمين إلى اليسار وصفحة مشاريع، لمدوّنات عربية وإنجليزية معاً.

عن هذا المشروع
إعادة بناء قالب Hugo المسمّى LoveIt على Tailwind CSS مع دعم كامل للاتجاه من اليمين إلى اليسار وتعدد اللغات، ونشر تلقائي عبر GitHub Actions.
التقنيات
مشتقّ من قالب LoveIt لـ Hugo، مع هدف محدد: أن يصبح صالحاً للمدوّنات العربية دون ترقيعات.
نظرة عامة
LoveIt-tailwindcss إعادة بناء لقالب LoveIt الشهير لمولّد المواقع الساكنة Hugo، بثلاثة أهداف معلنة في المستودع ومُنجزة:
- دعم اللغات ذات الاتجاه من اليمين إلى اليسار (RTL).
- تحويل القالب بالكامل إلى Tailwind CSS.
- إضافة صفحة مشاريع لم تكن في الأصل.
التركيب يتمّ كأي قالب Hugo، عبر وحدة فرعية في Git:
git submodule add https://github.com/i99dev/LoveIt-tailwindcss.git themes/LoveIt-tailwindcss
cd themes/LoveIt-tailwindcss && npm installوتوثيق الإعداد هو توثيق LoveIt الأصلي نفسه، مع استبدال اسم المستودع فقط.
المشكلة
أغلب قوالب Hugo الجاهزة تفترض اتجاهاً واحداً دون أن تقول ذلك صراحةً. ومن يكتب بالعربية يكتشف الافتراض متأخراً:
- الاتجاه مدفون في الأنماط. خصائص مثل
margin-leftوpadding-rightوtext-align: leftمنثورة عبر ملفات القالب؛ إضافةdir="rtl"وحدها تقلب النص وتترك التخطيط مكسوراً. - الحل الشائع يضاعف الصيانة. إضافة ملف
rtl.cssينقض ما قبله تعني نسختين من كل قرار تصميمي، وانحرافاً مؤكّداً بينهما مع الوقت. - قاعدة أنماط قديمة. تعديل قالب مكتوب بـ SCSS مخصص يعني قراءة أنماط الآخرين قبل تغيير أي هامش.
التخطيط
رُتّبت الأهداف الثلاثة ترتيباً يجعل كلّ واحد يخدم ما بعده، لا أن تُنفّذ متوازية:
| المرحلة | العمل | لماذا بهذا الترتيب |
|---|---|---|
| 1 | التحويل إلى Tailwind CSS | يوحّد مصدر الأنماط قبل مسّ الاتجاه |
| 2 | دعم RTL | يصبح تغيير أدوات يسار/يمين إلى منطقية عملاً ميكانيكياً |
| 3 | صفحة المشاريع | ميزة جديدة تُبنى فوق أساس ثنائي الاتجاه منذ لحظتها الأولى |
القرارات المعمارية
Tailwind CSS بدل طبقة RTL منفصلة. هذا هو قرار المشروع المحوري. الطريقة المعتادة — ملف أنماط مقلوب يُحمّل عند اللغات العربية — تعمل في أول يوم وتتفكّك عند أول مكوّن جديد. مع Tailwind تُكتب المسافات بمنطق "بداية/نهاية" لا "يسار/يمين"، فتخدم القاعدة نفسها الاتجاهين دون تكرار، ويصبح الاتجاه خاصية في المستند لا فرعاً في الأنماط.
تحويل كامل لا تهجين. الإبقاء على أنماط القالب الأصلي جنباً إلى جنب مع Tailwind كان أسرع، لكنه يترك مصدري حقيقة للمسافات والألوان، ويجعل كل خلل في الاتجاه تحقيقاً في ملفين بدل ملف واحد.
التوزيع كوحدة فرعية في Git. القالب يُركّب داخل themes/ ويُحدّث بـ git submodule update، فيبقى منفصلاً عن محتوى المدوّنة ويستفيد من تحديثاته أي موقع يستخدمه.
النشر من خلال GitHub Actions. يوفّر المستودع مسار عمل جاهزاً يُوضع في .github/workflows/gh-pages.yml، ويفعل أربعة أشياء عند كل دفعة إلى main:
- سحب المستودع، ثم
git submodule update --init --recursiveلجلب القالب — وهي الخطوة التي ينساها الجميع فيبنى الموقع بلا تصميم. - تجهيز Hugo عبر
peaceiris/actions-hugo. - البناء بـ
hugo --minify. - النشر من
./publicإلى GitHub Pages.
التنفيذ
الناتج قالب يحتفظ ببنية LoveIt وخيارات إعداده — فمن يعرف الأصل يعرف هذا — لكن طبقته المرئية مكتوبة بـ Tailwind، وصفحاته تعمل بالعربية والإنجليزية معاً. وأُضيفت إليه صفحة مشاريع تعرض أعمال المطوّر — وهي ما كان يُبنى عادةً يدوياً فوق القالب الأصلي.
النتيجة والدروس
قالب واحد يصلح لمدوّنة عربية أولاً، دون أن يصير الدعم العربي ترقيعاً فوق تصميم إنجليزي.
- RTL قرار معماري لا ميزة. متى عُومل كميزة تُضاف في النهاية، تحوّل إلى سلسلة استثناءات لا تنتهي.
- توحيد طبقة الأنماط يسبق أي إصلاح. بدون مصدر واحد للمسافات، كل إصلاح اتجاه يُطبّق مرتين ويُنسى مرة.
- توزيع القالب جزء من المنتج. مسار عمل جاهز وتعليمات تركيب واضحة تختصر على المستخدم أكثر ممّا تفعله أي ميزة إضافية.
الروابط
- المستودع: github.com/i99dev/LoveIt-tailwindcss
- القالب الأصلي: github.com/dillonzq/LoveIt
- توثيق الإعداد: hugoloveit.com