Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. OpenCart
Code

OpenCart 2 में कस्टम कंट्रोलर्स

by
Difficulty:BeginnerLength:MediumLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

आज, हम OpenCart 2.x में कंट्रोलर्स की कांसेप्ट के माध्यम से जायेंगे। OpenCart 2.x वर्शन की रिलीज़ के साथ, उन्होंने फ्रेमवर्क के बदलावों को पेश किया है, जिनके लिए आप अपग्रेड वर्शन की आवश्यकता होती है, यदि आपने पहले वर्शन में कोई कस्टम मॉड्यूल बनाया है- OpenCart 1.x। हम इस प्रैक्टिकल उदाहरण के माध्यम से चलते हैं कि हम इस ट्यूटोरियल में GuestBook कहेंगे।

इस आर्टिकल में आगे बढ़ने से पहले, आप इसे इस बात पर विचार कर सकते हैं कि मैंने पहले क्या लिखा था। उस आर्टिकल में मैंने स्पष्ट किया कि OpenCart 1.x में कस्टम पेज कैसे बना सकते है, और यदि आप पहले से ही उस आर्टिकल को फॉलो कर चुके हैं, तो आप आज के ज्यादातर हिस्सों में जल्दी से स्किप कर सकते हैं!

बेशक, यह आज OpenCart 2.x है, जिसके बारे में आज चर्चा की जाएगी, इसलिए सुनिश्चित करें कि आप कोड को क्लोज़ली से पालन करें।

यदि आप OpenCart फ्रेमवर्क पैटर्न और कंट्रोलर्स के बारे में और अधिक थ्योरी देखना चाहते हैं, तो आप उस आर्टिकल के कुछ शुरुआती सेक्शंस के माध्यम से जा सकते हैं। यह कहने के बाद, आपको इस आर्टिकल का अनुसरण करने से सीधे कुछ भी नहीं रोकना है, क्योंकि मैं किसी आवश्यक वस्तु को नहीं छोडूंगा।

क्यों एक कस्टम कंट्रोलर?

कुछ ऐसा कि आप पहली जगह पूछ रहे हो- क्यों एक कस्टम कंट्रोलर? इसमें जाने से पहले चलो जल्दी से समझ लें की OpenCart में  कंट्रोलर क्या है।

ओपनकार्ट के कॉन्टेक्स्ट में controller एक फ्रेमवर्क का अनिवार्य कॉम्पोनेन्ट है जो सीधे routing प्रक्रिया से संबंधित होता है और UI को प्रस्तुत करता है। इस प्रक्रिया में, यह अन्य महत्वपूर्ण कंपोनेंट्स जैसे भाषा, मॉडल और व्यू अंतिम परिणाम बनाने के लिए इस्तेमाल होता है।

जब आप OpenCart में किसी भी पेज को एक्सेस करते हैं, तो OpenCart फ्रेमवर्क इसी कंट्रोलर के लिए दिखता है और इसके लिए आगे डेलीगेट्स को। स्वभाव से मॉड्यूलर होने के कारण, OpenCart फ्रेमवर्क कई कंट्रोलर प्रदान करता है जो लोजीकली ग्रुप फंक्शनलिटी से निपटता है।

उदाहरण के लिए, account ग्रुप में कंट्रोलर होते हैं जो लॉगिन, रजिस्ट्रेशन, प्रोफ़ाइल और इसी के समान मामलों के साथ सौदा करते हैं। इसी तरह, कंट्रोलर के चेकआउट ग्रुप ऑर्डर क्रिएशन प्रोसेस को व्यवस्थित करता है।

संक्षेप में, जब आप एक ऐसा फीचर बनाना चाहते हैं जो ओपनकारर्ट के कोर भाग में नहीं है और अगर यह एक नया URL लेता है - OpenCart की शब्दावली में एक नया URL route है-आपको एक कस्टम कंट्रोलर के लिए जाना चाहिए। यह आपको पेज निर्माण प्रक्रिया पर पूरा नियंत्रण देता है - आप अपने कस्टम पेज पर कौन सा एलिमेंट प्रदर्शित करना चाहते हैं।

