【发布时间】:2021-03-19 20:53:12
【问题描述】:
我有一个带有 ID 的架构变体列表,用户应该能够使用下拉框选择其中的任何一个,这样他就可以在 DIV 中动态更改产品及其变体。现在,我一直在寻找一种方法来使用架构中列出的变体 ID 获取产品标题、价格和其他详细信息。我真的很感激任何建议。 谢谢你。 Please check the image for more detail
【问题讨论】:
我有一个带有 ID 的架构变体列表,用户应该能够使用下拉框选择其中的任何一个,这样他就可以在 DIV 中动态更改产品及其变体。现在,我一直在寻找一种方法来使用架构中列出的变体 ID 获取产品标题、价格和其他详细信息。我真的很感激任何建议。 谢谢你。 Please check the image for more detail
【问题讨论】:
您是否尝试在面向商家的应用或面向客户的店面中使用此信息?
假设是后者(因为您的屏幕截图显示了 Shopify 中的主题/部分设置),无法仅从其 ID 获取变体对象,即使您可以也无法轻松地从变体对象移动到 Shopify 中的产品对象。
您还需要为要使用的产品对象收集相关的产品句柄。一旦有了产品句柄,就可以很容易地使用 Liquid 或 Javascript 获取产品对象。
假设您将产品句柄保存到名为 product_handle 的变量中,并将变体 ID 保存到名为 variant_id 的变量中,代码可能如下所示:
液体
{% assign product = all_products[product_handle] %}
{% assign variant = product.variants | where: 'id', variant_id | first %}
Javascript
// Retrieve the product data using Shopify's frontend API endpoint
fetch('/products/' + product_handle + '.js').then(function(response){ return response.json() }).then(
function(product){
let variant = product.variants.find(function(variant){ return variant.id == variant_id })
// Do stuff with your product & variant objects
}
)
【讨论】:
{% assign product = all_products[some_product_handle] %}获取产品对象,并且产品对象包括一个关联变量的数组product.variants。鉴于此,您可以使用 {% for variant in product.variants %} 遍历产品的所有变体,然后对它们做任何您需要做的事情。