commit f6e5b8f885fc97f7014db029a3a7119ded9cad7a Author: Axel Date: Fri Jan 16 05:00:30 2026 +0800 first commit diff --git a/snippets/price.liquid b/snippets/price.liquid new file mode 100644 index 0000000..57633d1 --- /dev/null +++ b/snippets/price.liquid @@ -0,0 +1,114 @@ +{% comment %} + Parameters: + - product {Object} - Product object. + - show_currency_code {Boolean} - Use 'money_with_currency' instead of 'money'. + - show_labels {Boolean} - Show Sale/Sold Out labels (optional, default is false). + - for_variant_picker {Boolean} - Uses variant price and markup for display of all variant states (optional, default is false). + - current_variant {Object} - Current variant, if for_variant_picker is true. + + Usage: + {% render 'price', product: product %} +{% endcomment %} + +{%- liquid + assign variant = current_variant | default: product.variants | sort: 'price' | first + + if for_variant_picker + if current_variant == false + assign available = true + endif + else + assign for_variant_picker = false + assign available = variant.available | default: false + endif + + assign compare_at_price = variant.compare_at_price + assign price = variant.price | default: 1999 + + comment + start yagi code + endcomment + assign target = 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 + + comment + end yagi code + endcomment +-%} + +
+
+ {%- if product.price_varies -%} + {%- if for_variant_picker == false -%} + {{ 'products.product.from' | t }} + {%- elsif for_variant_picker and current_variant == false -%} + {{ 'products.product.from' | t }} + {%- endif -%} + {%- endif %} + + {%- if show_currency_code -%} + {{ price | money_with_currency }} + {%- else -%} + {{ price | money }} + {%- endif -%} + + {% if for_variant_picker or compare_at_price > price -%} + + {%- if compare_at_price > price -%} + {{- compare_at_price | money -}} + {%- endif -%} + + {%- endif -%} +
+ + {% if show_labels %} + {% if settings.prod_sold_out_show and product.available == false %} + {{ 'products.product.sold_out' | t }} + {% elsif settings.prod_pre_order_label_show and product.template_suffix contains 'preorder' %} + {{ 'products.product.preorder' | t }} + {% elsif settings.prod_sale_show and variant.compare_at_price > variant.price %} + {{ 'products.product.sale' | t }} + {% endif %} + {% endif %} + + {% if for_variant_picker or variant.unit_price_measurement %} +
+ {{ 'products.product.price.unit_price' | t }} + {{ variant.unit_price | money }} + {{ 'products.product.price.unit_price_separator' | t }} + + {%- if variant.unit_price_measurement.reference_value != 1 -%} + {{- variant.unit_price_measurement.reference_value -}} + {%- endif -%} + {{ variant.unit_price_measurement.reference_unit }} + +
+ {% endif %} + + {% if for_variant_picker %} + + {% endif %} +
diff --git a/snippets/product-label-detail.liquid b/snippets/product-label-detail.liquid new file mode 100644 index 0000000..2aee65d --- /dev/null +++ b/snippets/product-label-detail.liquid @@ -0,0 +1,107 @@ +{%- capture all_variants_label_html -%} + {%- if product.metafields.theme.label != blank -%} + + {{ product.metafields.theme.label | escape }} + + {%- endif -%} + + {%- liquid + if settings.prod_new_show + if settings.prod_new_method == 'date' + assign now_s = 'now' | date: '%s' | plus: 0 + assign pub_s = product.created_at | date: '%s' | plus: 0 + assign diff_days = now_s | minus: pub_s | divided_by: 86400 + + if diff_days < settings.prod_new_limit_int + assign new_label_text = 'products.product.new' | t + endif + elsif settings.prod_new_method == 'tag' + if product.tags contains 'New' or product.tags contains 'new' + assign new_label_text = 'products.product.new' | t + endif + else + for collection in product.collections + assign split_collection_handle = collection.handle | split: '-' + if split_collection_handle contains 'new' + assign new_label_text = 'products.product.new' | t + break + endif + endfor + endif + endif + -%} + {%- if new_label_text -%} + + {{ new_label_text }} + + {%- endif -%} +{%- endcapture -%} + + + {%- for variant in product.variants -%} + + + {%- if current_variant and variant.id == current_variant.id and label_html -%} +
+ {{- label_html -}} +
+ {%- endif -%} + {%- endfor -%} + + {%- if current_variant == false and all_variants_label_html != blank -%} + +
+ {{- all_variants_label_html -}} +
+ {%- endif -%} +
diff --git a/snippets/product-label.liquid b/snippets/product-label.liquid new file mode 100644 index 0000000..9faf71c --- /dev/null +++ b/snippets/product-label.liquid @@ -0,0 +1,98 @@ +{%- capture label_html -%} + {%- assign label_count = 0 -%} + {%- if product.metafields.theme.label != blank -%} + {%- assign label_count = label_count | plus: 1 -%} + + {{ product.metafields.theme.label | escape }} + + {%- endif -%} + + {%- liquid + if settings.prod_new_show + if settings.prod_new_method == 'date' + assign now_s = 'now' | date: '%s' | plus: 0 + assign pub_s = product.created_at | date: '%s' | plus: 0 + assign diff_days = now_s | minus: pub_s | divided_by: 86400 + + if diff_days < settings.prod_new_limit_int + assign new_label_text = 'products.product.new' | t + endif + elsif settings.prod_new_method == 'tag' + if product.tags contains 'New' or product.tags contains 'new' + assign new_label_text = 'products.product.new' | t + endif + else + for collection in product.collections + assign split_collection_handle = collection.handle | split: '-' + if split_collection_handle contains 'new' + assign new_label_text = 'products.product.new' | t + break + endif + endfor + endif + endif + -%} + {%- if new_label_text -%} + {%- assign label_count = label_count | plus: 1 -%} + + {{ new_label_text }} + + {%- endif -%} + + {%- liquid + assign cheapest_variant_price = cheapest_variant.price + assign cheapest_variant_compare_at_price = cheapest_variant.compare_at_price + + if cheapest_variant.metafields.app--168074346497.discount_type.value != nil and cheapest_variant.metafields.app--168074346497.discount_type.value != "fixed" + assign deducted_percentage = 1.0 | minus: product.metafields.app--168074346497.discount_percentage.value + + if cheapest_variant.metafields.app--168074346497.discount_percentage.value > 0.01 + assign deducted_percentage = 1.0 | minus: cheapest_variant.metafields.app--168074346497.discount_percentage.value + endif + + assign cheapest_variant_price = cheapest_variant.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil + + assign cheapest_variant_compare_at_price = cheapest_variant.price + + if cheapest_variant.compare_at_price > cheapest_variant_compare_at_price + assign cheapest_variant_compare_at_price = cheapest_variant.compare_at_price + endif + endif + + if label_count < 2 and settings.prod_reduction_show and cheapest_variant_compare_at_price > cheapest_variant_price + if settings.prod_reduction_type == 'percent' + assign amount = 1.0 | times: cheapest_variant_price | divided_by: cheapest_variant_compare_at_price + assign amount = 1.0 | minus: amount + assign amount = amount | times: 100.0 | round + assign sale_label_text = 'products.product.percent_reduction' | t: amount: amount + else + assign amount = cheapest_variant_compare_at_price | minus: cheapest_variant_price | money + assign sale_label_text = 'products.product.value_reduction_html' | t: amount: amount + endif + assign label_count = label_count | plus: 1 + endif + -%} + {%- if sale_label_text -%} + + {{ sale_label_text }} + + {%- endif -%} + + {%- if label_count < 2 and settings.prod_stock_warn_show and settings.prod_stock_warn_limit_int == 0 and product.variants.size == 1 and product.variants.first.inventory_management != blank and product.variants.first.inventory_quantity > 0 -%} + {%- assign label_count = label_count | plus: 1 -%} + + {{ 'products.inventory.only_x_left' | t: quantity: product.variants.first.inventory_quantity }} + + {%- elsif label_count < 2 and settings.prod_stock_warn_show and product.variants.size == 1 and product.variants.first.inventory_management != blank and product.variants.first.inventory_quantity > 0 and product.variants.first.inventory_quantity <= settings.prod_stock_warn_limit_int -%} + {%- assign label_count = label_count | plus: 1 -%} + + {{ 'products.inventory.only_x_left' | t: quantity: product.variants.first.inventory_quantity }} + + {%- endif -%} +{%- endcapture -%} + +{%- if label_html != blank -%} +
+ {{- label_html -}} +
+{%- endif -%}