2012-09-25 10 views
5

में कार्ट पर लाइन आइटम गुणों को बदलना क्या कार्ट में जोड़े जाने के बाद लाइन आइटम गुणों को बदलना संभव है? (या तो एक सामान्य फॉर्म सबमिशन के माध्यम से, या AJAX के माध्यम से?)Shopify

मैंने "गुण [MyProperty]" कुंजी के साथ एक पोस्ट/कार्ट/परिवर्तन करने की कोशिश की है, लेकिन अब तक कोई भाग्य नहीं है। यह अद्वितीय लाइन आइटम को इंगित करने के लिए लाइन पैरामीटर के साथ मिलकर है।

कोई विचार? या यह सिर्फ एक सीधा 'नहीं' है?

+2

मुझे यह समस्या है। एक काम के रूप में मैं प्रत्येक बार टीओटी को लाइन-आइटम को हटा रहा हूं और फिर से जोड़ रहा हूं; – Ziggy

उत्तर

5

Shopify के API का उपयोग करके आप लाइन आइटम के गुणों को बदलने के लिए कार्ट/change.js का उपयोग नहीं कर सकते हैं। इसका कारण यह है कि कार्ट/change.js आपके इच्छित लाइन आइटम को ढूंढने के लिए 'गुण' का उपयोग करता है। एपीआई दस्तावेज इसे छोड़ देता है।

जब मैं इस यूआरएल इनकोडिंग मानकों के साथ गाड़ी/add.js करने के लिए एक पोस्ट बनाने:

quantity=9403&id=278440178&properties%5Bmy-property%5D=property%20BAR

प्रतिक्रिया शामिल होंगे,

"properties":{"my-property":"property BAR"}

यहाँ एक उदाहरण है जब मैं बार/फूड से संपत्ति बदलने के लिए कार्ट/change.js पर एक पोस्ट करने के लिए जाता हूं,

id=278440178&properties%5Bmy-property%5D=property%20FOO

तो प्रतिक्रिया में शामिल होंगे,

"properties":{"my-property":"property BAR"}

है कि, मैं लाइन आइटम संपत्ति इस तरह से बदलने में असमर्थ था। आपको संदेह हो सकता है कि ऐसा इसलिए है क्योंकि कार्ट/change.js एपीआई के लिए कुछ चाल है, लेकिन ऐसा नहीं है।

सूचना, जब मैं इस तरह गाड़ी/change.js करने के लिए एक पोस्ट बनाने और quantity=0 निर्दिष्ट द्वारा एक लाइन आइटम दूर करने की कोशिश: संपत्ति property FOO एक है कि संबंधित नहीं है जा रहा है

quantity=0&id=278440178&properties%5Bmy-property%5D=property%20FOO

किसी भी आइटम पर (मेरे कार्ट में केवल property BAR वाला आइटम है), आइटम को कार्ट से हटाया नहीं गया है। मैं यह करने के दूसरी तरफ हैं:

पोस्ट: quantity=0&id=278440178&properties%5Bmy-property%5D=property%20BAR

आइटम सामान्य रूप में निकाल दिया जाता है।

निष्कर्ष: कार्ट/change.js में, दुकानदारी लाइन-आइटम गुणों का उपयोग उसी तरीके से करती है जैसे 'आईडी' का उपयोग करती है, यानी, उस पंक्ति वस्तु को ढूंढने के लिए जिसका मात्रा आप बदलना चाहते हैं। लाइन लाइन की आईडी बदलने के लिए आप उसी तरह कार्ट/change.js का उपयोग नहीं कर सकते हैं, आप इसका उपयोग किसी के गुणों को बदलने के लिए नहीं कर सकते।

+1

मुझे बहुत खुशी है कि आखिरकार मैंने इसे समझ लिया। मेरे पास एक महीने के लिए यह टैब खुला है! – Ziggy

+0

तो गाड़ी से लाइन आइटम गुणों को कैसे बदलता है? क्या आपको गाड़ी से चीज को हटाना है और इसे फिर से जोड़ना है? –

+0

दुर्भाग्यवश, इस तरह से मैंने इसे समाप्त कर दिया। मैं हटाने के लिए कॉल पर कॉलबैक के रूप में जोड़ने के लिए POST शामिल करता हूं। Shopify API को बेहतर करने के लिए हम कई चीजें चाहते हैं ... शायद आशा है, शायद आप इसे करने का एक बेहतर तरीका खोज लेंगे। यदि आप करते हैं, तो मुझे बताना सुनिश्चित करें! – Ziggy

0

आप पंक्ति वस्तु के सूचकांक और कुछ संपत्ति के साथ 'कार्ट/change.js' पर POST अनुरोध भेजकर लाइन आइटम गुणों को बदल सकते हैं।

$('.line-item-property__field').on('change', 'input[type="checkbox"]', function() { 
    var $el = $(this), 
     itemIndex = $el.closest('.cart-list__row').data('row'), 
     giftWrap; 

    if ($el.prop('checked')) 
     giftWrap = 'Yes'; 
    else 
     giftWrap = ''; 

    jQuery.ajax({ 
     url: '/cart/change.js', 
     type: 'post', 
     dataType: 'json', 
     data: { line: itemIndex, properties: { 'Gift wrap': giftWrap } }, 
     success: function (data) { 
      console.log(data) 
     }, 
     error: function() { 
      alert(data.description); 
     } 
    }); 
}); 

आप कुछ संपत्ति की कुंजी बदलना चाहते हैं, तो बस यह मान (सेट "" या अपरिभाषित) को हटाने और नई प्रॉपर्टी जोड़ने: मैं कुछ इस तरह से किया था।

Screenshot from Checkout page

संबंधित मुद्दे