इस श्रृंखला में, हम OpenCart में एक कस्टम शिपिंग विधि मॉड्यूल के कार्यान्वयन पर चर्चा कर रहे हैं। पहले भाग में, हमने बैक-एंड में कॉन्फ़िगरेशन फॉर्म का उपयोग करके अपनी कस्टम शिपिंग विधि को सक्षम और कॉन्फ़िगर किया है। आज, हम OpenCart के लिए आवश्यक फ़ाइलों को लागू करेंगे ताकि यह कस्टम शिपिंग विधि का पता लगा सके और चेकआउट के दौरान अन्य सक्षम शिपिंग विधियों के साथ इसे सूचीबद्ध कर सके।
मुझे आशा है कि आपने इस श्रृंखला के पहले भाग से सभी फाइलें बना ली हैं। यदि आपने अभी तक पहले भाग को नहीं पढ़ा है, तो मैं आपको आगे बढ़ने से पहले इसे पढ़ने के लिए प्रोत्साहित करूंगा। साथ ही, मुझे लगता है कि आप OpenCart के नवीनतम संस्करण का उपयोग कर रहे हैं।
फ़्रंट-एंड में फ़ाइल सेटअप पर एक नज़र
आइए फ़्रंट-एंड में आवश्यक फ़ाइलों की सूची के साथ प्रारंभ करें।
catalog/language/english/shipping/custom.php
:यह एक भाषा फ़ाइल है जिसमें हम लेबल को परिभाषित करेंगे।catalog/model/shipping/custom.php
:यह एक मॉडल फ़ाइल है, जो महत्वपूर्ण है क्योंकि अधिकांश शिपिंग गणना तर्क यहां दिए गए हैं।
तो जहां तक फ्रंट-एंड सेटअप का संबंध है।
फ़ाइल सेटअप
आइए भाषा फ़ाइल सेटअप के साथ प्रारंभ करें।
भाषा फ़ाइल बनाएं
एक फ़ाइल बनाएँ catalog/language/english/shipping/custom.php
और उस फ़ाइल में निम्न सामग्री पेस्ट करें।
<?php // Text $_['text_title'] = 'Custom Rate'; $_['text_description'] = 'Custom Shipping Rate';
मुझे नहीं लगता कि इसके लिए किसी स्पष्टीकरण की आवश्यकता है, तो चलिए आगे बढ़ते हैं!
एक मॉडल फ़ाइल बनाएं
एक फ़ाइल बनाएँ catalog/model/shipping/custom.php
और उस फ़ाइल में निम्न सामग्री पेस्ट करें।
<?php class ModelShippingCustom extends Model { function getQuote($address) { $this->load->language('shipping/custom'); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('custom_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')"); if (!$this->config->get('custom_geo_zone_id')) { $status = true; } elseif ($query->num_rows) { $status = true; } else { $status = false; } $method_data = array(); if ($status) { $quote_data = array(); $quote_data['custom'] = array( 'code' => 'custom.custom', 'title' => $this->language->get('text_description'), 'cost' => $this->config->get('custom_cost'), 'tax_class_id' => $this->config->get('custom_tax_class_id'), 'text' => $this->currency->format($this->tax->calculate($this->config->get('custom_cost'), $this->config->get('custom_tax_class_id'), $this->config->get('config_tax'))) ); $method_data = array( 'code' => 'custom', 'title' => $this->language->get('text_title'), 'quote' => $quote_data, 'sort_order' => $this->config->get('custom_sort_order'), 'error' => false ); } return $method_data; } }
OpenCart सम्मेलनों के अनुसार, वर्ग का नाम ModelShippingCustom
. होना चाहिए और एक getQuote
है विधि जो OpenCart द्वारा हमारी शिपिंग विधि को अपनाने के लिए आवश्यक है।
आपको ध्यान देना चाहिए कि $address
तर्क getQuote
. में पारित किया गया है विधि, जो चेकआउट के दौरान ग्राहक का शिपिंग पता है, और यह हमें यह तय करने की अनुमति देती है कि क्या वर्तमान शिपिंग विधि उस पते से संबंधित भू क्षेत्र के लिए लागू है। यह निम्नलिखित कोड द्वारा तय किया जाता है।
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('custom_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')"); if (!$this->config->get('custom_geo_zone_id')) { $status = true; } elseif ($query->num_rows) { $status = true; } else { $status = false; }
अगला, यदि शिपिंग विधि लागू होती है, तो हम सम्मेलनों के अनुसार आवश्यक सरणी चर तैयार करते हैं।
if ($status) { $quote_data = array(); $quote_data['custom'] = array( 'code' => 'custom.custom', 'title' => $this->language->get('text_description'), 'cost' => $this->config->get('custom_cost'), 'tax_class_id' => $this->config->get('custom_tax_class_id'), 'text' => $this->currency->format($this->tax->calculate($this->config->get('custom_cost'), $this->config->get('custom_tax_class_id'), $this->config->get('config_tax'))) ); $method_data = array( 'code' => 'custom', 'title' => $this->language->get('text_title'), 'quote' => $quote_data, 'sort_order' => $this->config->get('custom_sort_order'), 'error' => false ); }
जैसा कि आप देख सकते हैं, हम $this->config->get
. का उपयोग कर रहे हैं "custom_cost", "custom_tax_class_id" और "custom_sort_order" जैसे कॉन्फ़िगरेशन चर के लिए मान लोड करने की विधि। पहले भाग को याद करें, जिसमें हमने कस्टम कॉन्फ़िगरेशन फॉर्म का उपयोग करके इन मानों को कॉन्फ़िगर किया था!
साथ ही, ध्यान देने योग्य एक महत्वपूर्ण स्निपेट text
. का मान है $quote_data
. में कुंजी सरणी। यह उस कुल राशि की गणना और प्रारूप करता है जो हमारी कस्टम शिपिंग विधि के लिए चार्ज की जाएगी। विशेष रूप से, यह जांचता है कि शिपिंग विधि की "लागत" में कोई अतिरिक्त कर जोड़ा जाना चाहिए या नहीं। कर वर्ग . को याद करें सेटिंग हमने अपने कॉन्फ़िगरेशन फ़ॉर्म में प्रदान की है, जिसमें हमने कर योग्य सामान . का चयन किया है . इस प्रकार, यह शिपिंग विधि की कुल राशि में एक अतिरिक्त कर जोड़ देगा!
हमने अपने मॉडल भाग को सरल रखने की कोशिश की है, लेकिन आप इस फ़ाइल में सभी गणनाएं अपनी शिपिंग विधि एपीआई के अनुसार कर सकते हैं, यदि कोई हो। तो जहां तक मॉडल भाग का संबंध है।
फ्रंट-एंड में डेमो
फ़्रंट-एंड में, कार्ट में कुछ उत्पाद जोड़ें और चेकआउट प्रक्रिया प्रारंभ करें. चरण 4:वितरण विधि . में , आपको नीचे दिए गए स्क्रीनशॉट में दिखाए गए अनुसार सूचीबद्ध हमारी कस्टम शिपिंग विधि देखने में सक्षम होना चाहिए।
यह "कस्टम शिपिंग दर - $14.00" . शीर्षक के साथ सूचीबद्ध है . आपको आश्चर्य हो सकता है कि यद्यपि हमने लागत . को कॉन्फ़िगर किया है 10 . के लिए पैरामीटर , यह दिखा रहा है 14 सूची मैं। जैसा कि मैंने पहले उल्लेख किया है, हमने कर योग्य सामान . को कॉन्फ़िगर किया है कर वर्ग . में बैक-एंड में कॉन्फ़िगरेशन फॉर्म में फ़ील्ड।
स्थानीयकरण> कर> कर वर्ग . पर नेविगेट करें , और कर योग्य सामान संपादित करें . आप देखेंगे कि 20% वैट और एक फ्लैट 2$ इको टैक्स इस कर वर्ग के लिए कॉन्फ़िगर किया गया है। इस प्रकार, यह शिपिंग विधि की लागत में और $4 जोड़ता है! बेशक, अगर आप कर वर्ग . सेट करते हैं करने के लिए कोई नहीं, कर बिल्कुल भी लागू नहीं होगा!
तो, आज के लिए बस इतना ही। हमने अब OpenCart में एक पूर्ण विकसित कस्टम शिपिंग विधि मॉड्यूल सफलतापूर्वक बना लिया है!