Tutorial: How to add a Make a Selection feature to your variant drop-downs
Result:
Shopify has a support document for adding variant drop-down menus to your product page. This is helpful as it forces the buyer to select a variant before adding to cart.
Shopify's article:
https://help.shopify.com/themes/customization/products/how-to-add-a-pick-an-option-to-drop-downs
Note : Shopify has recently changed this document. Please follow the steps below instead of using the Shopify article. This tutorial works with Pipeline 2.2 and higher.
Start by making a duplicate of your theme - Important:
Always make a duplicate of your theme before adding any code. This will save you if anything goes wrong or if you decide not to use the added code in the future. We can not support or be responsible of any code changes that you make to your theme. For that reason, save yourself and make a duplicate first.
Make a duplicate before any code changes:
Important - Don't skip this step. A backup is necessary for this customization.
Here's how to use the above Make a Selection article with Pipeline:
- 1
-
Add code to bottom of your Javascript file
Begin by verifying which version of Pipeline you're running and which file to edit for the Javascript code. Use this article to find out which version and file to open:
Where to add Javascript code in your theme
Code to add:
At the very bottom of this file, add a couple blank lines and then paste this code at the end (Important: do not mix with any other code):
/* -- code for Make a Selection option -- */ $(document).ready(function() { if( typeof(productOptions ) != "undefined" ){ for(i=0;i<productOptions.length;i++) { $('.single-option-selector-product:eq('+ i +')') .filter(function() { return $(this).find('option').length > 1 }) .prepend('<option value="">Pick a ' + productOptions[i][i] + '</option>') .val('') .trigger('change'); } } }); /* - end - */
Save your file.
- 2
-
Edits to product-form file
From the Snippets folder, open product-form.liquid:
Use the Find feature (Command-F on Mac or Control-F in Windows) and search for:
option value
Example (the Find feature will highlight the result in yellow):
Replace the entire line:
Old code:
<option value="{{ value | escape }}"{% if option.selected_value == value %} selected="selected"{% endif %}>{{ value }}{% unless variant_avialable %} - {{ 'products.product.sold_out' | t }}{% endunless %}</option>
With this New code:
<option value="{{ value | escape }}">{{ value }}{% unless variant_avialable %} - {{ 'products.product.sold_out' | t }}{% endunless %}</option>
Next,
Add the following code to the bottom of product-form.liquid:
<script> var productOptions = []; {% for option in product.options %} var optionObj = {}; optionObj[ {{ forloop.index0 }} ] = "{{ product.options[forloop.index0] }}"; productOptions.push(optionObj); {% endfor %} </script>
Example:
Save the file.
- 3
-
Change the Add to cart button language settings
You can change the language settings for the Add to cart button so that products do not appear as "Unavailable" before a selection is made.
From your Shopify admin, click Online Store, and then click Themes.
Click Actions, and then click Edit language.
In the Filter translations box, type-in unavailable:
unavailable
Scroll down to the Products / Product section:
Change the text Unavailable to:
Make a selection
Example:
Click Save
Now you'll have:
After both variants in this example are selected, then the add to cart becomes activated and the quantity options are added:
Optional: Additional style note:
If you find the disabled button too dark you can try this:
Example:
Code:
/* -- code to change disabled button background color -- */ .btn.disabled {background-color: #f1f1f1;} /* - end - */
Use any valid hex color code - Change #f1f1f1 to any hex color:
http://www.colorhexa.com/web-safe-colors
Where to add the code:
Where to add CSS in your theme
Optional: Remove the price when an item is sold out
You can add this style code to hide the price from the button when a product is sold out:
/* -- code to hide price in add to cart button when sold out -- */ .btn.disabled .unicode, .btn.disabled .buttonPrice{ display:none;} /* - end - */ /* -- code to make sold out button black with white text -- */ .btn.disabled {background-color: #111111; color: #ffffff; font-weight: bold;} /* - end - */
Where to add CSS in your theme
Example Result: