अपना खुद का कंटेंट मैनेजमेंट सिस्टम कैसे बनाएं (WordPress जैसा)
कंटेंट मैनेजमेंट सिस्टम को शुरू से बनाना हमारे लिए एक शानदार अनुभव रहा है।
कंटेंट मैनेजमेंट सिस्टम की दुनिया में WordPress ही आम तौर पर मानक रहा है। इसकी वेबसाइट के अनुसार...
WordPress इंटरनेट की 43% से ज़्यादा वेबसाइटों को चलाता है, और यह आँकड़ा हर दिन बढ़ रहा है। साधारण वेबसाइट, ब्लॉग, जटिल पोर्टल, एंटरप्राइज़ वेबसाइट और यहाँ तक कि ऐप्लिकेशन भी WordPress से बनाए जाते हैं।
लेकिन हम देख सकते हैं कि WordPress उस दौर में बना था जब ऐप्लिकेशन बनाना इतना आसान नहीं था।
आजकल PHP का विकास तेज़ हो गया है, जैसा कि हाल के PHP अपडेट से दिखता है, और सॉफ़्टवेयर डेवलपमेंट के तरीके भी बदल गए हैं।
उदाहरण के लिए, Ruby on Rails से प्रेरित MVC स्ट्रक्चर और सॉफ़्टवेयर आर्किटेक्चर के कुछ सिद्धांत अब कई सॉफ़्टवेयर फ़्रेमवर्क में अपनाए जा चुके हैं।
लेकिन WordPress में ऐसा नहीं हुआ, वह आज भी अपने ही स्ट्रक्चर पर चलता है।
इसलिए इस लेख का मकसद यह समझने में आपकी मदद करना है कि अगर WordPress जैसे कंटेंट मैनेजमेंट सिस्टम में आधुनिक सॉफ़्टवेयर आर्किटेक्चर अपनाया जाए, तो क्या कुछ किया जा सकता है।
इसके लिए हम Laravel का इस्तेमाल करेंगे, जो एक PHP वेब फ़्रेमवर्क है और सॉफ़्टवेयर इंजीनियरिंग की कुछ अच्छी प्रथाओं पर बना है।
आइए संक्षेप में देखें कि हमारे कंटेंट मैनेजमेंट सिस्टम में कौन-सी सुविधाएँ होंगी। WordPress की सुविधाओं के आधार पर हम कुछ मुख्य सुविधाएँ चुन सकते हैं, जैसे:
- आसानी से पब्लिश करें: अगर आपने कभी कोई डॉक्यूमेंट बनाया है, तो WordPress पर कंटेंट बनाना आपके लिए मुश्किल नहीं होगा। आप पोस्ट और पेज बना सकते हैं, उन्हें आसानी से फ़ॉर्मैट कर सकते हैं, मीडिया जोड़ सकते हैं, और एक क्लिक में आपका कंटेंट वेब पर लाइव हो जाता है।
- पब्लिशिंग टूल: WordPress में अपना कंटेंट मैनेज करना आसान है। ड्राफ़्ट बनाएँ, पब्लिश करने का समय तय करें, और पोस्ट के पुराने वर्ज़न देखें। अपना कंटेंट सार्वजनिक या निजी रखें, और पोस्ट व पेज को पासवर्ड से सुरक्षित करें।
- यूज़र मैनेजमेंट: हर किसी को आपकी वेबसाइट पर एक जैसी पहुँच की ज़रूरत नहीं होती। एडमिनिस्ट्रेटर साइट संभालते हैं, एडिटर कंटेंट पर काम करते हैं, ऑथर और कंट्रीब्यूटर वह कंटेंट लिखते हैं, और सब्सक्राइबर के पास अपनी एक प्रोफ़ाइल होती है जिसे वे खुद मैनेज कर सकते हैं। इससे आपकी वेबसाइट पर कई तरह के योगदानकर्ता हो सकते हैं, और बाकी लोग बस आपकी कम्युनिटी का हिस्सा बने रह सकते हैं।
- मीडिया मैनेजमेंट: कहा जाता है कि एक तस्वीर हज़ार शब्दों के बराबर होती है, इसीलिए ज़रूरी है कि आप WordPress पर इमेज और मीडिया जल्दी और आसानी से अपलोड कर सकें। अपनी मीडिया फ़ाइलों को अपलोडर में ड्रैग और ड्रॉप करके वेबसाइट में जोड़ें। ऑल्ट टेक्स्ट और कैप्शन जोड़ें, और अपने कंटेंट में इमेज और गैलरी डालें। हमने इमेज एडिट करने के कुछ टूल भी दिए हैं, जिन्हें आप आज़माकर देख सकते हैं।
- बिल्ट-इन कमेंट: आपका ब्लॉग आपका घर है, और कमेंट आपके दोस्तों और फ़ॉलोअर्स को आपके कंटेंट से जुड़ने की जगह देते हैं। WordPress के कमेंट टूल में वह सब कुछ है जो चर्चा का मंच बनाने और उस चर्चा को मॉडरेट करने के लिए चाहिए।
- सर्च इंजन के लिए ऑप्टिमाइज़्ड: WordPress शुरू से ही सर्च इंजन के लिए ऑप्टिमाइज़्ड है। SEO पर और बारीकी से नियंत्रण चाहिए तो इसके लिए कई 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
आइए अपने शुरुआती डेटाबेस बदलावों को माइग्रेट करें
php artisan migrate
अब हम अपने डेटाबेस के बदलाव इस तरह देख सकते हैं
php artisan db:show
सभी माइग्रेशन लागू हो चुके हैं।
अब हम WordPress के Post जैसा कुछ चाहते हैं। अगर आपने कभी WordPress की टेबल देखी हैं, तो आप जानते होंगे कि उसमें wp_posts नाम की एक टेबल होती है। आइए उसे बनाएँ
php artisan make:model Post
इससे Post नाम का एक मॉडल बन जाएगा। अब डेटाबेस में बदलाव लागू करने के लिए माइग्रेशन बनाते हैं।
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 प्लगइन देखें।