2012-09-25 8 views
5

Ist es möglich, Werbebuchungseigenschaften zu ändern, nachdem sie in den Einkaufswagen hinzugefügt wurden? (Entweder über eine normale Formularübertragung oder über AJAX?)Ändern der Werbebuchungseigenschaften in Einkaufswagen in Shopify

Ich habe versucht, einen POST zu/Warenkorb/ändern mit einem "Eigenschaften [MyProperty]" - Taste, aber bisher kein Glück. Dies ist mit dem Zeilenparameter gekoppelt, um die eindeutige Werbebuchung zu bezeichnen.

Irgendwelche Ideen? Oder ist es nur ein klares Nein?

+2

Ich habe dieses Problem. Als Arbeitsumgehung entferne ich jedes Mal den Zeileneintrag und füge ihn erneut hinzu. – Ziggy

Antwort

5

Mit der API von Shopify können Sie mit cart/change.js die Eigenschaften einer Werbebuchung nicht ändern. Der Grund dafür ist, dass cart/change.js "Eigenschaften" verwendet, um die gewünschte Werbebuchung zu finden. Die API-Dokumentation lässt dies aus. Hier ein Beispiel:

Wenn ich ein POST den Warenkorb/add.js mit den folgenden URL kodierten Parametern machen:

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

Die Antwort umfasst,

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

Wenn ich fortfahre, einen POST zu wagen/change.js zu machen, um die Eigenschaft von BAR zu FOO zu ändern,

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

die Antwort wird dann gehören,

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

Das heißt, ich bin nicht in der Lage der Position Eigentum auf diese Weise zu ändern. Sie können vermuten, dass dies daran liegt, dass die Cart/change.js-API fehlerhaft ist, dies ist jedoch nicht der Fall.

Hinweis, wenn ich versuche, eine Position zu entfernen, indem eine POST den Warenkorb/change.js machen und quantity=0 Angabe wie folgt aus:

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

Mit der Eigenschaft property FOO ein Wesen, das nicht hingehört zu irgendeinem Gegenstand (mein Einkaufswagen hat gerade einen Gegenstand mit property BAR gerade), der Artikel wird nicht vom Wagen entfernt. Wenn auf der anderen Seite kann ich dies tun:

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

Das Element wird als normal entfernt.

Fazit: in Warenkorb/change.js verwendet shopify die Eigenschaften der Werbebuchungen auf die gleiche Weise wie 'ID', dh die Werbebuchung, deren Menge Sie ändern möchten. Genauso wie Sie mit "cart/change.js" die ID einer Werbebuchung nicht ändern können, können Sie damit die Eigenschaften einer Werbebuchung nicht ändern.

+1

Ich bin so froh, dass ich es endlich herausgefunden habe. Ich habe diesen Tab für einen Monat geöffnet! – Ziggy

+0

Wie kann man die Eigenschaften einer Werbebuchung ändern? Müssen Sie das Ding aus dem Wagen entfernen und neu hinzufügen? –

+0

Leider habe ich es am Ende so gemacht. Ich schließe den POST ein, um ihn als Rückruf bei dem zu entfernenden Anruf hinzuzufügen. Es gibt viele Dinge, die wir wünschen, dass die Shopify-API es besser macht ... Vielleicht gibt es Hoffnung, vielleicht werden Sie einen besseren Weg finden, dies zu tun. Wenn Sie das tun, lassen Sie es mich wissen! – Ziggy

0

Sie können die Eigenschaften von Werbebuchungen ändern, indem Sie eine POST-Anfrage mit dem Index der Werbebuchung und einer Eigenschaft an 'cart/change.js' senden. Ich habe so etwas wie dies:

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

Wenn Sie Schlüssel einer Eigenschaft zu ändern, dann entfernen Sie einfach es Wert ist (set „“ oder undefined) und eine neue Eigenschaft hinzuzufügen.

Screenshot from Checkout page

Verwandte Themen