OpenCart 1.5.X डेवलपर शुरुआती के लिए त्वरित आरंभ गाइड
यह गाइड PHP, OOP और MVC आर्किटेक्चर से पहले से परिचित डेवलपर्स के लिए लिखा गया है
निम्नलिखित में, आप कार्ट के कैटलॉग पक्ष के लिए उदाहरण देखेंगे। व्यवस्थापन पक्ष संबंधित अनुभाग में नोट किए गए विचारों के अपवाद के साथ कार्य में समान है
पुस्तकालयों को समझना
पुस्तकालय कार्यक्षमता के सभी नियंत्रक, मॉडल और उपयोग के माध्यम से सुलभ है $this->library_name। ये सभी /system/library/फ़ोल्डर में पाए जा सकते हैं । उदाहरण के लिए, वर्तमान शॉपिंग कार्ट के उत्पादों को एक्सेस करने के लिए, आपको Cartक्लास का उपयोग करने की आवश्यकता होगी , जो कि /system/library/cart.phpउपयोग में लाया जा सकता है$this->cart->getProducts()
आमतौर पर इस्तेमाल की जाने वाली वस्तुएं
customer.php - ग्राहक संबंधी कार्य
user.php - उपयोगकर्ता संबंधित कार्यों को प्रशासित करें
cart.php - गाड़ी संबंधी कार्य
config.php - सभी सेटिंग्स इससे भरी हुई हैं
url.php - URL पीढ़ी के कार्य
मार्ग पैरामीटर को समझना
OpenCart का ढांचा route=aaa/bbb/cccक्वेरी स्ट्रिंग पैरामीटर पर निर्भर करता है ताकि यह पता चल सके कि क्या लोड करना है, और प्रत्येक पृष्ठ के लिए आपको जिन फ़ाइलों को संपादित करने की आवश्यकता है उन्हें खोजने के लिए अंडरपिनिंग सुविधा है। अधिकांश मार्ग वास्तव में केवल उसी का उपयोग करते हैं aaa/bbbजिसे दो भागों के रूप में देखा जाना चाहिए, हालांकि कुछ में तीन भाग होते हैं aaa/bbb/cccपहला भाग aaaआमतौर पर एक सामान्य फ़ोल्डर जैसे नियंत्रक या टेम्पलेट फ़ोल्डर के भीतर फ़ोल्डर से संबंधित होता है। दूसरा भाग आम तौर पर प्रासंगिक .phpया .tplविस्तार के बिना, फ़ाइल नाम से संबंधित है । तीसरे भाग को नीचे दिए गए "अंडरस्टैंडिंग कंट्रोलर्स" सेक्शन में समझाया गया है
भाषाओं को समझना
भाषाओं को सबफ़ोल्डर में /catalog/language/फ़ोल्डर में संग्रहीत किया जाता है your-language। इसके भीतर, विभिन्न पृष्ठों पर उपयोग किए जाने वाले सामान्य पाठ मान your-language.phpफ़ोल्डर के अंदर फ़ाइल में संग्रहीत किए जाते हैं , इसलिए कैटलॉग पक्ष पर अंग्रेजी भाषा के लिए, आपको इसमें मान मिलेंगे catalog/language/english/english.php। विशिष्ट पृष्ठ पाठ के लिए, आपको पृष्ठ की आवश्यकता होगी route(यह आमतौर पर मामला है, लेकिन हमेशा नहीं जैसा कि आप अपनी पसंद की किसी भी भाषा फ़ाइल को निर्दिष्ट कर सकते हैं)। उदाहरण के लिए, खोज पृष्ठ में मार्ग है product/search, और इसलिए उस पृष्ठ के लिए भाषा विशिष्ट पाठ में पाया जा सकता है catalog/language/english/product/search.php(फ़ाइल का नाम और सबफ़ोल्डर उसके बाद के मार्ग से मेल खाता है .php।
किसी नियंत्रक में भाषा लोड करने के लिए, आप उपयोग करते हैं
$this->language->load('product/search');
फिर आप getविशिष्ट भाषा ग्रंथों को पुनः प्राप्त करने के लिए भाषा लाइब्रेरी फ़ंक्शन का उपयोग कर सकते हैं , जैसे कि
$some_variable = $this->language->get('heading_title');
भाषा चर को भाषा फ़ाइल में एक विशेष चर का उपयोग करके असाइन किया $_जाता है जो कुंजियों और पाठ मानों की एक सरणी होती है। अपने में /catalog/language/english/product/search.phpआपको कुछ ऐसा ही मिलना चाहिए
$_['heading_title'] = 'Search';
वैश्विक भाषा फ़ाइल में मान english/english.phpस्वचालित रूप से लोड और $this->language->loadविधि के बिना उपयोग करने के लिए उपलब्ध हैं
नियंत्रकों को समझना
नियंत्रकों के आधार पर लोड किए जाते हैं routeऔर समझने के लिए काफी सीधे आगे होते हैं। नियंत्रक /catalog/controller/फ़ोल्डर में स्थित हैं । अंतिम उदाहरण से जारी है, खोज पृष्ठ के लिए नियंत्रक /product/search.phpइस फ़ोल्डर में है। फिर से ध्यान दें कि इसके बाद वाले मार्ग .phpका उपयोग किया जाता है।
नियंत्रक फ़ाइल को खोलने पर, आप एक पास्कल केस क्लासनाम देखेंगे जो क्लास को बढ़ा रहा है Controller, जिसे कहा जाता है ControllerProductSearch। यह फिर से रूट के लिए विशिष्ट है, Controllerइसके बाद सबफ़ोल्डर नाम और फ़ाइल नाम के बिना विस्तार किए गए कैपिटल। पूंजीकरण वास्तव में आवश्यक नहीं है, लेकिन यह आसान पठनीयता के लिए अनुशंसित है। यह ध्यान देने योग्य है कि वर्ग नाम अक्षरों और संख्याओं के अलावा सबफ़ोल्डर और फ़ाइल नाम से कोई मान नहीं लेते हैं। अंडरस्कोर हटा दिए जाते हैं।
कक्षा के भीतर विधियां हैं। घोषित वर्ग में विधियाँ publicमार्ग से चलाने के लिए सुलभ privateहैं - नहीं हैं। डिफ़ॉल्ट रूप से, मानक दो भाग मार्ग ( aaa/bbbऊपर) के साथ, एक डिफ़ॉल्ट index()विधि कहा जाता है। यदि किसी मार्ग ( cccऊपर) के तीसरे भाग का उपयोग किया जाता है, तो इस विधि को इसके बजाय चलाया जाएगा। उदाहरण के लिए, फ़ाइल और कक्षा account/return/insertको लोड करेगा /catalog/controller/account/return.php, और insertविधि को कॉल करने का प्रयास करेगा
मॉडल को समझना
ओपनकार्ट में मॉडल /catalog/model/फ़ोल्डर में पाए जाते हैं और फ़ंक्शन के आधार पर समूहीकृत किए जाते हैं, मार्ग नहीं, और इसलिए आपको उन्हें अपने नियंत्रक में लोड करना होगा
$this->load->model('xxx/yyy');
यह फाइल को सबफ़ोल्डर में लोड करेगा xxxजिसे कहा जाता है yyy.php। यह तब ऑब्जेक्ट के माध्यम से उपयोग करने के लिए उपलब्ध है
$this->model_xxx_yyy
और नियंत्रकों के साथ, आप केवल इसके publicतरीकों को कॉल कर सकते हैं । उदाहरण के लिए, एक छवि का आकार बदलने के लिए, आप tool/imageमॉडल का उपयोग करेंगे और इसकी resizeविधि इस प्रकार है
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
नियंत्रक से विचारों में परिवर्तनशील चर को समझना
नियंत्रक से दृश्य में मानों को पारित करने के लिए, आपको बस अपने डेटा को $this->dataवेरिएबल पर असाइन करने की आवश्यकता होती है , जो मूल रूप से कुंजी => मूल्य जोड़े का एक सरणी है। उदहारण के लिए
$this->data['example_var'] = 123;
यदि आप एक्स्ट्रेक्ट () विधि से परिचित होते हैं जो प्रत्येक कुंजी को एक चर में परिवर्तित करता है, तो इसे समझना आसान है । तो example_varकुंजी बन जाती है $example_varऔर दृश्य में इस तरह से पहुँचा जा सकता है।
विषयों को समझना
थीम केवल कैटलॉग पक्ष के लिए उपलब्ध हैं, और मूल रूप से टेम्पलेट, स्टाइलशीट और थीम छवियों का एक फ़ोल्डर है। थीम फ़ोल्डर को /catalog/view/theme/थीम नाम के बाद फ़ोल्डर में रखा जाता है । फ़ोल्डर नाम के अपवाद के साथ महत्व का नहीं है defaultफ़ोल्डर
व्यवस्थापक पक्ष का उपयोग करता है /admin/view/template/( /theme/theme-name/रास्ते से लंघन करना क्योंकि यह अलग-अलग विषयों की अनुमति नहीं देता है)
टेम्पलेट फ़ाइलें templateथीम फ़ोल्डर के भीतर एक फ़ोल्डर में रहती हैं । क्या वर्तमान में चयनित थीम के लिए कोई भी टेम्पलेट उपलब्ध नहीं होना चाहिए, डिफ़ॉल्ट फ़ोल्डर के टेम्पलेट का उपयोग फ़ॉलबैक के रूप में किया जाता है। इसका मतलब है कि थीम बहुत कम फ़ाइलों के साथ बनाई जा सकती हैं और अभी भी पूरी तरह से काम कर सकती हैं। यह कोड के दोहराव को भी कम करता है और उन्नयन के रूप में मुद्दे बनाए जाते हैं
विचारों को समझना (टेम्प्लेट)
भाषा और मॉडल के साथ, दृश्य फ़ाइल आमतौर पर मार्ग से संबंधित होती है, हालांकि यह बिल्कुल भी नहीं है। कैटलॉग साइड में टेम्प्लेट आमतौर पर /catalog/view/theme/your-theme/template/तब तक पाए जाते हैं जब तक कि यह मौजूद न हो, इस मामले में डिफ़ॉल्ट थीम के टेम्प्लेट का उपयोग किया जाएगा। ऊपर हमारे खोज पृष्ठ उदाहरण के लिए, फ़ाइल है product/search.tpl। तीन भागों वाले मार्गों के लिए, यह आम तौर पर होता है, aaa/bbb_ccc.tplहालांकि इसमें कोई कठोर नियम नहीं होता है। व्यवस्थापक में, अधिकांश पृष्ठ इसका अनुसरण करते हैं, इस अपवाद के साथ कि उत्पाद प्रविष्टि पृष्ठ की तरह आइटम सूचीबद्ध करने वाले पृष्ठ अंदर हैं, catalog/product_list.tplऔर उत्पाद संपादन फ़ॉर्म में हैं catalog/product_form.tpl। फिर, ये सेट नहीं हैं, लेकिन डिफ़ॉल्ट कार्ट के लिए एक मानक है।
टेम्प्लेट फ़ाइल वास्तव में एक और php फाइल है, लेकिन एक .tpl एक्सटेंशन के साथ और वास्तव में कंट्रोलर फाइल में चलाई जाती है, इसलिए कंट्रोलर में कोड की जा सकने वाली सभी चीजों को एक टेम्प्लेट फाइल में चलाया जा सकता है (हालांकि अनुशंसित नहीं है जब तक कि बिल्कुल नहीं ज़रूरी)
डेटाबेस ऑब्जेक्ट को समझना
क्वेरीज़ का उपयोग करके चलाया जाता है
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX जैसा कि नाम से पता चलता है कि एक डेटाबेस मौजूद उपसर्ग है जिसमें कोई मौजूद है
$resultSELECTकुछ गुणों वाले प्रश्नों के लिए एक वस्तु लौटाएगा
$result->row यदि एक या अधिक को एक साहचर्य सरणी के रूप में लौटाया जाता है तो पहली पंक्ति का डेटा होता है
$result->rows पंक्ति परिणामों की एक सरणी होती है, जिसमें फ़ॉर्च का उपयोग करके लूपिंग के लिए आदर्श होता है
$result->num_rows इसमें दिए गए परिणामों की संख्या शामिल है
$this->dbऑब्जेक्ट में कुछ अतिरिक्त विधियाँ भी हैं
$this->db->escape()पास किए गए मूल्य पर mysql_real_escape_string () का उपयोग करता है
$this->db->countAffectedUPDATEक्वेरी वगैरह से प्रभावित पंक्तियों की संख्या लौटाता है
$this->db->getLastId()mysql_insert_id () का उपयोग करके अंतिम ऑटो वेतन वृद्धि आईडी लौटाता है
आरक्षित चरों को समझना
OpenCart मानक के स्थान पर उपयोग करने के लिए चर पूर्वनिर्धारित है $_GET, $_POST, $_SESSION, $_COOKIE, $_FILES, $_REQUESTऔर$_SERVER
$_SESSION$this->session->dataजहाँ डेटा एक साहचर्य सरणी की नकल कर रहा है, का उपयोग करके संपादित किया जाता है$_SESSION
अन्य सभी का उपयोग करके पहुँचा जा सकता है $this->requestऔर सक्षम / अक्षम किए गए जादू उद्धरणों के अनुपालन के लिए "साफ" किया गया है
$_GET हो जाता है $this->request->get
$_POST हो जाता है $this->request->post
$_COOKIE हो जाता है $this->request->cookie
$_FILES हो जाता है $this->request->files
$_REQUEST हो जाता है $this->request->request
$_SERVER हो जाता है $this->request->server
सारांश
हालांकि ऊपर डेवलपर्स के लिए बुलेटप्रूफ गाइड नहीं है, उम्मीद है कि यह शुरू होने वाले लोगों के लिए एक अच्छा शुरुआती बिंदु होगा