शॉपिफाई फ़ंक्शंस पूर्ण गाइड: स्केल पर व्यावसायिक तर्क को अनुकूलित करें
शॉपिफाई फ़ंक्शंस डेवलपर्स को कोर कॉमर्स लॉजिक को अनुकूलित करने की अनुमति देता है जो बाहरी सर्वर के बजाय शॉपिफाई के बुनियादी ढांचे के भीतर चलता है। इसका मतलब है कस्टम छूट गणना, भुगतान विधि फ़िल्टरिंग, शिपिंग दर संशोधन, और कार्ट सत्यापन नेटवर्क विलंबता के बिना मिलीसेकंड में निष्पादित होता है। फ़ंक्शंस ने स्क्रिप्ट एडिटर (शॉपिफाई स्क्रिप्ट्स) को प्रतिस्थापित कर दिया और प्लेटफ़ॉर्म पर बैकएंड अनुकूलन के भविष्य का प्रतिनिधित्व करते हैं। यह मार्गदर्शिका प्रत्येक फ़ंक्शन प्रकार, विकास वर्कफ़्लो और परिनियोजन पैटर्न को कवर करती है।
मुख्य बातें
- Shopify फ़ंक्शंस Shopify के बुनियादी ढांचे के भीतर एक WebAssembly सैंडबॉक्स में निष्पादित होते हैं, जिससे उप-5ms निष्पादन समय सुनिश्चित होता है
- पांच फ़ंक्शन एपीआई उपलब्ध हैं: छूट, भुगतान अनुकूलन, वितरण अनुकूलन, कार्ट सत्यापन और ऑर्डर रूटिंग
- फ़ंक्शंस रस्ट, जावास्क्रिप्ट, या वेबअसेंबली में संकलित किसी भी भाषा में लिखे गए हैं
- प्रत्येक फ़ंक्शन GraphQL क्वेरी परिणामों के माध्यम से इनपुट प्राप्त करता है और संरचित आउटपुट देता है जिसे Shopify ऑपरेशन पर लागू करता है
- फ़ंक्शंस Shopify ऐप्स के हिस्से के रूप में तैनात किए गए हैं और व्यापारियों द्वारा व्यवस्थापक के माध्यम से कॉन्फ़िगर किए जा सकते हैं
शॉपिफाई फ़ंक्शन क्या हैं?
शॉपिफ़ फ़ंक्शंस हल्के प्रोग्राम हैं जो पूर्वनिर्धारित विस्तार बिंदुओं पर विशिष्ट वाणिज्य संचालन को अनुकूलित करते हैं। वेबहुक (जो बाहरी सर्वर को डेटा भेजता है) के विपरीत, फ़ंक्शंस Shopify के बुनियादी ढांचे के अंदर WebAssembly मॉड्यूल के रूप में चलते हैं, गारंटी देते हैं:
- गति: उप-5 एमएस निष्पादन (कोई नेटवर्क विलंबता नहीं)
- विश्वसनीयता: कोई बाहरी सर्वर निर्भरता नहीं
- पैमाना: क्षमता योजना के बिना किसी भी यातायात मात्रा को संभालता है
- सुरक्षा: बिना फ़ाइल सिस्टम या नेटवर्क एक्सेस के सैंडबॉक्स्ड निष्पादन
फ़ंक्शन एपीआई
| एपीआई | उद्देश्य | प्रतिस्थापित करता है |
|---|---|---|
| छूट | कस्टम छूट तर्क (बीओजीओ, स्तरीय, सशर्त) | शॉपिफाई स्क्रिप्ट्स (लाइन आइटम छूट) |
| भुगतान अनुकूलन | चेकआउट के समय भुगतान विधियाँ दिखाएँ/छिपाएँ/पुनः व्यवस्थित करें | भुगतान विधि सशर्त तर्क |
| डिलिवरी अनुकूलन | शिपिंग दरें, नाम और उपलब्धता संशोधित करें | शिपिंग दर स्क्रिप्ट |
| कार्ट सत्यापन | कार्ट सामग्री को सत्यापित करें और अमान्य संयोजनों को ब्लॉक करें | कार्ट विशेषता सत्यापन |
| ऑर्डर रूटिंग | पूर्ति स्थान चयन को अनुकूलित करें | डिफ़ॉल्ट स्थान रूटिंग |
विकास का माहौल
पूर्वावश्यकताएँ
- शॉपिफाई सीएलआई (नवीनतम संस्करण)
- नोड.जेएस 18+
- एक शॉपिफाई पार्टनर अकाउंट और डेवलपमेंट स्टोर
- रस्ट टूलचेन (जंग-आधारित कार्यों के लिए) या जावास्क्रिप्ट रनटाइम
एक फ़ंक्शन बनाना
Shopify CLI का उपयोग करके एक नया फ़ंक्शन तैयार करें:
npx shopify app generate extension चलाएँ और फ़ंक्शन प्रकार चुनें। सीएलआई उत्पन्न करता है:
| फ़ाइल | उद्देश्य |
|---|---|
src/run.js (या run.rs) | फ़ंक्शन तर्क |
input.graphql | इनपुट डेटा को परिभाषित करने वाली ग्राफक्यूएल क्वेरी |
shopify.extension.toml | कॉन्फ़िगरेशन और मेटाडेटा |
schema.graphql | शॉपिफाई एपीआई स्कीमा (स्वचालित रूप से जेनरेट किया गया) |
विकास कार्यप्रवाह
- इनपुट क्वेरी को परिभाषित करें:
input.graphqlमें ग्राफक्यूएल क्वेरी लिखें जो आपके फ़ंक्शन के लिए आवश्यक डेटा प्राप्त करती है - तर्क लागू करें:
src/run.jsमें फ़ंक्शन लिखें जो इनपुट को आउटपुट में बदलता है - स्थानीय रूप से परीक्षण करें:
npx shopify app function testके साथ यूनिट परीक्षण चलाएं - तैनाती:
npx shopify app deployके साथ शॉपिफाई करने के लिए पुश करें - कॉन्फ़िगर: व्यापारी ऐप के यूआई के माध्यम से फ़ंक्शन पैरामीटर कॉन्फ़िगर करते हैं
छूट कार्य
डिस्काउंट फ़ंक्शन कैसे काम करते हैं
एक डिस्काउंट फ़ंक्शन कार्ट डेटा (लाइन आइटम, ग्राहक जानकारी, डिस्काउंट कोड) प्राप्त करता है और लागू करने के लिए डिस्काउंट ऑपरेशन लौटाता है। जब भी कार्ट का मूल्यांकन किया जाता है तो फ़ंक्शन चलता है --- पेज लोड, आइटम जोड़ने/निकालने और चेकआउट प्रविष्टि पर।
सामान्य छूट पैटर्न
X खरीदें Y प्राप्त करें: जब कार्ट में उत्पाद X हो, तो उत्पाद Y पर प्रतिशत या निश्चित छूट लागू करें।
स्तरीय छूट: कुल कार्ट के आधार पर बढ़ती छूट लागू करें (100 यूएसडी से अधिक 10%, 200 यूएसडी से अधिक 15%, 500 यूएसडी से अधिक 20%)।
ग्राहक-विशिष्ट मूल्य निर्धारण: ग्राहक टैग या मेटाफ़ील्ड की जाँच करें और खंड-विशिष्ट छूट (थोक, वीआईपी, कर्मचारी) लागू करें।
बंडल छूट: जब विशिष्ट उत्पाद संयोजन कार्ट में हों, तो बंडल छूट लागू करें (तीनों खरीदें, 25% बचाएं)।
मात्रा में छूट: मात्रा के आधार पर प्रति यूनिट छूट लागू करें (पूरी कीमत पर 1-9 इकाइयां, 10% की छूट पर 10-24, 20% की छूट पर 25+)।
इनपुट क्वेरी उदाहरण
डिस्काउंट फ़ंक्शन की इनपुट क्वेरी आम तौर पर अनुरोध करती है:
- उत्पाद आईडी, वैरिएंट आईडी, मात्रा और कीमतों के साथ कार्ट लाइन आइटम
- यदि ग्राहक विभाजन का उपयोग कर रहे हैं तो ग्राहक जानकारी (आईडी, टैग, मेटाफ़ील्ड)।
- यदि कोड-आधारित छूट को मान्य किया जा रहा है तो डिस्काउंट कोड
- उत्पाद-विशिष्ट छूट नियमों के लिए उत्पाद मेटाफ़ील्ड
आउटपुट संरचना
फ़ंक्शन छूट संचालन की एक श्रृंखला लौटाता है:
| ऑपरेशन | विवरण |
|---|---|
productDiscount | विशिष्ट उत्पादों/वेरिएंट पर छूट लागू करें |
orderDiscount | कुल ऑर्डर पर छूट लागू करें |
freeShipping | शिपिंग शुल्क हटाएँ |
प्रत्येक ऑपरेशन में छूट मूल्य (प्रतिशत या निश्चित राशि), ग्राहक को प्रदर्शित एक संदेश और वे शर्तें शामिल होती हैं जिनके तहत यह लागू होता है।
भुगतान अनुकूलन कार्य
उपयोग के मामले
- भुगतान के तरीके छुपाएं: एक सीमा से ऊपर के ऑर्डर के लिए "कैश ऑन डिलीवरी" छिपाएं
- पुनर्क्रमण विधियां: ग्राहक स्थान के आधार पर सबसे पहले सबसे लोकप्रिय भुगतान विधि दिखाएं
- तरीकों का नाम बदलें: स्थानीय भुगतान विधि के नाम प्रदर्शित करें
- मैसेजिंग जोड़ें: विशिष्ट भुगतान विधियों के आगे अतिरिक्त जानकारी दिखाएं
कार्यान्वयन पैटर्न
फ़ंक्शन कार्ट विवरण और उपलब्ध भुगतान विधियां प्राप्त करता है। यह उन परिचालनों को लौटाता है जो भुगतान विधि सूची को संशोधित करते हैं:
| ऑपरेशन | प्रभाव |
|---|---|
hide | चेकआउट से भुगतान विधि हटाएँ |
rename | भुगतान विधि का प्रदर्शन नाम बदलें |
move | भुगतान विधियों को पुनः व्यवस्थित करें |
डिलिवरी अनुकूलन कार्य
उपयोग के मामले
- शिपिंग विकल्पों का नाम बदलें: वाहक दर नामों के बजाय "एक्सप्रेस डिलीवरी (2-3 दिन)" प्रदर्शित करें
- विकल्प छुपाएं: खराब होने वाले उत्पादों के लिए ग्राउंड शिपिंग हटाएं
- पुनः ऑर्डर करने के विकल्प: अत्यावश्यक ऑर्डर के लिए सबसे पहले सबसे तेज़ विकल्प दिखाएं
- मैसेजिंग जोड़ें: प्रत्येक विकल्प के आगे अनुमानित डिलीवरी तिथियां प्रदर्शित करें
कार्यान्वयन
फ़ंक्शन कॉन्फ़िगर किए गए वाहकों से शिपिंग दरें प्राप्त करता है और संशोधन लौटाता है। इनपुट में कार्ट लाइन आइटम (उत्पाद प्रकार की जांच करने के लिए), शिपिंग पता (स्थान-आधारित नियमों के लिए), और उपलब्ध डिलीवरी विकल्प शामिल हैं।
कार्ट सत्यापन कार्य
उपयोग के मामले
- मात्रा सीमा: सीमित संस्करण वाले उत्पादों की अधिकतम 5 इकाइयाँ
- संयोजन प्रतिबंध: उत्पाद ए और उत्पाद बी एक ही कार्ट में नहीं हो सकते (असंगत)
- न्यूनतम आवश्यकताएँ: थोक खातों को न्यूनतम 100 USD का ऑर्डर देना होगा
- भौगोलिक प्रतिबंध: कुछ उत्पादों को प्रतिबंधित क्षेत्रों में शिपिंग से रोकें
सत्यापन आउटपुट
जब सत्यापन विफल हो जाता है, तो फ़ंक्शन एक त्रुटि देता है:
- लक्ष्य: कौन सी कार्ट लाइन या स्वयं कार्ट
- संदेश: ग्राहक-सामना त्रुटि संदेश
- गंभीरता: त्रुटि (चेकआउट को अवरुद्ध करता है) या चेतावनी (अनुमति देता है लेकिन सूचित करता है)
परीक्षण कार्य
इकाई परीक्षण
परिनियोजन के बिना स्थानीय स्तर पर परीक्षण कार्य:
- नमूना इनपुट डेटा के साथ परीक्षण फिक्स्चर बनाएं
- फिक्स्चर के विरुद्ध फ़ंक्शन चलाएँ
- दावा करें कि आउटपुट अपेक्षित परिणामों से मेल खाता है
Shopify CLI परीक्षण बॉयलरप्लेट उत्पन्न करता है:
| परीक्षण परिदृश्य | क्या सत्यापित करें |
|---|---|
| खाली गाड़ी | फ़ंक्शन कोई ऑपरेशन नहीं लौटाता |
| क्वालीफाइंग कार्ट | सही छूट/संशोधन लागू |
| किनारे के मामले | सीमा मान, अधिकतम मात्राएँ |
| त्रुटि प्रबंधन | अमान्य इनपुट को शालीनता से संभाला गया |
| प्रदर्शन | निष्पादन 5ms के अंतर्गत पूरा होता है |
पूर्वावलोकन मोड
प्रकाशन से पहले एक विकास स्टोर में परीक्षण कार्य:
- फ़ंक्शन को अपने विकास स्टोर पर तैनात करें
- इसे ऐप एडमिन के माध्यम से कॉन्फ़िगर करें
- उत्पादों को कार्ट में जोड़ें और व्यवहार सत्यापित करें
- Shopify CLI आउटपुट में फ़ंक्शन निष्पादन लॉग की जाँच करें
प्रदर्शन संबंधी विचार
निष्पादन सीमाएँ
| सीमा | मूल्य |
|---|---|
| निष्पादन का समय | अधिकतम 5 एमएस |
| स्मृति | 12 एमबी |
| इनपुट आकार | 64 केबी |
| आउटपुट आकार | 64 केबी |
| निर्देश | 1 मिलियन वासम निर्देश |
अनुकूलन युक्तियाँ
- इनपुट क्वेरी को केवल उन फ़ील्ड तक सीमित करें जिनकी आपके तर्क को आवश्यकता है
- जटिल नेस्टेड लूप से बचें --- लुकअप के लिए हैश मैप का उपयोग करें
- फ़ंक्शन के बजाय ऐप कॉन्फ़िगरेशन में मानों की पूर्व-गणना करें
- प्रदर्शन-महत्वपूर्ण कार्यों के लिए रस्ट का उपयोग करें (जावास्क्रिप्ट से 2-3 गुना तेज)
- Shopify CLI प्रदर्शन टूल का उपयोग करके प्रोफ़ाइल फ़ंक्शन निष्पादन
व्यापारी विन्यास
ऐप कॉन्फ़िगरेशन यूआई
फ़ंक्शंस आपके ऐप के यूआई के माध्यम से कॉन्फ़िगर किए जाते हैं, सीधे शॉपिफाई एडमिन में नहीं। एक कॉन्फ़िगरेशन पृष्ठ बनाएं जो:
- फ़ंक्शन का उद्देश्य और वर्तमान सेटिंग्स प्रदर्शित करता है
- व्यापारियों को पैरामीटर (सीमाएँ, उत्पाद चयन, प्रतिशत) निर्धारित करने की अनुमति देता है
- कॉन्फ़िगरेशन को मेटाफ़ील्ड के रूप में संग्रहीत करता है जिसे फ़ंक्शन रनटाइम पर पढ़ता है
- सहेजने से पहले इनपुट को मान्य करता है
कॉन्फ़िगरेशन संग्रहण
ऐप मेटाफ़ील्ड का उपयोग करके स्टोर फ़ंक्शन कॉन्फ़िगरेशन:
- छूट पर मेटाफ़ील्ड: सीमा राशि, प्रतिशत मान, उत्पाद आईडी
- ऐप डेटा स्टोरेज: जटिल कॉन्फ़िगरेशन जैसे स्तरीय नियम, ग्राहक खंड
- फ़ंक्शन कॉन्फ़िगरेशन: इनपुट क्वेरी के माध्यम से फ़ंक्शन के इनपुट के भाग के रूप में पारित किया गया
ECOSIRE फ़ंक्शन डेवलपमेंट सेवाएँ
कस्टम शॉपिफाई फ़ंक्शंस के लिए वाणिज्य डोमेन विशेषज्ञता और वेबअसेंबली विकास कौशल दोनों की आवश्यकता होती है। ECOSIRE की Shopify ऐप डेवलपमेंट सेवाएं में फ़ंक्शन डिज़ाइन, कार्यान्वयन, परीक्षण और तैनाती शामिल है। हमारी टीम आपके व्यावसायिक नियमों के अनुरूप डिस्काउंट इंजन, भुगतान अनुकूलन और सत्यापन तर्क बनाती है। चल रही ज़रूरतों के लिए, जैसे-जैसे शॉपिफ़ाइ का प्लेटफ़ॉर्म आगे बढ़ रहा है, हमारी सहायता सेवाएँ आपके कस्टम फ़ंक्शंस को बनाए रखती हैं और विकसित करती हैं।
संबंधित पढ़ना
- शॉपिफाई चेकआउट एक्स्टेंसिबिलिटी
- शॉपिफाई ऐप डेवलपमेंट गाइड
- शॉपिफाई एपीआई इंटीग्रेशन गाइड
- शॉपिफाई फ्लो ऑटोमेशन
- शॉपिफाई प्लस एंटरप्राइज गाइड
क्या Shopify फ़ंक्शंस Shopify स्क्रिप्ट की जगह लेते हैं?
हाँ। शॉपिफाई स्क्रिप्ट्स को हटा दिया गया है और फ़ंक्शंस प्रतिस्थापन हैं। मुख्य अंतर: फ़ंक्शंस WebAssembly (रूबी नहीं) के रूप में चलते हैं, ऐप्स के माध्यम से तैनात होते हैं (स्क्रिप्ट एडिटर नहीं), और अधिक एक्सटेंशन बिंदुओं का समर्थन करते हैं। मौजूदा स्क्रिप्ट काम करना जारी रखती हैं लेकिन Shopify फ़ंक्शंस में माइग्रेट करने की अनुशंसा करता है।
क्या गैर-डेवलपर्स Shopify फ़ंक्शंस बना सकते हैं?
प्रत्यक्ष नहीं। फ़ंक्शंस के लिए प्रोग्रामिंग ज्ञान (जावास्क्रिप्ट या रस्ट) की आवश्यकता होती है। हालाँकि, डेवलपर्स कॉन्फ़िगरेशन यूआई के साथ ऐप बना सकते हैं जो व्यापारियों को कोडिंग के बिना फ़ंक्शन व्यवहार को अनुकूलित करने देते हैं। Shopify ऐप स्टोर पर कई ऐप्स व्यापारी-अनुकूल इंटरफ़ेस प्रस्तुत करते हुए आंतरिक रूप से फ़ंक्शंस का उपयोग करते हैं।
क्या एक ही स्टोर पर कितने फ़ंक्शन चल सकते हैं इसकी कोई सीमा है?
Shopify इंस्टॉल किए गए फ़ंक्शंस की संख्या पर कोई कठोर सीमा नहीं लगाता है। हालाँकि, प्रत्येक चेकआउट मूल्यांकन सभी लागू कार्यों को क्रमिक रूप से चलाता है, इसलिए प्रदर्शन संबंधी विचार लागू होते हैं। 5ms प्रति-फ़ंक्शन सीमा यह सुनिश्चित करती है कि व्यक्तिगत फ़ंक्शंस चेकआउट को धीमा नहीं कर सकते हैं, लेकिन दर्जनों फ़ंक्शंस होने से सैद्धांतिक रूप से कुल चेकआउट मूल्यांकन समय प्रभावित हो सकता है।
लेखक
ECOSIRE Research and Development Team
ECOSIRE में एंटरप्राइज़-ग्रेड डिजिटल उत्पाद बना रहे हैं। Odoo एकीकरण, ई-कॉमर्स ऑटोमेशन, और AI-संचालित व्यावसायिक समाधानों पर अंतर्दृष्टि साझा कर रहे हैं।
संबंधित लेख
AI Personalization for eCommerce: Individualized Experiences That Convert
Deploy AI personalization for eCommerce with product recommendations, dynamic content, personalized search, and customer journey optimization for 15-30% higher conversions.
Headless Shopify with Hydrogen: Build High-Performance Custom Storefronts
Complete guide to building headless Shopify storefronts with Hydrogen framework covering Remix, Storefront API, Oxygen hosting, and performance optimization.
Building Mobile-First Shopify Stores: Complete Optimization Guide
Build mobile-first Shopify stores that convert. Covers theme selection, mobile UX, checkout optimization, app performance, and Shopify-specific mobile strategies.