एक कस्टम कंट्रोलर बनाएँ

आज, हम मूलभूत GuestBook फंक्शनलिटी को इम्प्लीमेंट करेंगे जो कस्टम कंट्रोलर्स के कांसेप्ट को प्रदर्शित करता है। ऐसा करने के दौरान, हम फ्रंट-एंड में एक इंटरफ़ेस का निर्माण करेंगे जो कि गेस्ट यूज़र्स को अपना नाम और मैसेज दर्ज करके अपनी फीडबैक प्रस्तुत करने की अनुमति देता है।

आगे बढ़ने से पहले, सुनिश्चित करें कि आपके पास OpenCart 2.3.x का एक वर्किंग इंस्टालेशन है। बस इतना ही हमारे गैलरी फीचर पर काम करना शुरू करने के लिए बहुत है।

उन लोगों के लिए जो OpenCart स्ट्रक्चर से परिचित नहीं हैं, फ्रंट-एंड कंट्रोलर्स को देखने के लिए जगह catalog/controller है। यह डायरेक्टरी है जो ग्रुप द्वारा सभी कंट्रोलर्स का मैनेज करती है, उपलब्ध कराये गए फीचर्स के आधार पर।

हमारे मामले में, हम guestbook नामक एक अलग ग्रुप बना देंगे। आगे बढ़ो और एक डायरेक्टरी catalog/controller/guestbook बनाएं। उस डायरेक्टरी में, निम्नलिखित कंटेंट के साथ एक entry.php फ़ाइल बनाएं। यह एक कंट्रोलर फ़ाइल है जो एप्लीकेशन लॉजिक को संभालती है और हमारी Guestbook फंक्शनलिटी का सबमिशन लॉजिक भी।

OpenCart नेमिंग कन्वेंशन के अनुसार, क्लास का नाम Controller कीवर्ड के साथ शुरू होता है, उसके बाद डायरेक्टरी नाम, हमारे मामले में Guestbook, जिसमें क्लास फ़ाइल रहता है। इसके अलावा, क्लास फ़ाइल का नाम, हमारे मामले में Entry, अंत में ऍपेन्ड (append) होता है।

प्रत्येक कंट्रोलर क्लास एक वास्तविक index मेथड प्रदान करता है जो कंट्रोलर के अधिकांश लॉजिक को नियंत्रित करता है। अगला, हम index मेथड में कोड के माध्यम से जायेंगे और आवश्यकतानुसार हम अन्य फाइल भी बनाएंगे।

ज्यादातर समय, हम विशिष्ट ग्रुप के लिए लैंग्वेज फाइल को शामिल करके शुरू करेंगे। यह तरीका OpenCart एप्लिकेशन के दौरान स्थिर भाषा लेबल को प्रबंधित करता है। बेशक, यह बहु भाषा साइटों को एक हवा के सामान कार्यान्वयन बनाता है।

आगे बढ़ने से पहले, इसी भाषा फाइल को बनाते हैं ताकि हमारे कंट्रोलर इसे पा सकें। निम्नलिखित कंटेंट के साथ एक catalog/language/en-gb/guestbook/guestbook.php फ़ाइल बनाएं।

जैसा कि आप देख सकते हैं, हम केवल भाषा ऐरे (array) में उनके वैल्यूज के साथ लेबल निर्दिष्ट कर रहे हैं।

हमारे कंट्रोलर पर वापस जाएं, अगली बात हमारे पेज के लिए HTML टाइटल टैग सेट करना है।

तीक्ष्ण आंखों वाले यूज़र्स यह देख पाएंगे कि हमने एक पल पहले बनाई गई भाषा फ़ाइल में परिभाषित heading_title लैंग्वेज वेरिएबल का उपयोग किया है।

