From e78e564e3ae7ab868e6946edaf55e509f65e4f0d Mon Sep 17 00:00:00 2001 From: Axel Date: Wed, 26 Nov 2025 01:19:24 +0800 Subject: [PATCH] first commit --- snippets/product-prices.liquid | 206 +++++++++++++++++++++++++++++++++ style.css | 1 + 2 files changed, 207 insertions(+) create mode 100644 snippets/product-prices.liquid create mode 100644 style.css diff --git a/snippets/product-prices.liquid b/snippets/product-prices.liquid new file mode 100644 index 0000000..35a53e9 --- /dev/null +++ b/snippets/product-prices.liquid @@ -0,0 +1,206 @@ + +{%- liquid + assign selected_variant = product.selected_or_first_available_variant + if use_variant + assign target = selected_variant + 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 product_compare_at_price = product.compare_at_price + + 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 + assign product_compare_at_price = compare_at_price + + if target.compare_at_price > compare_at_price + assign compare_at_price = target.compare_at_price + assign product_compare_at_price = compare_at_price + endif + endif + + if price < target.price and compare_at_price == blank + assign compare_at_price = target.price + assign product_compare_at_price = compare_at_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 + assign product_compare_at_price = compare_at_price + + if product.compare_at_price > compare_at_price + assign compare_at_price = product.compare_at_price + assign product_compare_at_price = compare_at_price + endif + endif + + if price < product.price and compare_at_price == blank + assign compare_at_price = product.price + endif + endif + + + if is_product_card and settings.pcard_show_lowest_prices + assign price = price_min + assign compare_at_price = product_compare_at_price + endif + + assign available = target.available | default: false + assign money_price = price | money + + if settings.currency_code_enabled + assign money_price = price | money_with_currency + endif + + if target == product and product.price_varies and settings.pcard_show_lowest_prices + assign money_price = 'products.product.from_text_html' | t: price: money_price + endif +-%} + +
+ +
1 and price < product.price %}style="display:none;"{% endif %}> + {{ 'products.product.price.regular_price' | t }} + + {{ money_price }} + +
+ + +
1 and price < product.price %}style="display:flex; gap: 0.5em;"{% endif %}> + {{ 'products.product.price.sale_price' | t }} + + {{ money_price }} + + {%- unless product.price_varies == false and product.compare_at_price_varies %} + {{ 'products.product.price.regular_price' | t }} + + {% if settings.currency_code_enabled %} + {{ compare_at_price | money_with_currency }} + {% else %} + {{ compare_at_price | money }} + {% endif %} + + {%- endunless -%} +
+
+ {{ 'products.product.price.unit_price' | t }} +
+ {%- capture unit_price_separator -%} + + {%- endcapture -%} + {%- capture unit_price_base_unit -%} + + {%- if selected_variant.unit_price_measurement -%} + {%- if selected_variant.unit_price_measurement.reference_value != 1 -%} + {{- selected_variant.unit_price_measurement.reference_value -}} + {%- endif -%} + {{ selected_variant.unit_price_measurement.reference_unit }} + {%- endif -%} + + {%- endcapture -%} + {{ selected_variant.unit_price | money }}{{- unit_price_separator -}}{{- unit_price_base_unit -}} +
+
+ + {% if show_sale_badge or show_soldout_badge %} +
+ {% if show_sale_badge %} + {% liquid + assign save_amount = 0 + if compare_at_price > price + assign save_amount = compare_at_price | minus: price + endif + + assign discount = '' + if sale_badge_type == 'percentage' + assign discount = save_amount | times: 100.0 | divided_by: compare_at_price | round | append: '%' + elsif sale_badge_type == 'fixed_amount' + assign discount = + if settings.currency_code_enabled + assign discount = save_amount | money_with_currency + else + assign discount = save_amount | money + endif + endif + %} +
+ + {% unless sale_badge_type == 'text' %} + {% render 'new-locale', key: 'products.product.save_html', param: '{{ amount }}', value: discount %} + {% else %} + {% render 'new-locale', key: 'products.product.sale_text' %} + {% endunless %} + +
+ {% endif %} + {% if show_soldout_badge %} +
+ {{ 'products.product.sold_out' | t }} +
+ {% endif %} +
+ {% endif %} +
+ +{% if cart.discount_amount > 0 %} +

Automatic discount applied: {{ cart.discount_amount | money }}

+{% endif %} diff --git a/style.css b/style.css new file mode 100644 index 0000000..0beb67e --- /dev/null +++ b/style.css @@ -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.75em; align-items: center;} .yagi-discounted-price { font-size: 1.5rem; font-weight: 400; } .yagi-original-price { color: var(--product-sale-price-color); font-size: calc(var(--font-base-size,16) * 1px) } .yagi-sale-badge { background-color: var(--bg-cart-wishlist-count,#da3f3f); color: #fff; font-size: 11px; padding: 2px 10px; border-radius: 3px; } \ No newline at end of file