Boundless
Steps for Boundless
Follow these steps to apply the customization to Boundless:
Edit your theme's JavaScript file
From your Shopify admin, go to Online Store > Themes .
Find the theme you want to edit, click the … button to open the actions menu, and then click Edit code .
In the Assets directory, click theme.js
or theme.js.liquid
.
Find the code initVariantSelectors
. Below that, find the following code:
// Clean up variant labels if the Shopify-defined
// defaults are the only ones left
this . simplifyVariantLabels ( this . productSingleObject , this . $container );
Add the following code on a new line below:
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
It should look something like this:
// Clean up variant labels if the Shopify-defined
// defaults are the only ones left
this . simplifyVariantLabels ( this . productSingleObject , this . $container );
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
Find the following line of code:
$ ( selectors . addToCartText ). html ( theme . strings . soldOut );
There are two instances of this line of code, both found within the productVariantCallback
function. Replace only the second instance with:
$ ( selectors . addToCartText ). html ( ' Make a Selection ' );
Click Save .
Note
Some versions of Boundless don't include the line of code to be replaced in this step. If you can't find the code, then skip to the next step.
Edit your product page template
To edit your product page template:
In the Sections directory, click product-template.liquid
.
Find the following code:
{% assign current_variant = product . selected_or_first_available_variant %}
Replace it with:
{% assign current_variant = product . selected_variant %}
Find the following code and delete it:
{% if variant == product . selected_or_first_available_variant %} selected="selected" {% endif %}
Find the code {% schema %}
. Paste the following code on its own line above that:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
It should look something like this:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
{% schema %}
Click Save .
You can change the language settings for the Add to cart button so that products don't display as Unavailable before a customer selects a product.
Steps:
From your Shopify admin, go to Online Store > Themes .
Find the theme that you want to edit, and then click ... > Edit default theme content .
In the Filter items search bar, start typing unavailable to display the Unavailable translation.
Replace the text Unavailable with Make a selection .
Click Save .
Debut
Steps for Debut
Follow these steps to apply the customization to Debut:
Edit your theme's JavaScript file
From your Shopify admin, go to Online Store > Themes .
Find the theme you want to edit, click the … button to open the actions menu, and then click Edit code .
In the Assets directory, click theme.js
or theme.js.liquid
.
Add the following code to the bottom of the file:
( function () {
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
})();
Find the code _updatePrice: function(variant)
. Replace the following code:
if (
variant . price === this . currentVariant . price &&
variant . compare_at_price === this . currentVariant . compare_at_price &&
variant . unit_price === this . currentVariant . unit_price
) {
return ;
}
with:
/* if (
variant.price === this.currentVariant.price &&
variant.compare_at_price === this.currentVariant.compare_at_price &&
variant.unit_price === this.currentVariant.unit_price
) {
return;
} */
If you can't find the above code, then find the following code:
if (
variant . price === this . currentVariant . price &&
variant . compare_at_price === this . currentVariant . compare_at_price
) {
return ;
}
Replace it with:
/* if (
variant.price === this.currentVariant.price &&
variant.compare_at_price === this.currentVariant.compare_at_price
) {
return;
} */
Find the code this.currentVariant = variant;
Add the following code below:
this . _updatePaymentButton ( variant );
The result should look something like this:
this . currentVariant = variant ;
this . _updatePaymentButton ( variant );
Find the code _updateImages: function(variant)
. Replace the following code:
var currentVariantImage = this . currentVariant . featured_image || {};
with:
if ( this . currentVariant != undefined ) {
var currentVariantImage = this . currentVariant . featured_image || {};
}
Just below, find the following code:
if (
! variant . featured_image ||
variantImage . src === currentVariantImage . src
) {
return ;
}
Replace it with:
/* if (
!variant.featured_image ||
variantImage.src === currentVariantImage.src
) {
return;
} */
Find the code _updateSKU: function(variant)
. Replace the following code:
if ( variant . sku === this . currentVariant . sku ) {
return ;
}
with:
if ( this . currentVariant != undefined ) {
if ( variant . sku === this . currentVariant . sku ) {
return ;
}
}
Find the code _initVariants: function() {
. Replace the following code:
if ( this . storeAvailability && this . variants . currentVariant . available ) {
this . storeAvailability . updateContent ( this . variants . currentVariant . id );
}
with:
/* if (this.storeAvailability && this.variants.currentVariant.available) {
this.storeAvailability.updateContent(this.variants.currentVariant.id);
} */
Find the following code:
_updateSKU : function ( variant ) {
if ( this . currentVariant != undefined ) {
if ( variant . sku === this . currentVariant . sku ) {
return ;
}
}
this . container . dispatchEvent (
new CustomEvent ( ' variantSKUChange ' , {
detail : {
variant : variant
},
bubbles : true ,
cancelable : true
})
);
},
Add the following code, on a new line, below the above code:
_updatePaymentButton : function ( variant ) {
if ( this . currentVariant != undefined ) {
const paymentButton = document . querySelector ( ' .payment-button ' );
if ( paymentButton ) {
paymentButton . removeAttribute ( ' class ' , ' visually-hidden ' );
}
} else {
document . querySelector ( ' .payment-button ' ). setAttribute ( ' class ' , ' visually-hidden ' );
}
},
It should look something like this:
_updateSKU : function ( variant ) {
if ( this . currentVariant != undefined ) {
if ( variant . sku === this . currentVariant . sku ) {
return ;
}
}
this . container . dispatchEvent (
new CustomEvent ( ' variantSKUChange ' , {
detail : {
variant : variant
},
bubbles : true ,
cancelable : true
})
);
},
_updatePaymentButton : function ( variant ) {
if ( this . currentVariant != undefined ) {
const paymentButton = document . querySelector ( ' .payment-button ' );
if ( paymentButton ) {
paymentButton . removeAttribute ( ' class ' , ' visually-hidden ' );
}
} else {
document . querySelector ( ' .payment-button ' ). setAttribute ( ' class ' , ' visually-hidden ' );
}
},
Click Save .
Edit your product page template
To edit your product page template:
In the Sections directory, click product-template.liquid
.
Find the following code:
{%- assign current_variant = product . selected_or_first_available_variant -%}
Replace it with:
{%- if product . variants . size > 1 -%}
{%- assign current_variant = product . selected_variant -%}
{%- else %}
{%- assign current_variant = product . first_available_variant -%}
{%- endif %}
Find the following code and delete it:
{% if variant == product . selected_or_first_available_variant %} selected="selected" {% endif %}
If you can't find the code above, then find the following code and delete it:
{%- if variant == current_variant %} selected="selected" {%- endif -%}
Find the following code:
{%- assign featured_image = product . selected_or_first_available_variant . featured_image | default : product . featured_image -%}
Replace it with:
{%- assign featured_image = current_variant . featured_image | default : product . featured_image -%}
If you can't find the code above, then find the following code:
{%- assign featured_media = product . selected_or_first_available_variant . featured_media | default : product . featured_media -%}
Replace it with:
{%- assign featured_media = current_variant . featured_media | default : product . featured_media -%}
Note
Some versions of Debut don't include the line of code to be replaced in this step. If you can't find the code, then skip to the next step.
Find the following code:
{% unless current_variant . available %}
{{ 'products.product.sold_out' | t }}
{% else %}
{{ 'products.product.add_to_cart' | t }}
{% endunless %}
Replace it with:
{% if current_variant == blank %}
{{ 'products.product.unavailable' | t }}
{% elsif current_variant . available %}
{{ 'products.product.add_to_cart' | t }}
{% else %}
{{ 'products.product.sold_out' | t }}
{% endif %}
Find the following code:
{% if section . settings . enable_payment_button %}
{{ form | payment_button }}
{% endif %}
Replace it with:
<div class="payment-button {% if current_variant == blank %} visually-hidden {% endif %} ">
{% if section . settings . enable_payment_button %}
{{ form | payment_button }}
{% endif %}
</div>
Find the code {% schema %}
. Paste the following code on its own line above that:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
It should look something like this:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
{% schema %}
Click Save .
Edit your product price snippet
To edit your product price snippet:
In the Snippets directory, click product-price.liquid
.
Find the following code:
{%- liquid
if variant . title
assign compare_at_price = variant . compare_at_price
assign price = variant . price
assign available = variant . available
else
assign compare_at_price = 1999
assign price = 1999
assign available = true
endif
assign money_price = price | money
-%}
Replace it with:
{%- liquid
if variant . title
assign compare_at_price = variant . compare_at_price
assign price = variant . price
assign available = variant . available
elsif product . title
assign compare_at_price = product . compare_at_price
assign price = product . price
assign available = product . available
else
assign compare_at_price = 1999
assign price = 1999
assign available = true
endif
assign money_price = price | money
-%}
Note
Some versions of Debut don't include the code to be replaced in this step. If you can't find the code, then skip to the next step.
You can change the language settings for the Add to cart button so that products don't display as Unavailable before a customer selects a product.
Steps:
From your Shopify admin, go to Online Store > Themes .
Find the theme that you want to edit, and then click ... > Edit default theme content .
In the Filter items search bar, start typing unavailable to display the Unavailable translation.
Replace the text Unavailable with Make a selection .
Click Save .
Minimal
Steps for Minimal
Follow these steps to apply the customization to Minimal:
Edit your theme's JavaScript file
From your Shopify admin, go to Online Store > Themes .
Find the theme you want to edit, click the … button to open the actions menu, and then click Edit code .
In the Assets directory, click theme.js
or theme.js.liquid
.
Find the code initProductVariant: function() {
. Below that, find the following code:
// Hide selectors if we only have 1 variant and its title contains 'Default'.
if (
product . variants . length === 1 &&
product . variants [ 0 ]. title . toLowerCase (). indexOf ( ' default ' ) !== - 1
) {
$ ( ' .selector-wrapper ' , this . $container ). hide ();
}
Add the following code on a new line below:
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
It should look something like this:
// Hide selectors if we only have 1 variant and its title contains 'Default'.
if (
product . variants . length === 1 &&
product . variants [ 0 ]. title . toLowerCase (). indexOf ( ' default ' ) !== - 1
) {
$ ( ' .selector-wrapper ' , this . $container ). hide ();
}
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
Click Save .
Edit your product page template
To edit your product page template:
In the Sections directory, click product-template.liquid
.
Find the following code:
{% assign variant = product . selected_or_first_available_variant %}
Replace it with:
{% assign variant = product . selected_variant %}
Find the following code and delete it:
{% if variant == product . selected_or_first_available_variant %} selected="selected" {% endif %}
Find all occurrences of this code:
{% assign featured_image = product . selected_or_first_available_variant . featured_image | default : product . featured_image %}
Replace with:
{% assign featured_image = product . selected_variant . featured_image | default : product . featured_image %}
Find the code {% schema %}
. Paste the following code on its own line above that:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
It should look something like this:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
{% schema %}
Click Save .
You can change the language settings for the Add to cart button so that products don't display as Unavailable before a customer selects a product.
Steps:
From your Shopify admin, go to Online Store > Themes .
Find the theme that you want to edit, and then click ... > Edit default theme content .
In the Filter items search bar, start typing unavailable to display the Unavailable translation.
Replace the text Unavailable with Make a selection .
Click Save .
Narrative
Steps for Narrative
Follow these steps to apply the customization to Narrative:
Edit your theme's JavaScript file
From your Shopify admin, go to Online Store > Themes .
Find the theme you want to edit, click the … button to open the actions menu, and then click Edit code .
In the Assets directory, click custom.js
.
Add the following code to the bottom of the file:
( function () {
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
})();
Click Save .
Edit your product page template
To edit your product page template:
In the Sections directory, click product-template.liquid
.
Find the following code:
{%- assign current_variant = product . selected_or_first_available_variant -%}
Replace it with:
{%- if product . variants . size > 1 -%}
{%- assign current_variant = product . selected_variant -%}
{%- else -%}
{%- assign current_variant = product . first_available_variant -%}
{%- endif -%}
Find the code {% schema %}
. Paste the following code on its own line above that:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
It should look something like this:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
{% schema %}
Click Save .
You can change the language settings for the Add to cart button so that products don't display as Unavailable before a customer selects a product.
Steps:
From your Shopify admin, go to Online Store > Themes .
Find the theme that you want to edit, and then click ... > Edit default theme content .
In the Filter items search bar, start typing unavailable to display the Unavailable translation.
Replace the text Unavailable with Make a selection .
Click Save .
Simple
Steps for Simple
Follow these steps to apply the customization to Simple:
Edit your theme's JavaScript file
From your Shopify admin, go to Online Store > Themes .
Find the theme you want to edit, click the … button to open the actions menu, and then click Edit code .
In the Assets directory, click theme.js
or theme.js.liquid
.
Find the code initProductVariant: function() {
. Below that, find the following code:
// Clean up variant labels if the Shopify-defined
// defaults are the only ones left
Slate . simplifyVariantLabels ( this . productSingleObject , this . $container );
Add the following code on a new line below:
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
It should look something like this:
// Clean up variant labels if the Shopify-defined
// defaults are the only ones left
Slate . simplifyVariantLabels ( this . productSingleObject , this . $container );
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
Click Save .
Edit your product page template
To edit your product page template:
In the Sections directory, click product-template.liquid
.
Find the following code:
{% assign current_variant = product . selected_or_first_available_variant %}
Replace it with:
{% assign current_variant = product . selected_variant %}
Find the following code and delete it:
{% if variant == product . selected_or_first_available_variant %} selected="selected" {% endif %}
Find the code {% schema %}
. Paste the following code on its own line above that:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
It should look something like this:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
{% schema %}
Click Save .
You can change the language settings for the Add to cart button so that products don't display as Unavailable before a customer selects a product.
Steps:
From your Shopify admin, go to Online Store > Themes .
Find the theme that you want to edit, and then click ... > Edit default theme content .
In the Filter items search bar, start typing unavailable to display the Unavailable translation.
Replace the text Unavailable with Make a selection .
Click Save .
Supply
Steps for Supply
Follow these steps to apply the customization to Supply:
Edit your theme's JavaScript file
From your Shopify admin, go to Online Store > Themes .
Find the theme you want to edit, click the … button to open the actions menu, and then click Edit code .
In the Assets directory, click theme.js
or theme.js.liquid
.
Find the code initProductVariant: function() {
. Below that, find the following code:
// Clean up variant labels if the Shopify-defined
// defaults are the only ones left
this . simplifyVariantLabels ( this . productSingleObject );
Add the following code on a new line below:
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
It should look something like this:
// Clean up variant labels if the Shopify-defined
// defaults are the only ones left
this . simplifyVariantLabels ( this . productSingleObject );
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
Click Save .
Edit your product page template
To edit your product page template:
In the Sections directory, click product-template.liquid
.
Find the following code:
{% assign variant = product . selected_or_first_available_variant %}
Replace it with:
{% assign variant = product . selected_variant %}
Find the following code and delete it:
{% if variant == product . selected_or_first_available_variant %} selected="selected" {% endif %}
Find all occurrences of this code:
{% assign featured_image = product . selected_or_first_available_variant . featured_image | default : product . featured_image %}
Replace it with:
{% assign featured_image = product . selected_variant . featured_image | default : product . featured_image %}
Find the code {% schema %}
. Paste the following code on its own line above that:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
It should look something like this:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
{% schema %}
Click Save .
You can change the language settings for the Add to cart button so that products don't display as Unavailable before a customer selects a product.
Steps:
From your Shopify admin, go to Online Store > Themes .
Find the theme that you want to edit, and then click ... > Edit default theme content .
In the Filter items search bar, start typing unavailable to display the Unavailable translation.
Replace the text Unavailable with Make a selection .
Click Save .
Venture
Steps for Venture
Follow these steps to apply the customization to Venture:
Edit your theme's JavaScript file
From your Shopify admin, go to Online Store > Themes .
Find the theme you want to edit, click the … button to open the actions menu, and then click Edit code .
In the Assets directory, click theme.js
or theme.js.liquid
.
Add the following code to the bottom of the file:
( function () {
if ( typeof ( productOptions ) != " undefined " ) {
for ( i = 0 ; i < productOptions . length ; i ++ ) {
const vowels = [ ' a ' , ' e ' , ' i ' , ' o ' , ' u ' ];
const firstOptionLetter = productOptions [ i ][ i ][ 0 ]. toLowerCase ();
let indef = ' a ' ;
if ( vowels . includes ( firstOptionLetter )) {
indef = ' an ' ;
};
const select = document . querySelectorAll ( ' .single-option-selector ' )[ i ];
const options = select . querySelectorAll ( ' option ' );
if ( options . length > 1 ) {
let option = new Option ( ' Pick ' + indef + ' ' + productOptions [ i ][ i ], '' );
select . add ( option , select . firstChild );
select . selectedIndex = 0 ;
}
}
}
})();
Find the following code:
this . currentVariant = this . _getVariantFromOptions ();
Replace it with:
this . currentVariant = this . _getVariantFromOptions () || {};
Find the code _updatePrice: function(variant)
. Replace the following code:
if (
variant . price === this . currentVariant . price &&
variant . compare_at_price === this . currentVariant . compare_at_price
) {
return ;
}
with:
/* if (
variant.price === this.currentVariant.price &&
variant.compare_at_price === this.currentVariant.compare_at_price
) {
return;
} */
Click Save .
Edit your product page template
To edit your product page template:
In the Sections directory, click product-template.liquid
.
Find the following code:
{% assign current_variant = product . selected_or_first_available_variant %}
Replace it with:
{% if product . variants . size > 1 %}
{% assign current_variant = product . selected_variant %}
{% else %}
{% assign current_variant = product . first_available_variant %}
{% endif %}
Find the following code and delete it:
{% if variant == product . selected_or_first_available_variant %} selected="selected" {% endif %}
If you can't find the code above, then find this code and delete it:
{% if variant == current_variant %} selected="selected" {% endif %}
Find all occurrences of this code:
{% unless current_variant . available %}
Replace it with:
{% unless current_variant . available or product . variants . size == 1 and variant . available %}
Find the following code:
{% unless current_variant . available or product . variants . size == 1 and variant . available %}
{{ 'products.product.sold_out' | t }}
{% else %}
{{ 'products.product.add_to_cart' | t }}
{% endunless %}
Replace it with:
{% if current_variant == blank %}
{{ 'products.product.unavailable' | t }}
{% else %}
{% unless current_variant . available or product . variants . size == 1 and variant . available %}
{{ 'products.product.sold_out' | t }}
{% else %}
{{ 'products.product.add_to_cart' | t }}
{% endunless %}
{% endif %}
Find the code {% schema %}
. Paste the following code on its own line above that:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
It should look something like this:
{% if current_variant == blank %}
<script>
var productOptions = [];
{% for option in product . options -%}
var optionObj = {};
optionObj[ {{ forloop.index0 }} ] = "{{ product . options [ forloop.index0 ] }} ";
productOptions.push(optionObj);
{%- endfor %}
</script>
{% endif %}
{% schema %}
Click Save .
You can change the language settings for the Add to cart button so that products don't display as Unavailable before a customer selects a product.
Steps:
From your Shopify admin, go to Online Store > Themes .
Find the theme that you want to edit, and then click ... > Edit default theme content .
In the Filter items search bar, start typing unavailable to display the Unavailable translation.
Replace the text Unavailable with Make a selection .
Click Save .