2012-09-25 4 views
5

광고 항목이 장바구니에 추가 된 후 광고 항목 속성을 변경할 수 있습니까? (일반 양식 제출을 통해 또는 AJAX를 통해)Shopify에서 장바구니의 광고 항목 속성 변경

"properties [MyProperty]"키를 사용하여/cart/change에 POST를 시도했지만 지금까지는 행운이 없습니다. 이는 고유 한 광고 항목을 나타 내기 위해 line 매개 변수와 결합됩니다.

아이디어가 있으십니까? 아니면 그냥 똑바로 '아니오'입니까?

+2

이 문제가 있습니다. 해결 방법은 각 항목을 제거하고 다시 추가하는 것입니다. – Ziggy

답변

5

Shopify의 API를 사용하면 cart/change.js를 사용하여 광고 항목의 속성을 변경할 수 없습니다. 그 이유는 cart/change.js가 '속성'을 사용하여 원하는 광고 항목을 찾는 것입니다. API 설명서에는이 내용이 생략되어 있습니다.

I 다음 URL 인코딩 파라미터 카트/add.js에 POST 확인 :

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

응답이 포함를

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

다음 예는 BAR에서 FOO로 속성을 변경하기 위해 cart/change.js로 POST 할 때

0 12,388,251,371,929,443,813,210

그런 응답이 포함됩니다, 나는 광고 항목의 속성이 방법을 변경할 수 없습니다이었다됩니다

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

. cart/change.js API에 대한 트릭이 있기 때문에 이것이 의심 스러울 수도 있지만 그렇지 않습니다.

공지 사항,이 같은, 카트/change.js에 POST를 만들고 quantity=0을 지정하여 광고 항목을 제거하려고하면

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

property FOO이 속하지 않는 하나되는 재산으로 (내 장바구니에는 지금 property BAR의 항목 만 있습니다) 항목을 장바구니에서 제거 할 수 없습니다. 반면에 나는이 작업을 수행 할 경우

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

항목이 정상적으로 제거됩니다.

결론 : cart/change.js에서 shopify는 'id'를 사용하는 것과 동일한 방식으로 라인 항목 속성을 사용합니다. 즉, 수량을 변경할 광고 항목을 찾으십시오. cart/change.js를 사용하여 광고 항목의 ID를 변경할 수없는 것과 같은 방식으로이 항목을 사용하여 광고 항목의 속성을 변경할 수 없습니다.

+1

나는 이것을 마침내 알아 냈기 때문에 기쁩니다. 이 탭을 한 달 동안 열어 두었습니다! – Ziggy

+0

어떻게 장바구니에서 광고 항목 속성을 변경하나요? 카트에서 물건을 꺼내고 다시 추가해야합니까? –

+0

불행히도, 그 일을 끝내는 방법입니다. 제거 할 호출에 콜백으로 추가 할 POST를 포함합니다. Shopify API가 더 잘하기를 바랄 수있는 많은 것들이 있습니다. 어쩌면 희망이있을 것입니다. 아마 이것을 할 수있는 더 좋은 방법을 발견하게 될 것입니다. 그럴 경우 나에게 알려주세요! – Ziggy

0

광고 항목의 색인 및 일부 속성을 사용하여 'cart/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

관련 문제