5

液体テンプレートでは、これは次のように実現されます。

{{ product.metafields.book.author }}

キー「本」の「著者」の値を返す

ShopifyAPIとRubyonRailsを使用していて、特定の製品の各メタフィールドを正常にループしました。

コントローラ内:

@products = ShopifyAPI::Product.find(:all, :params => {:limit => 10})

ビューで:

<% @products.metafields.each do |metafield| %>
<%= metafield.key %> : <%= metafield.value %>
<% end %>

これにより、予想どおり、製品のすべてのメタフィールドが返されます。上記の例の「book」など、特定のキーに一致するメタフィールドのみを返すにはどうすればよいですか?

4

5 に答える 5

10
# add metafield
product = ShopifyAPI::Product.find(product_id)
product.add_metafield(ShopifyAPI::Metafield.new({
   :description => 'Author of book',
   :namespace => 'book',
   :key => 'author',
   :value => 'Kurt Vonnegut',
   :value_type => 'string'
}))

# retrieve metafield
author = ShopifyAPI::Metafield.find(:first,:params=>{:resource => "products", :resource_id => product.id, :namespace => "book", :key => "author"}).value

詳細: http: //www.shopify.com/technology/3032322-new-feature-metafields

于 2012-12-31T01:32:11.580 に答える
2

これはトリックを行うようです:

<% product.metafields.each do |metafield| %>
    <% if metafield.key == "book" %>
        <%= metafield.key %>: <%= metafield.value %><br/>
    <% end %>
<% end %>

また

<% product.metafields.each do |metafield| %>
    <% if metafield.key.include?("book") %>
        <%= metafield.key %>: <%= metafield.value %><br/>
    <% else %>
<% end %>
于 2012-07-18T10:38:00.000 に答える
1

これは機能します:

ShopifyAPI::Metafield.find(:first,:params=>{:resource => "products", :resource_id => 94549954, :key => "book"}) 
于 2012-07-23T07:46:29.093 に答える
0
ShopifyAPI::Metafield.find(:all,:params=>{:product_id => product.id, :key=> 'book'})
于 2012-07-19T02:43:31.657 に答える
0

製品のすべてのメタフィールドを取得できます

@product = ShopifyAPI::Product.find(params[:id])

その後、メタフィールドを取得できます

@metafields = @product.metafields

または、その製品に特定のメタフィールドだけが必要な場合

@metafield = ShopifyAPI::Product::Metafield.find(:all, where: {"product_id = ? AND metafield.key = ?", product.id, "book"})
于 2016-12-29T01:36:02.160 に答える