From a5a4c7befb6711c761969299e66e6cb3a45bea62 Mon Sep 17 00:00:00 2001 From: Axel Date: Thu, 25 Jun 2026 15:54:57 +0800 Subject: [PATCH] first commit --- custom_css.css | 1 + snippets/product-price.liquid | 123 ++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 custom_css.css create mode 100644 snippets/product-price.liquid diff --git a/custom_css.css b/custom_css.css new file mode 100644 index 0000000..c688fa8 --- /dev/null +++ b/custom_css.css @@ -0,0 +1 @@ +.yagi-price-container{display: flex; gap: 1.5em; align-items: center;} .yagi-price-container .price__sale { display: flex; flex-direction: row !important; justify-content: flex-end; gap: 0.75em; align-items: center;} .yagi-discounted-price { font-size: 1.25rem; font-weight: 600;} .yagi-original-price { font-size: 1.25rem; opacity: 0.4; font-weight: 600;} .yagi-sale-badge { font-size: 10px; padding: 0px 7px; font-weight: 700; color: rgb(255, 255, 255); background-color: rgb(255, 189, 89); border-radius: 3px; } \ No newline at end of file diff --git a/snippets/product-price.liquid b/snippets/product-price.liquid new file mode 100644 index 0000000..cb278ff --- /dev/null +++ b/snippets/product-price.liquid @@ -0,0 +1,123 @@ +{% 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) + - 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 + 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 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 == 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 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 == blank + assign compare_at_price = product.price + endif + endif + + comment + end Yagi app code + endcomment + + 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 + assign money_price = 'products.product.price.from_price_html' | t: price: money_price + endif + +-%} + + {%- unless product.price_varies == false and product.compare_at_price_varies %} + {% if compare_at_price != null and compare_at_price != 0 and price != compare_at_price %} + + + {% if settings.currency_code_enabled %} + {{ compare_at_price | money_with_currency }} + {% else %} + {{ compare_at_price | money }} + {% endif %} + + + {% endif %} + {%- endunless -%} + {{ money_price }} + + {{- product.selected_or_first_available_variant.unit_price | money -}} + / + + {%- 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 }} + + + {%- if show_badges -%} + + {%- if compare_at_price > price %} + + {{ 'products.product.on_sale' | t }} + + {% endif %} + {%- if available == false -%} + + {{ 'products.product.sold_out' | t }} + + {% endif %} + {%- if product.metafields.theme.preorder and product.available -%} + + {{ 'products.product.pre_order' | t }} + + {%- endif -%} + + {% endif %} +