कोड के अगले हिस्से को समझने के लिए, हमें एक मॉडल फाइल बनाने की आवश्यकता है। तो एक पल के लिए, मैं आपको निम्नलिखित कंटेंट के साथ catalog/model/guestbook/guestbook.php पर मॉडल फाइल बनाने के लिए डाइवर्ट कर दूँगा।

ओपनकार्ट में, मॉडल एप्लीकेशन के बिज़नेस लॉजिक को संभालने के लिए जिम्मेदार है। क्या आप किसी भी लॉजिक को इम्प्लीमेंट करना चाहते हैं जिसमें डेटाबेस शामिल है, यह वह जगह है जहां इसे अंदर जाना चाहिए।

मॉडल क्लास का नेमिंग कन्वेंशन कंट्रोलर क्लास के समान ही है। चीजों को सरल बनाए रखने के लिए, हमने processGuestbookEntry नाम के एक मेथड को लागू किया जो एडमिन द्वारा ईमेल के माध्यम से स्टोर के एडमिन को सूचित करता है, जब कोई यूज़र Guestbook एंट्री को सबमिट करता है। बहुत आसान, है ना?

आइए हमारे कंट्रोलर पर वापस आ जाओ, और queue में कोड के अगले टुकड़े की जांच करें।

यह एक वैलिड POST रिक्वेस्ट की जांच करता है और validate मेथड को कॉल करके यूज़र्स द्वारा सबमिट किए गए डेटा के बुनियादी वेलिडेशन करता है।

कोड $this->load->model('guestbook/guestbook') का उपयोग मॉडल को लोड करने के लिए किया जाता है जिसे हमने एक पल पहले डिफाइन किया था। इसके तुरंत बाद, हम यूज़र्स इनपुट के आधार पर $data ऐरे (array) तैयार करते हैं और processGuestbookEntry मेथड को कॉल करते हैं, जो कि Guestbook एंट्री के बारे में स्टोर एडमिन को सूचित करता है अंत में, हम यूज़र्स को Guestbook एंट्री पेज पर रीडायरेक्ट करते हैं।

कंट्रोलर में आगे बढ़ते हुए, निम्नलिखित स्निपेट सक्सेस मैसेज सेट करता है जो फॉर्म को सबमिट करने पर प्रदर्शित किया जाएगा।

उसके बाद, एक स्निपेट का उपयोग पेज के लिए ब्रेडक्रुम्ब लिंक्स बनाने के लिए किया जाता है।

अगला स्निपेट महत्वपूर्ण है, और ऐसा कुछ है जिसे आप कंट्रोलर मेथड से व्यू टेम्प्लेट तक की जानकारी देने के लिए अधिकतर समय उपयोग करेंगे।

वेरिएबल्स असाइन करने के जैसे ही, ओपनकार्ट पेज-हैडर, फुटर और इसी के सामान स्निपेट में दिखाए गए चित्रों के सामान्य एलिमेंट्स को आरंभ करता है।

अंत में, यह व्यू टेम्पलेट को वास्तविक पेज को प्रस्तुत करने के लिए कहता है!

बेशक, हमने अभी तक कोई व्यू टेम्पलेट नहीं बनाया है ऐसा करने के लिए यह सही समय है! आगे बढ़ो और निम्नलिखित कंटेंट के साथ एक catalog/view/theme/default/template/guestbook/entry.tpl फ़ाइल बनाएं।

यह हमारा मुख्य व्यू टेम्पलेट फ़ाइल है जो हमारे Guestbook पेज के कंटेंट को प्रदर्शित करने के लिए ज़िम्मेदार है। इस फाइल में, हमने बस वैरिएबल का इस्तेमाल किया है जो कंट्रोलर की index मेथड में स्थापित किए गए थे।

