我正在使用这个PHP框架 Shopify's API
任何人都可以帮我更新产品的变体属性,特别是库存数量吗?
Shopify文档中列出的相应api调用是:
/admin/variants/#{id}.json
Run Code Online (Sandbox Code Playgroud)
要更新产品属性,例如标题,请执行以下操作:
$fields = array('title' => 'My New Product Edit');
$api->product->modify(89605609, $fields);
Run Code Online (Sandbox Code Playgroud)
更改这些以反映变体不会以相同的方式工作.
一如既往,任何帮助都非常感激.
感觉像我在这里遗漏了一些非常明显但却看不到的东西.
我有一个XML文件,正在使用Nokogiri gem.
XML看起来像这样(想象一下,如果你有无限量的'变种'):
<?xml version="1.0" encoding="UTF-8"?>
<products>
<variant>
<sku type="string">123abc</sku>
<inventory-quantity type="integer">68</inventory-quantity>
</variant>
<variant>
<sku type="string">321cba</sku>
<inventory-quantity type="integer">22</inventory-quantity>
</variant>
</products>
Run Code Online (Sandbox Code Playgroud)
我想循环变量并为每个变量创建一个包含'sku'和'inventory-quantity'属性的相应记录.
这是我到目前为止所做的,但不是创建单独的记录,在上面的例子中它创建了两个记录并插入Nokogiri返回到每个记录属性的完整数组或NodeSet.所以这:
doc = Nokogiri::XML(File.open("#{Rails.root}/public/new.xml"))
variant = doc.xpath("//variant")
variant.each do |product|
sku = product.xpath("//sku").text
quan = product.xpath("//inventory-quantity").text
Productmapping.create(:sku => sku, :product_quantity => quan)
end
Run Code Online (Sandbox Code Playgroud)
创造这个......
sku inventory-quantity
123abc321cba 6822
123abc321cba 6822
Run Code Online (Sandbox Code Playgroud)
我真正想要的地方:
sku inventory-quantity
123ab 68
321cba 22
Run Code Online (Sandbox Code Playgroud)
它看起来像是因为xpath定位器将所有出现的内容返回到一个数组中,我正在调用该数组并为每个记录插入它.
谢谢!
在液体模板中,这是这样实现的:
{{ product.metafields.book.author }}
Run Code Online (Sandbox Code Playgroud)
它返回'author'的值,因为它的关键'book'
我正在使用Shopify API和Ruby on Rails并成功遍历给定产品的每个元数据:
在控制器中:
@products = ShopifyAPI::Product.find(:all, :params => {:limit => 10})
Run Code Online (Sandbox Code Playgroud)
在视图中:
<% @products.metafields.each do |metafield| %>
<%= metafield.key %> : <%= metafield.value %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这将返回产品的所有元数据,如预期的那样.如何仅返回与特定键匹配的元字段,即上述示例中的"book"?