Display variations as buttons

The normal setup for the display of product variations on your website is to display them as drop downs, allowing users to view the available options as a list. By using the 'variant buttons' extension you can instead display variation choices as buttons as shown on the example below.

If you have variations in different colours then you can display a coloured background for the button as well. Coloured backgrounds for buttons are inserted by placing a hexadecimal colour reference into the variation name, e.g. Red:#FF0000.


Installing the extension

Select 'apps and extensions' from the left menu and then 'available extensions'. Find the 'variant buttons' extension and click to activate it on your account. Activating the extension won't change the page where you add/edit products, you'll still add variations in the same way.

Once the extension is activated you'll then need to add the relevant code to your website's files (described below). Adding the code will change the drop downs into buttons. To add the relevant code you'll need to use the page editor, alternatively you can click the 'request installation' button and we'll install the code for you (a small charge will be made for the installation, which is listed on the extension page).

Please Note: The code comes with no styling, so it will need to be styled (with CSS or inline styles) to display nicely.

1. Open the product.twig file (located in /views/product pages/product.twig) and find the code contained within {% for option in product.options %} and {% endfor %}

2. Replace the existing code with the code shown below.

<div class="product-option">
    <input type="hidden" name="value[]" value="" class="product-option-value">
    <label>
        Select Your {{ option.name }}
    </label>
    <div class="product-option-container">
        {% set group = loop.index0 %}
        {% for value in option.values %}
            {% if not value.hidden %}
                {% set parts = value.name|split(':#') %}
                {% set name = parts[0] %}
                {% set color = parts[1] ? parts[1] : '' %}
                <label class="rectangle {{ color ? 'color' : '' }}">
                <input type="radio" name="group{{ group }}" value="{{ value.id }}" class="product-option-input">
                    <span class="inner" style="{{ color ? ('background-color:#' ~ color ~ ';') : '' }}">
                        {{ name }}
                    </span>
                </label>
            {% endif %}
        {% else %}
            <div class="note">
                Choose an option from the list above...
            </div>
            <input type="radio" name="group{{ group }}" value="" class="product-option-input" checked="checked">
        {% endfor %}
    </div>
</div>

As shown in the example below.

Save your changes.

3. To your theme's CSS file (often called default.twig.css) or a LESS file, if they are present on your theme, containing the product styles (often called products.less) you should add the code shown below

.product-option input {
    display: none;
}

4. Download the Javascript file here and add this to your application.js file (located within /assets/js/application.js). This should be at the top of the application.js file.

5. Within application.js you must replace

$('.product-form').productForm();

with:

$('.product-form').customProductForm();

Colour buttons for variations

If you'd like to display coloured backgrounds for the buttons for your variations, you can do so by, when configuring your variations, entering a hexadecimal colour reference after the variation name.

e.g. Red:#FF0000

for example,