यह ध्यान रखना ज़रूरी है कि रेस्पोंसिवेनेस्स कुछ ऐसी हो जो Bootstrap फ्रेमवर्क द्वारा सपोर्टेड OpenCart के नवीनतम वर्शन के साथ आता हो। इसके अलावा, यह काफी नियमित HTML स्टफ है जो समझने में काफी आसान है।

इसलिए, यह तब तक है जब तक फ़ाइल सेटअप का संबंध है।

अब हमारे पास सब कुछ है, लेकिन आप फ्रंट-एन्ड से उस तक कैसे पहुंचेंगे?

फ्रंट-एंड में, आप route क्वेरी स्ट्रिंग वैरिएबल को जोड़कर Guestbook पेज तक पहुंच सकते हैं, इसलिए URL http://your-opencart-store-url/index.php?route=guestbook/entry की तरह होना चाहिए।

आइए हम समझें कि ओपेनकार्ट विशिष्ट कंट्रोलर फाइल के लिए URL को कैसे मैप करता है। रूट वैरिएबल का फॉर्मेट {directory} / {filename} / {methodname} है।

  • catalog/controller डायरेक्टरी के अंडर {directory} कॉम्पोनेन्ट मैप होता है।
  • catalog/controller/{directory} के तहत कंट्रोलर फ़ाइल के नाम पर {filename} मैप करता है।
  • अंत में, यह रूट में निर्दिष्ट किए जाने वाले, {methodname} नामक कंट्रोलर मेथड को देखेंगे, अन्यथा यह डिफ़ॉल्ट index मेथड को कॉल करेगा।

अंतिम परिणाम कैसा दिखता है।

Guestbook Page

बेशक, आप आगे जाकर फॉर्म सबमिट करके टेस्ट कर सकते हैं, और आपको ईमेल एड्रेस को एक ईमेल नोटिफिकेशन प्राप्त होनी चाहिए जो स्टोर एडमिन के रूप में रजिस्टर है।

निष्कर्ष

किसी भी फ्रेमवर्क में, आगे बढ़ने और अपनी स्वयं की कस्टम फंक्शनलिटी को लागू करना हमेशा ही रोमांचित होता है। यह आज के ट्यूटोरियल का एक्साक्ट्ली विषय था, जिसमें हमने OpenCart को एक्सटेंड कर दिया और Guestbook की एक बहुत सरल लेकिन फिर भी उपयोगी फंक्शनलिटी के निर्माण के द्वारा कस्टम कंट्रोलर्स का विकास किया।

इस प्रक्रिया में, हमें एहसास हुआ कि यह सिर्फ कंट्रोलर्स के बारे में नहीं है- कुछ अन्य महत्वपूर्ण एलिमेंट्स हैं जो अनिवार्य थे इसलिए हमने उनको भी शुरू किया: Model, Language, और View।

अंत में, लेख के आरंभ में मैंने जो वादा किया था, उसके वर्किंग यूज़-केस को देखना अच्छा था। तो, यह आज के लिए है, और अपने प्रश्नों और कमैंट्स को छोड़ने में संकोच न करें। इसके अलावा, मुझे आपकी ओर से सुनना अच्छा लगेगा यदि कोई विशेष विषय है जो आप चाहते हैं कि मैं अपने लेख में ले कर आऊं!

हमेशा की तरह, यदि आप अतिरिक्त OpenCart टूल्स, यूटिलिटीज, एक्सटेंशन्स, और इसके लिए देख रहे हैं, तो आप अपनी खुद की प्रोजेक्ट्स में या अपनी खुद की एजुकेशन के लिए लाभ उठा सकते हैं, यह देखना मत भूलें कि marketplace में हमारे पास क्या उपलब्ध है।

यदि आपने इस आर्टिकल का आनंद उठाया है, तो मेरे पास कुछ और केस भी हैं, यदि आप उनके लिए जाना चाहते हैं!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.