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
जैसा कि नाम से पता चलता है कि एक डेटाबेस मौजूद उपसर्ग है जिसमें कोई मौजूद है
$result
SELECT
कुछ गुणों वाले प्रश्नों के लिए एक वस्तु लौटाएगा
$result->row
यदि एक या अधिक को एक साहचर्य सरणी के रूप में लौटाया जाता है तो पहली पंक्ति का डेटा होता है
$result->rows
पंक्ति परिणामों की एक सरणी होती है, जिसमें फ़ॉर्च का उपयोग करके लूपिंग के लिए आदर्श होता है
$result->num_rows
इसमें दिए गए परिणामों की संख्या शामिल है
$this->db
ऑब्जेक्ट में कुछ अतिरिक्त विधियाँ भी हैं
$this->db->escape()
पास किए गए मूल्य पर mysql_real_escape_string () का उपयोग करता है
$this->db->countAffected
UPDATE
क्वेरी वगैरह से प्रभावित पंक्तियों की संख्या लौटाता है
$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
सारांश
हालांकि ऊपर डेवलपर्स के लिए बुलेटप्रूफ गाइड नहीं है, उम्मीद है कि यह शुरू होने वाले लोगों के लिए एक अच्छा शुरुआती बिंदु होगा