diff --git a/snippets/product-badges-alt-formid.liquid b/snippets/product-badges-alt-formid.liquid new file mode 100644 index 0000000..b99510d --- /dev/null +++ b/snippets/product-badges-alt-formid.liquid @@ -0,0 +1,127 @@ +{%- comment -%} +---------------------------------------------------------------------------------------------------------------------- +PRODUCT BADGES COMPONENT +---------------------------------------------------------------------------------------------------------------------- + +This component is used in product listing and product page to render the badges of a given product + +******************************************** +Supported variables +******************************************** + +* product: the product to render the badges +* variant: the specific variant to show the badge from +* vertical: if set to true, the badges are outputted vertically +* types: the types of badge to output. Can be "custom", "sold_out" or "discount" (or a combination separated by comma). If nothing is set, all badges are outputted. +* form_id: an optional form ID to use to update the badges when a given variant changes +{%- endcomment -%} + +{%- liquid + assign badge_types = types | default: 'custom, sold_out, discount' | split: ',' + assign variant = variant | default: product.selected_or_first_available_variant +-%} + +{%- assign is_badge_list_hidden = true -%} + +{%- capture badges -%} + {%- for badge_type in badge_types -%} + {%- assign stripped_badge_type = badge_type | strip -%} + + {%- case stripped_badge_type -%} + {%- when 'custom' -%} + {%- assign custom_badges = product.metafields.custom.badges.value | sort -%} + + {%- for custom_badge in custom_badges -%} + {%- assign is_badge_list_hidden = false -%} + {{ custom_badge }} + {%- endfor -%} + + {%- when 'sold_out' -%} + {%- if settings.show_sold_out_badge -%} + {%- if variant.available == false or form_id != blank -%} + {%- unless variant.available -%} + {%- assign is_badge_list_hidden = false -%} + {%- endunless -%} + + + {{- 'product.general.sold_out_badge' | t -}} + + {%- endif -%} + {%- endif -%} + + {%- when 'discount' -%} + {%- if settings.show_discount -%} + {%- assign is_variant_on_sale = false -%} + + {%- liquid + assign variant_price = variant.price + assign variant_compare_at_price = variant.compare_at_price + + assign product_price = product.price + assign product_compare_at_price = product.compare_at_price + + if variant.metafields.app--168074346497.auto_discounted_price.value + if variant.metafields.app--168074346497.auto_discounted_price.value < variant.price + assign variant_price = variant.metafields.app--168074346497.auto_discounted_price.value + + if product.metafields.app--168074346497.discount_percentage.value > 0.01 + assign deducted_percentage = 1.0 | minus: product.metafields.app--168074346497.discount_percentage.value + assign variant_price = variant.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil + endif + + assign variant_compare_at_price = variant.price + + if variant.compare_at_price > variant.price + assign variant_compare_at_price = variant.compare_at_price + endif + endif + endif + + if product.metafields.app--168074346497.min_auto_discounted_price.value + if product.metafields.app--168074346497.min_auto_discounted_price.value < product.price + assign product_price = product.metafields.app--168074346497.min_auto_discounted_price.value + + if product.metafields.app--168074346497.discount_percentage.value > 0.01 + assign deducted_percentage = 1.0 | minus: product.metafields.app--168074346497.discount_percentage.value + assign product_price = product.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil + endif + + assign product_compare_at_price = product.price + + if product.compare_at_price > product.price + assign product_compare_at_price = product.compare_at_price + endif + endif + endif + -%} + + {%- if variant_compare_at_price > variant_price -%} + {%- assign is_variant_on_sale = true -%} + {%- assign is_badge_list_hidden = false -%} + {%- endif -%} + + {%- if product_compare_at_price > product_price -%} + {%- if settings.discount_mode == 'percentage' -%} + {%- assign savings = variant_compare_at_price | minus: variant_price | times: 100.0 | divided_by: variant_compare_at_price | round | append: '%' -%} + {%- else -%} + {%- capture savings -%}{{ variant_compare_at_price | minus: variant_price | money }}{%- endcapture -%} + {%- endif -%} + + + {%- if form_id == blank and is_variant_on_sale == false or product.compare_at_price_varies -%} + {{- 'product.general.on_sale_badge' | t -}} + {%- else -%} + {{- 'product.general.discount_badge_html' | t: savings: savings -}} + {%- endif -%} + + {%- endif -%} + {%- endif -%} + {%- endcase -%} + {%- endfor -%} +{%- endcapture -%} + +{%- if badges != blank -%} + + {{- badges -}} + +{%- endif -%} \ No newline at end of file