initial commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
.yagi-price-container{display: flex; gap: 0.5em; align-items: center;} .yagi-price-container .price__sale { display: flex; flex-direction: row-reverse !important; justify-content: flex-end; gap: 0.5em; align-items: center;} .yagi-discounted-price { color: rgb(253,36,36) !important; font-size: calc(var(--font-heading-scale) * 2.2rem); } .yagi-original-price { font-size: calc(var(--font-heading-scale) * 2.2rem); opacity: 0.8; } .yagi-sale-badge { margin-bottom: 0 !important;}
|
||||
@@ -0,0 +1,253 @@
|
||||
{% comment %}
|
||||
Renders a list of product's price (regular, sale)
|
||||
|
||||
Accepts:
|
||||
- product: {Object} Product Liquid object (optional)
|
||||
- is_product_card {Boolean} Only needed when uncommenting the 'from' price code below to display the cheapest available variant(optional)
|
||||
- use_variant: {Boolean} Renders selected or first variant price instead of overall product pricing (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)
|
||||
- sale_color: {Object} Theme color setting. 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 show_price = true
|
||||
if product.template_suffix contains 'enquire' and settings.card_show_enquiry_prices == false
|
||||
assign show_price = false
|
||||
elsif target.price == 0 and settings.card_show_zero_prices == false
|
||||
assign show_price = false
|
||||
endif
|
||||
-%}
|
||||
|
||||
{% if show_price %}
|
||||
{%- liquid
|
||||
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
|
||||
|
||||
comment
|
||||
start Yagi app code
|
||||
endcomment
|
||||
if use_variant
|
||||
assign price = target.metafields.app--168074346497.auto_discounted_price.value | default: target.price
|
||||
|
||||
if target.metafields.app--168074346497.discount_type.value != nil and target.metafields.app--168074346497.discount_type.value != "fixed" and product.metafields.app--168074346497.discount_percentage.value > 0.01
|
||||
assign deducted_percentage = 1.0 | minus: product.metafields.app--168074346497.discount_percentage.value
|
||||
|
||||
if target.metafields.app--168074346497.discount_percentage.value > 0.01
|
||||
assign deducted_percentage = 1.0 | minus: target.metafields.app--168074346497.discount_percentage.value
|
||||
endif
|
||||
|
||||
assign price = target.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
||||
assign price_min = price
|
||||
assign price_max = product.price_max | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
||||
|
||||
assign compare_at_price = target.price
|
||||
|
||||
if target.compare_at_price > compare_at_price
|
||||
assign compare_at_price = target.compare_at_price
|
||||
endif
|
||||
endif
|
||||
|
||||
if shop.metafields.app--168074346497.discount_percentage.value > 0.005
|
||||
assign discount_percentage = shop.metafields.app--168074346497.discount_percentage.value | times: 1.0
|
||||
assign deducted_percentage = 1.0 | minus: discount_percentage
|
||||
|
||||
assign price = target.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
||||
assign price_min = price
|
||||
assign price_max = product.price_max | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
||||
|
||||
assign compare_at_price = target.price
|
||||
|
||||
if target.compare_at_price > compare_at_price
|
||||
assign compare_at_price = target.compare_at_price
|
||||
endif
|
||||
endif
|
||||
|
||||
if price < target.price and compare_at_price == 0 or compare_at_price == blank
|
||||
assign compare_at_price = target.price
|
||||
endif
|
||||
else
|
||||
assign price = product.metafields.app--168074346497.min_auto_discounted_price.value | default: product.price
|
||||
|
||||
if product.metafields.app--168074346497.discount_percentage.value > 0.01
|
||||
assign deducted_percentage = 1.0 | minus: product.metafields.app--168074346497.discount_percentage.value
|
||||
|
||||
assign price = product.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
||||
assign price_min = price
|
||||
assign price_max = product.price_max | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
||||
|
||||
assign compare_at_price = product.price
|
||||
|
||||
if product.compare_at_price > compare_at_price
|
||||
assign compare_at_price = product.compare_at_price
|
||||
endif
|
||||
endif
|
||||
|
||||
if shop.metafields.app--168074346497.discount_percentage.value > 0.005
|
||||
assign discount_percentage = shop.metafields.app--168074346497.discount_percentage.value | times: 1.0
|
||||
assign deducted_percentage = 1.0 | minus: discount_percentage
|
||||
|
||||
assign price = product.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
||||
assign price_min = price
|
||||
assign price_max = product.price_max | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
||||
|
||||
assign compare_at_price = product.price
|
||||
|
||||
if product.compare_at_price > compare_at_price
|
||||
assign compare_at_price = product.compare_at_price
|
||||
endif
|
||||
endif
|
||||
|
||||
if price < product.price and compare_at_price == 0 or compare_at_price == blank
|
||||
assign compare_at_price = product.price
|
||||
endif
|
||||
endif
|
||||
|
||||
comment
|
||||
end Yagi app code
|
||||
endcomment
|
||||
|
||||
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 from_money = money_price
|
||||
|
||||
# Make the 'from' price be the cheapest AVAILABLE variant
|
||||
if is_product_card and settings.card_include_unavailable_variants_in_sale_price != true
|
||||
assign min_available_price = blank
|
||||
assign min_available_compare_at_price = blank
|
||||
|
||||
for v in product.variants
|
||||
if v.available
|
||||
if min_available_price == blank or v.price < min_available_price
|
||||
assign min_available_price = v.price
|
||||
assign min_available_compare_at_price = v.compare_at_price
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
|
||||
if min_available_price == blank
|
||||
assign min_available_price = product.price_min
|
||||
endif
|
||||
|
||||
if min_available_compare_at_price == blank
|
||||
assign min_available_compare_at_price = product.compare_at_price_min
|
||||
endif
|
||||
|
||||
assign from_money = min_available_price | money
|
||||
|
||||
if settings.currency_code_enabled
|
||||
assign from_money = min_available_price | money_with_currency
|
||||
endif
|
||||
|
||||
assign compare_at_price = min_available_compare_at_price
|
||||
endif
|
||||
|
||||
assign money_price = 'products.product.price.from_price_html' | t: price: from_money
|
||||
endif
|
||||
-%}
|
||||
|
||||
<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 -%}
|
||||
"
|
||||
{% unless sale_color == blank or sale_color.alpha == 0 %}
|
||||
style="--price-sale-color: {{ sale_color.red }},{{ sale_color.green }},{{ sale_color.blue }}"
|
||||
{% endunless %}
|
||||
>
|
||||
<div class="price__container" data-yagi-compare-at-price="{{ compare_at_price }}" data-yagi-price="{{ price }}">
|
||||
{%- 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? -%}
|
||||
<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>
|
||||
{%- 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 -%}
|
||||
{%- 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">
|
||||
<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>
|
||||
{%- 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 -%}
|
||||
</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>
|
||||
</div>
|
||||
{% endif %}
|
||||
Reference in New Issue
Block a user