كيف تبنون نظام إدارة المحتوى الخاص بكم (على غرار WordPress)

كان بناء نظام لإدارة المحتوى من الصفر تجربة رائعة بحق.

يُعدّ WordPress المعيار السائد، خصوصًا في مجال أنظمة إدارة المحتوى. ومن موقعه الرسمي...

يشغّل WordPress أكثر من 43% من الويب، ونسبة ذلك ترتفع يومًا بعد يوم. فمن المواقع البسيطة إلى المدونات، ومن البوابات المعقدة إلى مواقع المؤسسات، وحتى التطبيقات، كلها تُبنى باستخدام WordPress.

لكننا نلاحظ أن WordPress طُوّر في زمن لم يكن فيه بناء التطبيقات بهذه السهولة.

أما اليوم، فقد تسارعت وتيرة التطوير بلغة PHP مع تحديثات PHP الأخيرة، كما تطورت ممارسات تطوير البرمجيات.

فعلى سبيل المثال، طُبّقت في كثير من أطر العمل البرمجية بنية MVC المستوحاة من Ruby on Rails، إضافةً إلى بعض مبادئ هندسة البرمجيات.

غير أن ذلك لم يحدث مع WordPress، فما زال يعتمد على بنيته الخاصة.

لذلك تهدف هذه المقالة إلى مساعدتكم على فهم ما يمكن تحقيقه إذا طُبّقت هندسة البرمجيات الحديثة على نظام لإدارة المحتوى مثل WordPress.

ولهذا الغرض سنستخدم Laravel، وهو إطار عمل ويب بلغة PHP يطبّق عددًا من ممارسات هندسة البرمجيات.

لنناقش باختصار الميزات التي سيوفرها نظام إدارة المحتوى لدينا. وانطلاقًا من ميزات WordPress، يمكننا استخلاص أهم الميزات التالية:

  • النشر بسهولة: إن سبق لكم إنشاء مستند، فأنتم بارعون أصلًا في إنشاء المحتوى عبر WordPress. يمكنكم إنشاء المقالات والصفحات، وتنسيقها بسهولة، وإدراج الوسائط، وبنقرة زر واحدة يصبح محتواكم منشورًا على الويب.
  • أدوات النشر: يسهّل عليكم WordPress إدارة المحتوى. أنشئوا المسودات، وجدولوا موعد النشر، واطلعوا على مراجعات مقالاتكم. اجعلوا المحتوى عامًا أو خاصًا، وأمّنوا المقالات والصفحات بكلمة مرور.
  • إدارة المستخدمين: لا يحتاج الجميع إلى الصلاحيات نفسها في موقعكم. فالمديرون يديرون الموقع، والمحررون يعملون على المحتوى، والكتّاب والمساهمون يكتبونه، وللمشتركين ملف شخصي يمكنهم إدارته. وهذا يتيح لكم الاستعانة بمجموعة متنوعة من المساهمين في موقعكم، وإبقاء الآخرين جزءًا من مجتمعكم فحسب.
  • إدارة الوسائط: يقولون إن الصورة تغني عن ألف كلمة، ولهذا من المهم أن تتمكنوا من رفع الصور والوسائط إلى WordPress بسرعة وسهولة. اسحبوا الوسائط وأفلتوها في أداة الرفع لإضافتها إلى موقعكم. أضيفوا النص البديل والتعليقات التوضيحية، وأدرجوا الصور والمعارض في محتواكم. وقد أضفنا أيضًا بعض أدوات تحرير الصور التي يمكنكم الاستمتاع بتجربتها.
  • التعليقات المدمجة: مدونتكم هي بيتكم، والتعليقات تمنح أصدقاءكم ومتابعيكم مساحة للتفاعل مع محتواكم. وأدوات التعليقات في WordPress توفر لكم كل ما تحتاجون إليه لتكونوا منبرًا للنقاش ولإدارة هذا النقاش.
  • التوافق مع محركات البحث: WordPress محسَّن لمحركات البحث منذ البداية. ولمزيد من التحكم الدقيق في تحسين محركات البحث (SEO)، تتوفر إضافات كثيرة تتولى ذلك عنكم.

فلنبدأ العمل إذًا!

التثبيت

composer create-project laravel/laravel wp-laravel

لنحاول الوصول إلى تطبيقنا

php artisan serve

سنحتاج إلى إعداد قاعدة بيانات، وسيكون SQLite خير عون لنا في هذه المقالة.

touch database/database.sqlite

سنحتاج إلى تحديث ملف .env الخاص بنا

DB_CONNECTION=sqlite
DB_DATABASE=database/database.sqlite
DB_FOREIGN_KEYS=true

المرجع

لنُجرِ ترحيل (migrate) التغييرات الأولية على قاعدة البيانات

php artisan migrate

يمكننا الآن رؤية تغييرات قاعدة البيانات على النحو التالي

php artisan db:show

تم تطبيق جميع عمليات الترحيل.

نريد الآن شيئًا يشبه المقالة (Post) في WordPress. إن سبق لكم فحص جداول WordPress، فستعرفون أن هناك جدولًا باسم wp_posts. لننشئه

php artisan make:model Post

سيؤدي هذا إلى إنشاء نموذج (model) باسم Post. لننشئ الآن ملف الترحيل (migration) لتطبيق تغييرات قاعدة البيانات.

php artisan make:migration "create posts table"

الآن، لنفتح ملف الترحيل ونحدّث الشيفرة لتصبح على النحو التالي:

$table->string('title');
$table->string('slug')->nullable();
$table->text('excerpt')->nullable();
$table->longText('content')->nullable();
$table->dateTime('published_at')->nullable();
$table->foreignIdFor(\App\Models\User::class)->constrained();

تابعوا القراءة: كيف تصممون قيود خطط الاشتراك، أو اطلعوا على إضافات WordPress المجانية التي نصنعها.

هل استفدتم من هذا المقال؟

يسعدني الحصول على بريدكم الإلكتروني لأرسل لكم مقالات مثل هذا كلما نُشر مقال جديد.

    لن أرسل لكم رسائل مزعجة. يمكنكم إلغاء الاشتراك في أي وقت.