👨💻
Example of Howdy Customer Tag Discount Theme setting
Here is the example of snippets/price.liquid in Dawn theme.
Make sure to save current backup before modifying your code.
Feel free to contact us for theme setup.
snippets/price.liquid
{% comment %}
Renders a list of product's price (regular, sale)
Accepts:
- product: {Object} Product Liquid object (optional)
- placeholder: {Boolean} Renders a placeholder price (optional)
- use_variant: {Boolean} Renders selected or first variant price instead of overall product pricing (optional)
- show_badges: {Boolean} Renders 'Sale' and 'Sold Out' tags if the product matches the condition (optional)
- price_class: {String} Adds a price class to the price element (optional)
- show_compare_at_price: {Boolean} Renders the compare at price if the product matches the condition (optional)
Usage:
{% render 'price', product: product %}
{% endcomment %}
{%- liquid
if use_variant
assign target = product.selected_or_first_available_variant
elsif placeholder
assign target = null
else
assign target = product
endif
assign compare_at_price = target.compare_at_price
assign price = target.price | default: 1999
assign price_min = product.price_min
assign price_max = product.price_max
assign available = target.available | default: false
assign money_price = price | money
assign money_price_min = price_min | money
assign money_price_max = price_max | money
if settings.currency_code_enabled
assign money_price = price | money_with_currency
assign money_price_min = price_min | money_with_currency
assign money_price_max = price_max | money_with_currency
endif
if target == product and product.price_varies
assign money_price = 'products.product.price.from_price_html' | t: price: money_price
endif
-%}
{% comment %} Howdy Customer Discount START {% endcomment %}
{% if customer %}
{% assign selectedCollectionMetafields = shop.metafields.howdy-collections-discount-settings.howdy-discount-settings.value %}
{% assign selectedCollectionIds = selectedCollectionMetafields.selectedCollectionIds %}
{% assign targetProduct = false %}
{% if selectedCollectionIds %}
{% comment %}
CheckselectedCollectionIds value
・selectedCollections exists & has no value → All products discount
・selectedCollections exists & has value → Certain produsts discount
{% endcomment %}
{% if selectedCollectionIds == blank %}
{% assign targetProduct = true %}
{% else %}
{% if product.collections %}
{% for collection in product.collections %}
{% assign collectionGid = "gid://shopify/Collection/" | append: collection.id %}
{% if selectedCollectionIds contains collectionGid %}
{% assign targetProduct = true %}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% else %}
{% comment %}
selectedCollections is not set yet → All products discount
{% endcomment %}
{% assign targetProduct = true %}
{% endif %}
{% if targetProduct == true %}
{% assign discountValues = shop.metafields.howdy-order-discount-settings.howdy-discount-settings.value %}
{% assign discountCustomer = false %}
{% assign discountPercentage = 0 %}
{% comment %} Discount Exists {% endcomment %}
{% if discountValues %}
{% comment %} Detect Discount Percentage {% endcomment %}
{% for discount in discountValues %}
{% if customer.tags contains discount.tagName %}
{% assign currentDiscountPercentageNumber = 0 | plus: 0 %}
{% assign newDiscountPercentageNumber = discount.discountPercent | plus: 0 %}
{% if newDiscountPercentageNumber > currentDiscountPercentageNumber %}
{% assign discountPercentage = newDiscountPercentageNumber %}
{% endif %}
{% endif %}
{% endfor %}
{% assign discountPercentage = 100 | minus: discountPercentage %}
{% assign discountPercentageTimes = discountPercentage | divided_by: 100.0 %}
{% comment %} Reassign Prices {% endcomment %}
{%- liquid
if use_variant
assign target = product.selected_or_first_available_variant
elsif placeholder
assign target = null
else
assign target = product
endif
assign compare_at_price = target.price
assign price = target.price | times: discountPercentageTimes
assign price_min = product.price_min | times: discountPercentageTimes
assign price_max = product.price_max | times: discountPercentageTimes
assign available = target.available | default: false
assign money_price = price | money
assign money_price_min = price_min | money
assign money_price_max = price_max | money
if settings.currency_code_enabled
assign money_price = price | money_with_currency
assign money_price_min = price_min | money_with_currency
assign money_price_max = price_max | money_with_currency
endif
if target == product and product.price_varies
assign money_price = 'products.product.price.from_price_html' | t: price: money_price
endif
-%}
{% endif %}
{% endif %}
{% endif %}
{% comment %} Howdy Customer Discount END {% endcomment %}
{%- unless target == null and placeholder == null -%}
<div
class="
price
{%- if price_class %} {{ price_class }}{% endif -%}
{%- if available == false %} price--sold-out{% endif -%}
{%- if compare_at_price > price and product.quantity_price_breaks_configured? != true %} price--on-sale{% endif -%}
{%- if compare_at_price > price and product.quantity_price_breaks_configured? %} volume-pricing--sale-badge{% endif -%}
{%- if product.price_varies == false and product.compare_at_price_varies %} price--no-compare{% endif -%}
{%- if show_badges %} price--show-badge{% endif -%}
"
>
<div class="price__container">
{%- comment -%}
Explanation of description list:
- div.price__regular: Displayed when there are no variants on sale
- div.price__sale: Displayed when a variant is a sale
{%- endcomment -%}
<div class="price__regular">
{%- if product.quantity_price_breaks_configured? -%}
{%- if show_compare_at_price and compare_at_price -%}
{%- unless product.price_varies == false and product.compare_at_price_varies %}
<span class="visually-hidden visually-hidden--inline">
{{- 'products.product.price.regular_price' | t -}}
</span>
<span>
<s class="price-item price-item--regular variant-item__old-price">
{% if settings.currency_code_enabled %}
{{ compare_at_price | money_with_currency }}
{% else %}
{{ compare_at_price | money }}
{% endif %}
</s>
</span>
{%- endunless -%}
{%- endif -%}
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.price.regular_price' | t }}</span>
<span class="price-item price-item--regular">
{{-
'products.product.volume_pricing.price_range'
| t: minimum: money_price_min, maximum: money_price_max
-}}
</span>
{%- else -%}
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.price.regular_price' | t }}</span>
<span class="price-item price-item--regular">
{{ money_price }}
</span>
{%- endif -%}
</div>
<div class="price__sale">
{%- unless product.price_varies == false and product.compare_at_price_varies %}
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.price.regular_price' | t }}</span>
<span>
<s class="price-item price-item--regular">
{% if settings.currency_code_enabled %}
{{ compare_at_price | money_with_currency }}
{% else %}
{{ compare_at_price | money }}
{% endif %}
</s>
</span>
{%- endunless -%}
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.price.sale_price' | t }}</span>
<span class="price-item price-item--sale price-item--last">
{{ money_price }}
</span>
</div>
<small class="unit-price caption{% if product.selected_or_first_available_variant.unit_price_measurement == nil %} hidden{% endif %}">
<span class="visually-hidden">{{ 'products.product.price.unit_price' | t }}</span>
<span class="price-item price-item--last">
<span>{{- product.selected_or_first_available_variant.unit_price | money -}}</span>
<span aria-hidden="true">/</span>
<span class="visually-hidden"> {{ 'accessibility.unit_price_separator' | t }} </span>
<span>
{%- if product.selected_or_first_available_variant.unit_price_measurement.reference_value != 1 -%}
{{- product.selected_or_first_available_variant.unit_price_measurement.reference_value -}}
{%- endif -%}
{{ product.selected_or_first_available_variant.unit_price_measurement.reference_unit }}
</span>
</span>
</small>
</div>
{%- if show_badges -%}
<span class="badge price__badge-sale color-{{ settings.sale_badge_color_scheme }}">
{{ 'products.product.on_sale' | t }}
</span>
<span class="badge price__badge-sold-out color-{{ settings.sold_out_badge_color_scheme }}">
{{ 'products.product.sold_out' | t }}
</span>
{%- endif -%}
</div>
{% endunless %}
Discussion