Continue selling out of stock but I want variants to be crossed out

Topic summary

A user wants to display strikethrough styling on out-of-stock product variants while keeping “continue selling when out of stock” enabled, so customers can still purchase items with extended delivery times.

Solution Provided:

  • Another user (@namphan) requested the store link and the product-variant-options.liquid file code
  • Modified code was provided that successfully adds strikethrough to unavailable variants while maintaining purchase functionality
  • The original poster confirmed the solution works perfectly

Similar Request:

  • A second user (@user1668) using the Minimog theme and a preorder app has the same requirement
  • They want sold-out variants to show strikethrough while the preorder app allows continued sales
  • @namphan explained that each theme has different code structure and requested collaborator access to implement the solution
  • The user has sent a collaboration request and is awaiting implementation

Key Technical Detail:
The fix involves modifying the Liquid template file that renders variant options, specifically targeting the styling of unavailable variants while preserving their selectable state.

Summarized with AI on October 24. AI used: claude-sonnet-4-5-20250929.

Hi,

I would like for some of my items that are continue selling out of stock to include the basic function that crosses out the name in variants when the continue selling out of stock is not applied.

I have managed to add a message that delivery time should take additional days for sold out items, but can’t seem to find what line would react to achieve this.

So this is basically a sold out item, with the message appearing, but I would like sold out items to be crossed out or strikethrough or whatever the basic is for sold out items when they don’t continue selling out of stock.

Also I have attached a picture of the basic appearance that runs when they aren’t sold when out of stock.

Could anyone help me in this matter?

Thanks in advance.

Hi @swazzie ,

Please send me the store link, I will check it for you

Dear @namphan

Thanks for trying to help first of all.

Here is a link for the store, to the specific item that I’m trying to work on: https://smartinserts.net/products/201-50-04c-o4-to-o20

Shop password is dwawa

Not sure if there is another way to provide an overview for the shop without the password.

Hi @swazzie ,

Please send me the code of product-variant-options.liquid file, I will check and add it for you

Dear @namphan

Here is the code for the product-variant-options.liquid file:

{% comment %}
Renders product variant options

Accepts:

  • product: {Object} product object.
  • option: {Object} current product_option object.
  • block: {Object} block object.
  • picker_type: {String} type of picker to display

Usage:
{% render ‘product-variant-options’,
product: product,
option: option,
block: block
picker_type: picker_type
%}
{% endcomment %}
{%- liquid
assign product_form_id = ‘product-form-’ | append: section.id
-%}

{%- for value in option.values -%}
{%- liquid
assign swatch_focal_point = null
if value.swatch.image
assign image_url = value.swatch.image | image_url: width: 50
assign swatch_value = ‘url(’ | append: image_url | append: ‘)’
assign swatch_focal_point = value.swatch.image.presentation.focal_point
elsif value.swatch.color
assign swatch_value = ‘rgb(’ | append: value.swatch.color.rgb | append: ‘)’
else
assign swatch_value = null
endif

assign option_disabled = true
if value.available
assign option_disabled = false
endif
-%}

{%- capture input_id -%}
{{ section.id }}-{{ option.position }}-{{ forloop.index0 -}}
{%- endcapture -%}

{%- capture input_name -%}
{{ option.name }}-{{ option.position }}
{%- endcapture -%}

{%- capture input_dataset -%}
data-product-url=“{{ value.product_url }}”
data-option-value-id=“{{ value.id }}”
{%- endcapture -%}

{%- capture label_unavailable -%}

{{- ‘products.product.variant_sold_out_or_unavailable’ | t -}}

{%- endcapture -%}

{%- if picker_type == ‘swatch’ -%}
{%- capture help_text -%}
{{ value | escape }}
{{ label_unavailable }}
{%- endcapture -%}
{%
render ‘swatch-input’,
id: input_id,
name: input_name,
value: value | escape,
swatch: value.swatch,
product_form_id: product_form_id,
checked: value.selected,
visually_disabled: option_disabled,
shape: block.settings.swatch_shape,
help_text: help_text,
additional_props: input_dataset
%}
{%- elsif picker_type == ‘button’ -%}
<input
type=“radio”
id=“{{ input_id }}”
name=“{{ input_name | escape }}”
value=“{{ value | escape }}”
form=“{{ product_form_id }}”
{% if value.selected %}
checked
{% endif %}
{% if option_disabled %}
class=“disabled”
{% endif %}
{{ input_dataset }}

