2012-09-25 41 views
5

Có thể thay đổi các thuộc tính mục hàng sau khi chúng đã được thêm vào giỏ hàng không? (Hoặc thông qua gửi biểu mẫu thông thường hoặc thông qua AJAX?)Thay đổi thuộc tính mục hàng trên giỏ hàng trong Shopify

Tôi đã thử POST/giỏ/thay đổi bằng khóa "thuộc tính [MyProperty]" nhưng không may mắn cho đến thời điểm này. Điều này được kết hợp với thông số dòng để biểu thị mục hàng duy nhất.

Bất kỳ ý tưởng nào? Hay nó chỉ là một 'không' thẳng thắn?

+2

Tôi đang gặp sự cố này. Là một công việc xung quanh tôi đang loại bỏ và thêm lại chi tiết đơn hàng mỗi lần ToT; – Ziggy

Trả lời

5

Sử dụng API của Shopify bạn không thể sử dụng giỏ hàng/change.js để thay đổi thuộc tính của chi tiết đơn hàng. Lý do là cart/change.js sử dụng 'properties' để tìm mục hàng bạn muốn. Tài liệu API bỏ qua điều này. Dưới đây là một ví dụ:

Khi tôi thực hiện một POST vào giỏ hàng/add.js với các thông số url mã hóa sau:

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

Câu trả lời sẽ bao gồm,

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

Khi tôi tiếp tục tạo POST cho giỏ hàng/change.js để thay đổi thuộc tính từ BAR thành FOO,

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

Sau đó, câu trả lời sẽ bao gồm,

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

Đó là, tôi đã không thể thay đổi thuộc tính mục hàng theo cách này. Bạn có thể nghi ngờ rằng điều này là do có một số thủ thuật cho API giỏ hàng/change.js, nhưng đây không phải là trường hợp.

Chú ý, khi tôi cố gắng để loại bỏ chi tiết đơn hàng bằng cách làm một POST vào giỏ hàng/change.js và xác định quantity=0, như thế này:

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

Với tài sản property FOO là một trong đó không thuộc về cho bất kỳ mục nào (giỏ hàng của tôi chỉ có một mặt hàng với property BAR ngay bây giờ), mặt hàng đó không bị xóa khỏi giỏ hàng. Nếu mặt khác tôi làm điều này:

POST: quantity=0&id=278440178&properties%5Bmy-property%5D=property%20BAR

Các mục được lấy ra như bình thường.

Kết luận: trong giỏ hàng/change.js, shopify sử dụng thuộc tính mục hàng giống như cách sử dụng 'id', nghĩa là tìm mục hàng có số lượng bạn muốn thay đổi. Cũng giống như cách bạn không thể sử dụng giỏ hàng/change.js để thay đổi id của chi tiết đơn hàng, bạn không thể sử dụng nó để thay đổi các thuộc tính của một chi tiết đơn hàng.

+1

Tôi rất vui vì cuối cùng tôi đã tìm ra điều này. Tôi đã mở tab này trong một tháng! – Ziggy

+0

do đó, làm thế nào để thay đổi một thuộc tính mục hàng khỏi giỏ hàng? Bạn có phải loại bỏ những thứ từ giỏ hàng và thêm lại nó? –

+0

Thật không may, đó là cách tôi đã làm nó. Tôi bao gồm POST để thêm làm cuộc gọi lại trên cuộc gọi để xóa. Có rất nhiều điều chúng ta có thể mong muốn cho API Shopify làm tốt hơn ... Có lẽ có hy vọng, có lẽ bạn sẽ khám phá ra cách tốt hơn để làm điều này. Nếu bạn làm, hãy chắc chắn để cho tôi biết! – Ziggy

0

Bạn có thể thay đổi thuộc tính mục hàng bằng cách gửi yêu cầu POST đến 'cart/change.js' với chỉ mục của chi tiết đơn hàng và một số thuộc tính. tôi đã làm một cái gì đó như thế này:

$('.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); 
     } 
    }); 
}); 

Nếu bạn muốn thay đổi quan trọng của một số tài sản, sau đó chỉ cần loại bỏ giá trị của nó (thiết lập "" hoặc không xác định) và thêm một thuộc tính mới.

Screenshot from Checkout page

Các vấn đề liên quan