2017-04-13 1 views
1

Ich versuche, ein bestimmtes Produkt mit seiner ID aus der unteren URL zuzugreifen,
Shopify Zugang ein Produkt mit seiner ID danken Ihnen an Seite ohne '/ admin' in URL

https://tempstore.myshopify.com/products/1234.json 

Its me 404 geben Error.
Obwohl ich in der Lage bin, alle Produkte zugreifen, wie unten:

https://tempstore.myshopify.com/products.json 

ich das Produkt zugreifen müssen, die in der Kasse Prozess gerade verarbeitet wurde.
Ich habe seine ID wie folgt:

var products = Shopify.checkout.line_items; 

Produkte wird eine Reihe von Produkt-IDs nur enthalten, die in der Kasse verarbeitet werden.
Jetzt muss ich auf alle anderen Eigenschaften dieser Produkte zugreifen.
Ich kann dies sicher tun:

https://tempstore.myshopify.com/admin/products/1234.json 

Aber es erfordert Authentifizierung.
Irgendwelche Gedanken?

Antwort

2

Vom Frontend, müssen Sie das Produkt Griff haben, das JSON-Objekt zu erhalten:

https://tempstore.myshopify.com/products/[handle].js 

oder

https://tempstore.myshopify.com/products/[handle].json 

(Beachten Sie, dass die zurückgegebenen Werte aus den .js und .json Endpunkte recht sind voneinander verschieden!)

Wie Sie darauf hinweisen, hat das Array der Objekte von Shopify.checkout.line_items nur die Produkt-IDs nicht die Produktgriffe. Wir sind jedoch nicht ganz ohne Glück, denn wir können die gesamte Produktliste im Shop einschließlich der Produkthandles abrufen, indem wir den Endpunkt /products.json erreichen.

Das bedeutet natürlich, dass Sie ein potenziell riesiges JSON-Objekt erfassen, nur um Informationen zu erhalten, die wir in die Checkout-Werbebuchungen hätten einschließen sollen ... es sei denn, es gibt eine alternative Quelle der Werbebuchungsinformationen auf der Kassenseite Es kann sein, dass Sie durch die gesamte Liste blättern, was Sie tun müssen.

Also Ihr Ende Code würde wie folgt aussehen:

Checkout.jQuery.getJSON( // Or whatever your preferred way of getting info is 
    'https://tempstore.myshopify.com/products.json', 
    function(prodlist){ 
    for(var p = 0; p < prodlist.length; p++){ 
     var prod = prodlist[p]; 
     // Find if Shopify.checkout.line_items contains prod.id, left as exercise for the reader 
     if(found){ 
     Checkout.jQuery.getJSON(
      'https://tempstore.myshopify.com/products/' + prod.handle + '.js', 
      function(product){ 
      /* Whatever needs to be done */ 
      }) 
     } 
    } 

    } 

) 

hoffe, das hilft!

+0

Hinweis hilft, dass, wenn Sie Shopify plus passieren zu verwenden, haben Sie die Möglichkeit viel mehr mit Ihren Google Checkout-Seiten zu tun und würden in der Lage sein, Ihre Informationen viel direkter durch Liquid info dumps in Ihrer checkout.liquid Layoutdatei zu bekommen. –

+0

Ja, ich musste durchschleifen. – awebartisan

+0

Was ist, wenn wir 1000 Produkte haben? Mobiltelefone haben weniger Prozessor und Speicher als andere Geräte. Sollten wir mit diesem Ansatz gehen? – awebartisan

1
var shop = Shopify.shop; 
    var lineItems = Shopify.checkout.line_items; 
     var url = 'https://' + shop + '/products.json?callback=?'; 
     var requiredData = []; 
     $.getJSON(url).done(function(data){ 
      lineItems.forEach(function(lineItemProduct){ 
       data.products.find(function(product){ 
        if(lineItemProduct.product_id == product.id){ 
        requiredData.push(product); 
        } 
       }); 
      }); 
     }); 

     console.log(requiredData); 

Dies ist, wie ich es gelöst, wenn es jemand :)

Verwandte Themen