Shopify liquid:如何从ajax购物车获得变体库存

时间:2018-05-28 08:19:38

标签: shopify liquid

这个问题听起来与我自己的问题cart-template-variant类似。我用ajax cart header.liquid做同样的事情。我只是想从购物车对象访问与cart-template问题{% if item.variant.inventory_quantity < 1 %}相同的广告资源。我最初尝试将{{item.variant.inventory_quantity}}打印到header.liquid,因为它是ajax购物车。在{% for item in cart.items %}里面我打印了{{item.variant.inventory_quantity}}但是当我将库存或缺货产品添加到购物车中时。它总是返回0.哪个是我没有正确传递的购物车对象属性?

我实际上是在遵循以下建议,但我在这里错过了一些东西。

Ajax购物车的代码在header.liquid中。它有一个Cart对象,它有许多属性。见https://help.shopify.com/themes/liquid/objects/cart#cart-items

其中一项是物品(即cart.items),它会将所有物品添加到购物车中。在第100行附近,您将看到一个for循环{%for cart.items%}。

这里是item = line_item。 line_item有许多属性。请参阅https://help.shopify.com/themes/liquid/objects/line_item

其中一个是变种。即line_item.variant。所以这里的for循环将是item.variant。

所以现在你有了变体属性。见https://help.shopify.com/themes/liquid/objects/variant

variant.inventory_quantity就是其中之一。

header.liquid(如果需要,准备共享整个文件。)

<form action="/checkout" method="post" id="cart">
    <ul data-money-format="{{ shop.money_format }}" data-shop-currency="{{ shop.currency }}" data-shop-name="{{ shop.name | escape }}">
      <li class="mm-subtitle"><a class="continue ss-icon" href="#cart"><span class="icon-close"></span></a></li>

      {% if cart.item_count == 0 %}
        <li class="empty_cart">{{ 'layout.general.empty_cart' | t }}</li>
      {% else %}
        {% for item in cart.items %}
            {{item.variant.inventory_quantity}}
        <a href="/#" >Will be dispatched by June 7</a>
          <li class="cart_item {% if forloop.last %}last_cart_item{% endif %}">
            <p class="mm-counter">
              <span class="icon-minus minus"></span><input type="number" min="0" class="quantity" name="updates[]" id="updates_{{ item.id }}" value="{{ item.quantity }}" data-line-id="{{ forloop.index }}" readonly /><span class="icon-plus plus"></span>
            </p>
            <a href="{{ item.url }}">
              {% if item.image %}
                <div class="cart_image">
                  <img src="{{ item | img_url: '410x' }}" alt="{{ item.title | escape }}" />
                </div>
              {% endif %}
              <div class="item_info">
                {{ item.product.title }}
                {% unless item.product.has_only_default_variant or item.variant.title contains "Title" %}
                  {% for option in item.product.options %}
                    {% unless option contains "Title" %}
                      - {{ item.variant.options[forloop.index0] }} {% unless forloop.last %}/{% endunless %}
                    {% endunless %}
                  {% endfor %}
                {% endunless %}

                {% if item.properties %}
                  {% for p in item.properties %}
                    {% if p.last != blank %}
                      <div class="line-item">
                        {{ p.first }}: {{ p.last }}
                      </div>
                    {% endif %}
                  {% endfor %}
                {% endif %}        
                <div class="price">
                  <span class="money">{{ item.price | money }}</span>
                </div>
              </div>
            </a>
          </li>
        {% endfor %}
        <li class="mm-label">
          <p class="mm-counter price">
            <span class="money">{{ cart.total_price | money }}</span>
          </p>
          <a href="/cart">
            <strong>{{ 'layout.general.subtotal' | t }}</strong>
          </a>
        </li>

        <li class="mm-subtitle clearfix">
          {% if settings.display_special_instructions %}
            <textarea id="cart-note" name="note" rows="2" placeholder="{{ 'layout.general.cart_note' | t }}" class="clearfix">{{ cart.note }}</textarea>
          {% endif %}

          {% if settings.display_tos_checkbox %}
            <aside class="tos tos_checkbox">
              <input type="checkbox" class="tos_agree" id="sliding_agree" required />
              <label class="tos_label" for="sliding_agree">
                {{ settings.tos_richtext }}
              </label>
            </aside>
          {% endif %}

          <input type="submit" class="action_button right" value="{{ 'layout.general.checkout' | t }}" />
          <a href="/cart" class="action_button edit_cart right">{{ 'layout.general.edit_cart' | t }}</a>
        </li>      
      {% endif %}
    </ul>
  </form>

0 个答案:

没有答案