2017-08-01 1 views
0

En Snippets/product-form.liquid il y a un bloc de code:Seul l'affichage des options disponibles sur Shopify

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

Cette affiche des options pour les produits avec des X sur les nuanciers indisponibles:

<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> 

Lorsque ces variantes non compatibles sont cliqués, un grand message "INDISPONIBLE" s'affiche:

<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> 

J'ai essayé de vérifier pour variant.available, product.variants.first.available, et variant.inventory_quantity > 0 avant {% include 'product-swatch' with option %}, sans succès.

Comment cacher les variantes non compatibles?

Edit: Voici ce qui est actuellement à l'intérieur de 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> 

Répondre

0

Modifier votre fiche produit-swatch.liquid sous dossier "extraits".

Recherchez {% for variant in product.variants %} et placez {% if variant.available %} juste après.

Trouvez {% endfor %} et placez {% endif %} juste avant.

Si cela ne fonctionne pas, partagez les codes de product-swatch.liquid avec nous.

+0

C'était ma première pensée, mais 'variant.available' semble retourner' true' pour chacune des variantes. Il semble que 'product-swatch.liquid' pourrait être un meilleur endroit pour éditer ceci. Ce n'est pas un problème d'inventaire, mais plutôt cette combinaison d'options n'est pas disponible à l'achat. – arby

+0

Salut, Vous avez dit: 'J'ai essayé de rechercher variant.available, product.variants.first.available et variant.inventory_quantity> 0 avant que {% ne comprenne 'product-swatch' avec l'option%}, sans succès. Je vous demande d'éditer le produit-swatch.liquid et de faire les changements que j'ai suggérés ci-dessus. Partagez le code complet de votre produit-swatch.liquid s'il ne fonctionne pas. –

+0

@arby, Donc, le code que vous avez posté dans la mise à jour ne fonctionne pas? Que voulez-vous dire par variante non compatible? En rupture de stock ou autre chose? –