0

我在 Shopify 上有一家在线商店。我想做的是在产品页面上,有一个“也需要”类型的列表。我已经创建了所有列表和其他项目,但我似乎无法弄清楚如何在另一个产品页面上列出一个产品的变体。

我的选项菜单是这样的:

    <select id="product-select" name="id" data-id="{{ 304164943 }}">
{% for variants in product.variants %}   
      <option value="{{ variant.id }}">{{ variant.title }} - {{ variant.price | money }}</option>
      {% endfor %}
</select> 

输出:

    <select id="product-select" name="id" data-id="304164943">

  <option value=""> - </option>

  <option value=""> - </option>

  <option value=""> - </option>

  <option value=""> - </option>

  <option value=""> - </option>

  <option value=""> - </option>

304164943 的数据 ID 用于我要列出其变体的产品,但它生成的下拉菜单为空。

4

2 回答 2

1

您无法通过 Liquid 的 ID 访问产品。但是,您可以通过句柄访问它。所以如果句柄是已知的,你可以这样做:

{% assign relatedProduct = all_products['some-handle'] %}
{% for relatedVariant in relatedProduct.variants %}   
  <option value="{{ relatedVariant.id }}">{{ relatedVariant.title }} - {{ relatedVariant.price | money }}</option>
{% endfor %}

您在发布的循环代码中也有一个错误 - 它应该是针对 variant,而不是针对 variables。我猜这只是一个错字。

于 2015-07-11T16:10:33.633 回答
0

产品页面只会返回属于该页面的产品对象。它不会返回另一个产品的对象。所以要访问它,你需要做一些javascript jiggery pokery 或创建一个链接列表。这是使用链接列表的教程:

http://www.techi.ca/shopify-tutorial-how-to-create-a-part-picker-form/

或者,你可以走 JS 路线。您需要通过 ajax 获取产品对象,并将返回的数据附加到页面。要获取此数据,您需要使用 Ajax api 执行 ajax get:

https://docs.shopify.com/support/your-website/themes/can-i-use-ajax-api

因此,如果使用 jquery - 这样的事情会起作用:(<product-handl>您希望插入的产品的句柄在哪里)

$.get( "/products/<product-handle>.js", function( data ) {
 var variants = data.variants; // all your variants
  // Then you can loop over the variants insert the options into your page...
});

由于这是在页面呈现后添加的,因此您需要做一些 ajaxy 购物车的东西,以便您可以将东西放入购物车。您的主题中可能已经有一些 ajaxy 购物车的东西。

于 2015-07-09T23:30:54.987 回答