<label for=“{{ input_id }}” {% if option_disabled %} class=“variant-option-out-of-stock” {% endif %}>
{{ value }}
{{ label_unavailable }}

{%- elsif picker_type == ‘dropdown’ or picker_type == ‘swatch_dropdown’ -%}

{% if option_disabled -%} {{- 'products.product.value_unavailable' | t: option_value: value -}} {%- else -%} {{- value -}} {%- endif %} {%- endif -%} {%- endfor -%}

Hi @swazzie ,

Please change all code:

{% comment %}
Renders product variant options

Accepts:
- product: {Object} product object.
- option: {Object} current product_option object.
- block: {Object} block object.
- picker_type: {String} type of picker to display

Usage:
{% render 'product-variant-options',
product: product,
option: option,
block: block
picker_type: picker_type
%}
{% endcomment %}
{%- liquid
assign product_form_id = 'product-form-' | append: section.id
-%}

{%- for value in option.values -%}
{%- liquid
assign swatch_focal_point = null
if value.swatch.image
assign image_url = value.swatch.image | image_url: width: 50
assign swatch_value = 'url(' | append: image_url | append: ')'
assign swatch_focal_point = value.swatch.image.presentation.focal_point
elsif value.swatch.color
assign swatch_value = 'rgb(' | append: value.swatch.color.rgb | append: ')'
else
assign swatch_value = null
endif

assign option_disabled = true
if value.available
assign option_disabled = false
endif
-%}

{%- capture input_id -%}
{{ section.id }}-{{ option.position }}-{{ forloop.index0 -}}
{%- endcapture -%}

{%- capture input_name -%}
{{ option.name }}-{{ option.position }}
{%- endcapture -%}

{%- capture input_dataset -%}
data-product-url="{{ value.product_url }}"
data-option-value-id="{{ value.id }}"
{%- endcapture -%}

{%- capture label_unavailable -%}

{{- 'products.product.variant_sold_out_or_unavailable' | t -}}

{%- endcapture -%}

{%- if picker_type == 'swatch' -%}
{%- capture help_text -%}
{{ value | escape }}
{{ label_unavailable }}
{%- endcapture -%}
{%
render 'swatch-input',
id: input_id,
name: input_name,
value: value | escape,
swatch: value.swatch,
product_form_id: product_form_id,
checked: value.selected,
visually_disabled: option_disabled,
shape: block.settings.swatch_shape,
help_text: help_text,
additional_props: input_dataset
%}
{%- elsif picker_type == 'button' -%}

{%- elsif picker_type == 'dropdown' or picker_type == 'swatch_dropdown' -%}

{%- endif -%}
{%- endfor -%}
1 Like

Dear @namphan

Thank you so much, it just works perfectly. Now the items are crossed out in variants, and still can be added to the cart. Thanks for your help!

Hi @swazzie ,

If you have any questions, you can contact me directly.
Nice to meet you :blush:

Hi @namphan , do you know how to do it using Minimog Theme?

Hi @Jeanwel ,

Please send the website link, I will check it for you

@namphan I sent it to your email

I have sent you the details to your email @namphan

1 Like

hey im facing the same issue i use minimog theme www.attituderetail.com this is my website. i am using a preorder app to allow customers to order out of stock products but i want a strikethrough on the sold out variants despite “continue selling out of stock” being turned on by the preorder app

@namphan hope you can help me with this

hey did the issue get solved

Hi @user1668,

Can you describe it more?

I will check it.

1 Like

Basically i am using a preorder app that allows my product variants to continue selling out of stock and show the preorder button with the relevant information. I want these sold out variants to have a strike through to show the customer they are sold out but they can still buy it. Right now even the sold out variants dont have a strike through

Like this the size 24 is Sold out and the preorder app is showing a button to preorder it but i want the variants to show a strike through to show the customer its sold out

hey is there any update on this and i hope you understood from the replies above what issue i am facing

Hi @user1668,

I checked and the current code does not support this.

Can I send you a collaborator invitation? It will help me check more clearly.