115 lines
5.9 KiB
Plaintext
115 lines
5.9 KiB
Plaintext
{%- comment -%}
|
|
Renders a list of product's price (regular, sale)
|
|
|
|
Accepts:
|
|
- product: {Object} Product Liquid object (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)
|
|
|
|
Usage:
|
|
{% render 'price', product: product %}
|
|
{%- endcomment -%}
|
|
{%- liquid
|
|
if use_variant
|
|
assign target = product.selected_or_first_available_variant
|
|
else
|
|
assign target = product
|
|
endif
|
|
|
|
assign compare_at_price = target.compare_at_price
|
|
assign price = target.price | default: 1999
|
|
|
|
comment
|
|
[Yagi Automatic Discount Helper] start - overrride the price if there is auto discount applied from the app
|
|
endcomment
|
|
|
|
if use_variant
|
|
assign auto_discounted_price = target.metafields.app--168074346497.auto_discounted_price.value | default: target.price
|
|
else
|
|
assign auto_discounted_price = target.metafields.app--168074346497.min_auto_discounted_price.value | default: target.price
|
|
endif
|
|
|
|
if auto_discounted_price < price
|
|
assign price = auto_discounted_price
|
|
assign compare_at_price = target.price
|
|
endif
|
|
|
|
comment
|
|
[Yagi Automatic Discount Helper] end - overrride the price if there is auto discount applied from the app
|
|
endcomment
|
|
|
|
assign available = target.available | default: false
|
|
|
|
if settings.currency_format_enable
|
|
assign money_price = price | money_with_currency
|
|
else
|
|
assign money_price = price | money
|
|
endif
|
|
|
|
if target == product and product.price_varies
|
|
assign money_price = 'products.product.price.from_price_html' | t: price: money_price
|
|
endif
|
|
-%}
|
|
|
|
<div class="price
|
|
{%- if price_class %} {{ price_class }}{% endif -%}
|
|
{%- if available == false %} price--sold-out {% endif -%}
|
|
{%- if compare_at_price > price %} price--on-sale {% endif -%}
|
|
{%- if product.price_varies == false and product.compare_at_price_varies %} price--no-compare{% endif -%}">
|
|
<dl>
|
|
{%- 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
|
|
- div.price__availability: Displayed when the product is sold out
|
|
{%- endcomment -%}
|
|
<div class="price__regular">
|
|
{%- comment -%}
|
|
<dt>
|
|
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.price.regular_price' | t }}</span>
|
|
</dt>
|
|
{%- endcomment -%}
|
|
<dd class="price__last"><span class="price-item price-item--regular">{{ money_price }}</span></dd>
|
|
</div>
|
|
<div class="price__sale">
|
|
{%- comment -%}
|
|
<dt class="price__compare">
|
|
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.price.regular_price' | t }}</span>
|
|
</dt>
|
|
{%- endcomment -%}
|
|
<dd class="price__compare"><s class="price-item price-item--regular">{% if settings.currency_format_enable %}{{ compare_at_price | money_with_currency }}{% else %}{{ compare_at_price | money }}{% endif %}</s></dd>
|
|
{%- comment -%}
|
|
<dt>
|
|
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.price.sale_price' | t }}</span>
|
|
</dt>
|
|
{%- endcomment -%}
|
|
<dd class="price__last"><span class="price-item price-item--sale">{{ money_price }}</span></dd>
|
|
{%- if settings.show_saved_price and price != nil and price != blank and compare_at_price != nil and compare_at_price != blank -%}
|
|
{%- assign saved_price = compare_at_price | minus: price | money -%}
|
|
<div class="price__saved"><span class="price-item price-item--saved">{{'products.product.price.saved_price_html' | t: price: saved_price }}</span></div>
|
|
{%- endif -%}
|
|
{%- if hasCountdown == true or hasCountdown == 'true' -%}
|
|
<dd class="price__label_sale">
|
|
{%- liquid
|
|
assign list_compare = product.variants | where: 'compare_at_price'
|
|
assign compare = 0
|
|
for variant in list_compare
|
|
assign saving = variant.compare_at_price | minus: variant.price | times: 100.0 | divided_by: variant.compare_at_price | round
|
|
if saving > compare
|
|
assign compare = saving
|
|
endif
|
|
endfor
|
|
if compare < 1
|
|
assign compare = product.compare_at_price_min | minus: product.price_min | times: 100.0 | divided_by: product.compare_at_price_min | round
|
|
endif
|
|
-%}<span class="label_sale">-{{ compare | append: '%'}}</span></dd>
|
|
{%- endif -%}
|
|
</div>
|
|
<small class="unit-price caption{% if available == false or product.selected_or_first_available_variant.unit_price_measurement == nil %} hidden{% endif %}">
|
|
<dt class="visually-hidden">{{ 'products.product.price.unit_price' | t }}</dt>
|
|
<dd class="price__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></dd>
|
|
</small>
|
|
</dl>
|
|
</div> |