2017-03-20 2 views
2

Ich kann nicht scheinen, ein Produkt mit mehreren Optionen zu erstellen. Ich habe alles ausprobiert und die Dokumentation aus der offiziellen Bibliothek von Shopify ist schlecht. Ich habe den gesamten API-Referenzhandbuch durchsucht und nach anderen Formularen gesucht, kann jedoch nicht die richtige Syntax finden. Code ist unten. Ich versuche, ein Produkt mit zwei Optionen zu erstellen, z. B. Option1 ist die Größe und Option2 ist die Farbe. Es werden auch keine Fehlermeldungen für die Druckausgabe angezeigt, aber Variantenoptionen erscheinen nicht im Shopify Store, nur das Produkt mit 0 Varianten erscheint.Shopify Python API Variantenoptionen Nicht in den Store schreiben

new_product = shopify.Product() 
new_product.title = "My Product" 
new_product.handle = "test-product" 
##what I've tried... and countless others 
#First example of new_product.variants 
new_product.variants = shopify.Variant({'options': {'option1' : ['S', 'M', 'L', 'XL'], 'option2' : ['Black', 'Blue', 'Green', 'Red']}, 'product_id': '123456789'}) 
#Second example of new_product.variants 
new_product.variants = shopify.Variant({'options': [{'option1': 'Size', 'option2': 'Colour','option3': 'Material'}]}) 
#Thrid example of new_product.variants 
new_product.variants = shopify.Variant([ 
         {'title':'v1', 'option1': 'Red', 'option2': 'M'}, 
         {'title':'v2', 'option1' :'Blue', 'option2' :'L'} 
         ]) 
new_product.save() 
##No errors are output, but doesn't create variants with options 
if new_product.errors: 
    print new_product.errors.full_messages() 
print "Done" 

Antwort

1

Die Dokumentation ist tatsächlich korrekt, aber es ist zugegebenermaßen verwirrend. Die drei wichtigsten Punkte scheint es Ihnen fehlt:

  • Die Optionsnamen werden auf dem Produkt eingestellt, nicht die Varianten
  • Product.variants ist eine Liste der Variant Ressourcen; Sie brauchen eine Variant Ressource für jede Variante Sie
  • Sie einfach setzen einen String in jeder Variant ‚s option1, option2 und option3 Attribute

Beispiel wollen:

import shopify 

# Authenticate, etc 
# ... 

new_product = shopify.Product() 
new_product.title = "My Product" 
new_product.handle = "test-product" 
new_product.options = [ 
    {"name" : "Size"}, 
    {"name" : "Colour"}, 
    {"name" : "Material"} 
] 

colors = ['Black', 'Blue', 'Green', 'Red'] 
sizes = ['S', 'M', 'L', 'XL'] 

new_product.variants = [] 
for color in colors: 
    for size in sizes: 
     variant = shopify.Variant() 
     variant.option1 = size 
     variant.option2 = color 
     variant.option3 = "100% Cotton" 
     new_product.variants.append(variant) 

new_product.save() 

Es ist wichtig, Beachten Sie, dass die Optionskombinationen jeder Variante eindeutig sein müssen oder dass ein Fehler zurückgegeben wird. Eine Besonderheit, die nicht dokumentiert ist, ist, dass, wenn Sie keine options auf der übergeordneten Product Ressource bereitstellen, es Ihnen implizit eine einzige Option mit dem Namen Style geben wird, und ebenso, wenn Sie keine Optionen für die Variante zuweisen, dann wird es Weisen Sie den option1 jeder Variante automatisch Default Title zu. Da jede Optionskombination eindeutig ist, wenn Sie keine Werte options oder option1 zuweisen, wird kein Fehler angezeigt, wenn Sie nur eine einzige Variante haben. Wenn Sie dann mit mehreren Varianten versuchen, wird der Fehler, den Sie erhalten, verwirrend sein, da es sich auf die Nicht-Eindeutigkeit von Variantenoptionen bezieht und nicht über die options und option1 Parameter.

Verwandte Themen