Discuss and resolve questions on Liquid, JavaScript, themes, sales channels, and site speed enhancements.
I'm having trouble adding a variant selector to my Collection page.
I've added a Quantity Selector using the code below (which works great) but no variant selector.
Can somebody help, please?
Here's the code I've got right now:
{%- if show_quick_add -%} <div class="quick-add no-js-hidden"> {%- assign product_form_id = 'quick-add-' | append: section_id | append: card_product.id -%} {%- if card_product.variants.size == 1 -%} <product-form> {%- form 'product', card_product, id: product_form_id, class: 'form', novalidate: 'novalidate', data-type: 'add-to-cart-form' -%} <div class="product-form__input product-form__quantity{% if settings.inputs_shadow_vertical_offset != 0 and settings.inputs_shadow_vertical_offset < 0 %} product-form__quantity-top{% endif %}" {{ block.shopify_attributes }} > <label class="form__label visually-hidden" for="Quantity-{{ section.id }}"> {{ 'products.product.quantity.label' | t }} </label> <quantity-input class="quantity" style="margin-bottom: 10px;"> <button class="quantity__button no-js-hidden" name="minus" type="button"> <span class="visually-hidden"> {{- 'products.product.quantity.decrease' | t: product: product.title | escape -}} </span> {% render 'icon-minus' %} </button> <input class="quantity__input" type="number" name="quantity" id="Quantity-{{ section.id }}" min="1" value="1" form="{{ product_form_id }}" > <button class="quantity__button no-js-hidden" name="plus" type="button"> <span class="visually-hidden"> {{- 'products.product.quantity.increase' | t: product: product.title | escape -}} </span> {% render 'icon-plus' %} </button> </quantity-input> </div> <input type="hidden" name="id" value="{{ card_product.selected_or_first_available_variant.id }}" disabled > <button id="{{ product_form_id }}-submit" type="submit" name="add" class="quick-add__submit button button--full-width button--secondary" aria-haspopup="dialog" aria-labelledby="{{ product_form_id }}-submit title-{{ section_id }}-{{ card_product.id }}" aria-live="polite" data-sold-out-message="true" {% if card_product.selected_or_first_available_variant.available == false %} disabled {% endif %} > <span> {%- if card_product.selected_or_first_available_variant.available -%} {{ 'products.product.add_to_cart' | t }} {%- else -%} {{ 'products.product.sold_out' | t }} {%- endif -%} </span> <span class="sold-out-message hidden"> {{ 'products.product.sold_out' | t }} </span> <div class="loading-overlay__spinner hidden"> <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg" > <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> </svg> </div> </button> {%- endform -%} </product-form> {%- else -%} <modal-opener data-modal="#QuickAdd-{{ card_product.id }}"> <button id="{{ product_form_id }}-submit" type="submit" name="add" class="quick-add__submit button button--full-width button--secondary" aria-haspopup="dialog" aria-labelledby="{{ product_form_id }}-submit title-{{ section_id }}-{{ card_product.id }}" data-product-url="{{ card_product.url }}" > {{ 'products.product.choose_options' | t }} <div class="loading-overlay__spinner hidden"> <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg" > <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle> </svg> </div> </button> </modal-opener> <quick-add-modal id="QuickAdd-{{ card_product.id }}" class="quick-add-modal"> <div role="dialog" aria-label="{{ 'products.product.choose_product_options' | t: product_name: card_product.title | escape }}" aria-modal="true" class="quick-add-modal__content global-settings-popup" tabindex="-1" > <button id="ModalClose-{{ card_product.id }}" type="button" class="quick-add-modal__toggle" aria-label="{{ 'accessibility.close' | t }}" > {% render 'icon-close' %} </button> <div id="QuickAddInfo-{{ card_product.id }}" class="quick-add-modal__content-info"></div> </div> </quick-add-modal> {%- endif -%} </div> {%- endif -%} <div class="card__badge {{ settings.badge_position }}"> {%- if card_product.available == false -%} <span id="Badge-{{ section_id }}-{{ card_product.id }}" class="badge badge--bottom-left color-{{ settings.sold_out_badge_color_scheme }}" > {{- 'products.product.sold_out' | t -}} </span> {%- elsif card_product.compare_at_price > card_product.price and card_product.available -%} <span id="Badge-{{ section_id }}-{{ card_product.id }}" class="badge badge--bottom-left color-{{ settings.sale_badge_color_scheme }}" > {{- 'products.product.on_sale' | t -}} </span> {%- endif -%} </div> </div> </div> </div> {%- else -%} <div class="product-card-wrapper card-wrapper underline-links-hover"> <div class=" card card--{{ settings.card_style }} card--text {% if extend_height %} card--extend-height{% endif %} {% if settings.card_style == 'card' %} color-{{ settings.card_color_scheme }} gradient{% endif %} {% if card_product.featured_media == nil and settings.card_style == 'card' %} ratio{% endif %} {{ horizontal_class }} " style="--ratio-percent: 100%;" > <div class="card__inner {% if settings.card_style == 'standard' %}color-{{ settings.card_color_scheme }} gradient{% endif %}{% if settings.card_style == 'standard' %} ratio{% endif %}" style="--ratio-percent: 100%;" > <div class="card__content"> <div class="card__information"> <h3 class="card__heading"> <a role="link" aria-disabled="true" class="full-unstyled-link"> {{ 'onboarding.product_title' | t }} </a> </h3> </div> </div> </div> <div class="card__content"> <div class="card__information"> <h3 class="card__heading{% if settings.card_style == 'standard' %} h5{% endif %}"> <a aria-disabled="true" class="full-unstyled-link"> {{ 'onboarding.product_title' | t }} </a> </h3> <div class="card-information"> {%- if show_vendor -%} <span class="visually-hidden">{{ 'accessibility.vendor' | t }}</span> <div class="caption-with-letter-spacing light">{{ 'products.product.vendor' | t }}</div> {%- endif -%} {% render 'price' %} </div> </div> </div> </div> </div> {%- endif -%}
Hi,
If you want we can check your backend for the solution.
Hey Community 👋 Did you know that March 15th is National Everything You Think Is W...
By JasonH Apr 1, 2025Discover how to increase the efficiency of commerce operations with Shopify Academy's l...
By Jacqui Mar 26, 2025Shopify and our financial partners regularly review and update verification requiremen...
By Jacqui Mar 14, 2025