2017-08-01 34 views
0

Snippets/product-form.liquid有一個代碼塊:只顯示可用的選項Shopify上

<div class="swatch_options"> 
    {% for option in product.options %} 
    {% include 'product-swatch' with option %} 
    {% endfor %} 
</div> 

這顯示選項產品X的在不可用的色板:

<div data-value="option name" class="swatch-element color optionName-swatch available soldout"> 
    <div class="tooltip">Option Name</div> 
    <label for="optionName"> 
    <span class="crossed-out"></span> 
    </label> 
</div> 

當這些不兼容的變種被點擊,顯示一個大的「不可用」消息:

<p class="modal_price" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer"> 
    <meta itemprop="priceCurrency" content="USD"> 
    <meta itemprop="seller" content="site"> 
    <link itemprop="availability" href="http://schema.org/InStock"> 
    <meta itemprop="itemCondition" content="New"> 
    <span class="sold_out">Unavailable</span> 
    <span itemprop="price" content="10.00" class=""> 
    <span class="current_price "></span> 
    </span> 
    <span class="was_price"></span> 
    <span class="sale savings"></span> 
</p> 

我試過在{% include 'product-swatch' with option %}之前檢查variant.availableproduct.variants.first.availablevariant.inventory_quantity > 0,但沒有成功。

如何隱藏不兼容的變體?

編輯:這是目前什麼的product-swatch.liquid內:

{% comment %} 
    Set the extension of your color files below. Use 'png', 'jpeg', 'jpg' or 'gif'. 
{% endcomment %} 

{% assign file_extension = 'png' %} 

{% assign swatch = product-swatch %} 
{% assign found_option = false %} 
{% assign is_color = false %} 
{% assign option_index = 0 %} 

{% for option in product.options %} 
    {% if option == swatch %} 
    {% assign found_option = true %} 
    {% assign option_index = forloop.index0 %} 
    {% assign downcased_option = swatch | downcase %} 
    {% if downcased_option contains 'color' or downcased_option contains 'colour' %} 
     {% assign is_color = true %} 
    {% endif %} 
    {% endif %} 
{% endfor %} 

<div class="swatch clearfix" data-option-index="{{ option_index }}"> 
    <div class="option_title">{{ swatch }}</div> 
    {% assign values = '' %} 
    {% for variant in product.variants %} 
    {% if variant.available %} 
    {% assign value = variant.options[option_index] %} 
    {% unless values contains value %} 
     {% assign values = values | join: ',' %} 
     {% assign values = values | append: ',' | append: value %} 
     {% assign values = values | split: ',' %} 
     <input id="swatch-{{ option_index }}-{{ value | handle }}-{{ product.id }}" type="radio" name="option-{{ option_index }}" value="{{ value | escape }}"{% if forloop.first %} checked{% endif %} /> 
     <div data-value="{{ value | escape }}" class="swatch-element {% if is_color %}color {% endif %}{{ value | handle }}-swatch {% if variant.available %}available{% else %}soldout{% endif %}"> 
     {% if is_color %} 
      <div class="tooltip">{{ value }}</div> 
     {% endif %} 
     {% if is_color %} 
      <label for="swatch-{{ option_index }}-{{ value | handle }}-{{ product.id }}" style="background-image: url({{ value | handle | append: '.' | append: file_extension | asset_img_url: '50x' }}); background-color: {{ value | split: ' ' | last | handle }};"> 
      <span class="crossed-out"></span> 
      </label> 
     {% else %} 
      <label for="swatch-{{ option_index }}-{{ value | handle }}-{{ product.id }}"> 
      {{ value }} 
      <span class="crossed-out"></span> 
      </label> 
     {% endif %} 
     </div> 
    {% endunless %} 
    {% endif %} 
    {% endfor %} 
</div> 

回答

0

編輯您的產品swatch.liquid文件下的 「片段」 文件夾中。

查找{% for variant in product.variants %}並將其放在{% if variant.available %}之後。

找到{% endfor %}並把它放在{% endif %}之前。

如果不能正常工作,請與我們分享product-swatch.liquid的代碼。

+0

這是我的第一個想法,但'variant.available'似乎會爲每個變體返回'true'。它看起來像'product-swatch.liquid'可能是一個更好的地方來編輯它。這不是一個庫存問題,而是選項的組合不可用於購買。 – arby

+0

嗨, 你說過,'我試過在{%包括'product-swatch'選項%}之前檢查variant.available,product.variants.first.available和variant.inventory_quantity> 0,但沒有成功。 我在問你編輯product-swatch.liquid並進行我上面建議的更改。 如果不工作,請分享產品swatch.liquid的完整代碼。 –

+0

@arby,那麼您在更新中發佈的代碼不起作用?你的意思是不兼容的變體?缺貨變體或其他東西? –