Files
Pursuit/sections/product-template.liquid
T
2026-04-21 21:49:01 +08:00

1952 lines
69 KiB
Plaintext

{% assign show_form_popup = false %}
{%- assign enable_image_zoom = section.settings.enable_image_zoom -%}
{%- assign initial_media_index = 0 -%}
{%- assign current_variant = product.selected_or_first_available_variant -%}
{%- assign price = current_variant.price -%}
{%- assign available = current_variant.available -%}
{%- for media in product.media -%}
{%- if product.selected_variant and media.id == product.selected_variant.featured_media.id -%}
{%- assign initial_media_index = forloop.index0 -%}
{% endif %}
{% endfor %}
{% assign show_preOrderButton = false %}
{% if current_variant.inventory_policy == 'continue' and current_variant.inventory_management == 'shopify' and settings.show_preOrder_btn and current_variant.inventory_quantity <= 0 %}
{% assign show_preOrderButton = true %}
{% endif %}
{% assign hide_price0_box_and_button = false %}
{% if settings.hide_price0_box_and_button and product.price_max == 0 %}
{% assign hide_price0_box_and_button = true %}
{% endif %}
{% assign product_description_in_static_tab = false %}
{% assign show_static_tabs = false %}
{% for block in section.blocks %}
{% if block.type contains 'static_tab' %}
{% assign show_static_tabs = true %}
{% if block.settings.product_tab_use_product_description %}
{% assign product_description_in_static_tab = true %}
{% break %}
{% endif %}
{% endif %}
{% endfor %}
{%- capture flickity_options -%}
{
"prevNextButtons": true,
"pageDots": false,
"adaptiveHeight": true,
"cellAlign": "left",
"contain": true,
"pauseAutoPlayOnHover": true,
"dragThreshold": 8,
"initialIndex": {{ initial_media_index }},
"arrowShape": {"x0": 20, "x1": 60, "y1": 40, "x2": 60, "y2": 35, "x3": 25}
}
{%- endcapture -%}
{%- capture thumb_flickity_options -%}
{
"prevNextButtons": false,
"pageDots": false,
"pauseAutoPlayOnHover": true,
"contain": true,
"cellAlign": "left",
"dragThreshold": 8,
"initialIndex": {{ initial_media_index }},
"arrowShape": {"x0": 20, "x1": 60, "y1": 40, "x2": 60, "y2": 35, "x3": 25}
}
{%- endcapture -%}
{% assign cart_icon_style = settings.header_cart_icon_style %}
{% assign show_breadcrumbs = section.settings.show_breadcrumbs %}
{% if template.suffix == 'quick-view' %}
{% assign show_breadcrumbs = false %}
{% endif %}
{% assign show_inventory_quantity = false %}
{% assign low_inventory_threshold = 0 %}
{% assign show_product_desc_full_width = false %}
{% assign enable_alts = false %}
{% for media in product.media %}
{%- assign media_alt = media.alt -%}
{%- if media.alt contains '#' -%}
{%- assign is_media_group = true -%}
{%- assign alt_parts = media.alt | split: '#' -%}
{%- assign media_group_parts = alt_parts.last | split: '_' -%}
{%- assign downcase_group_option = media_group_parts.first | strip | downcase -%}
{%- assign downcase_group_value = media_group_parts.last | strip | downcase -%}
{%- for option in product.options -%}
{%- assign downcase_option = option | downcase -%}
{%- if downcase_option == downcase_group_option -%}
{% assign enable_alts = true %}
{% break %}
{% endif %}
{% endfor %}
{%- endif -%}
{% endfor %}
<div class="page-width-small" id="ProductSection-{{ section.id }}"
data-section-id="{{ section.id }}"
data-product-handle="{{ product.handle }}"
data-section-type="product"
data-enable-history-state="{% if template.suffix == 'quick-view' %}false{% else %}true{% endif %}"
data-show_preOrder_btn="{{settings.show_preOrder_btn}}"
data-show_pick_an_option="{% if product.variants.size > 1 and product.selected_variant == blank %}{{ section.settings.show_pick_an_option }}{% else %}false{% endif %}"
data-enable-alts="{{ enable_alts }}">
{% if show_breadcrumbs %}
{% render 'breadcrumbs' product:product %}
{% endif %}
{% comment %}
Get first variant, or deep linked one
{% endcomment %}
{%- assign product_thumb_size = '110x110' -%}
{%- assign product_image_zoom_size = '1024x1024' -%}
{%- assign product_image_scale = '2' -%}
{% assign thumbnails_type = section.settings.thumbnails_type %}
{% assign thumbnails_size = section.settings.thumbnails_size %}
{% assign show_thumbnails = true %}
{% if thumbnails_type == 'none' %}
{% assign show_thumbnails = false %}
{% endif %}
{% assign enable_thumbnail_slides = false %}
{% if thumbnails_type == 'carousel' %}
{% assign enable_thumbnail_slides = true %}
{% endif %}
{% case section.settings.media_size %}
{% when 'small' %}
{%- assign product_media_width = 'medium-up--one-third' -%}
{%- assign product_description_width = 'medium-up--two-thirds' -%}
{%- assign height = 345 -%}
{% when 'medium' %}
{%- assign product_media_width = 'medium-up--one-half' -%}
{%- assign product_description_width = 'medium-up--one-half' -%}
{%- assign height = 530 -%}
{% when 'large' %}
{%- assign product_media_width = 'medium-up--two-thirds' -%}
{%- assign product_description_width = 'medium-up--one-third' -%}
{%- assign height = 720 -%}
{% when 'full' %}
{%- assign product_media_width = '' -%}
{%- assign product_description_width = '' -%}
{%- assign height = 1090 -%}
{% endcase %}
{% assign enabled_mobile_sticky_btns = section.settings.enabled_mobile_sticky_btns %}
{% if template.suffix == 'quick-view' %}
{% assign enabled_mobile_sticky_btns = false %}
{% endif %}
<div class="grid product-single{% if section.settings.enable_payment_button %} product-single--{{ section.settings.media_size }}-media{% endif %}">
<div class="grid__item product-single__media-group {{ product_media_width }} {% if section.settings.enable_sticky_gallery_on_desktop %} product-single__media-group--sticky {% endif %} {% if section.settings.media_size == 'full' %} product-single__media-group--full{% endif %}" data-product-single-media-group>
<div class='product-single__media__carousel {% if enable_image_zoom %} product_image__zoom {% endif %}' data-product-main-slider data-flickity-config='{{ flickity_options }}' >
{%- assign featured_media = product.selected_or_first_available_variant.featured_media | default: product.featured_media -%}
{%- for media in product.media -%}
<div class='product-single__media__slide' data-media-id="{{ media.id }}" data-media-index="{{ forloop.index0 }}">
{% render 'media', media: media, featured_media: featured_media, height: height, image_scale: product_image_scale, forloop_first:forloop.first %}
</div>
{%- endfor -%}
</div>
{% assign first_3d_model = product.media | where: "media_type", "model" | first %}
{%- if first_3d_model -%}
<button
aria-label="{{ 'products.product.view_in_space_label' | t }}"
class="product-single__view-in-space"
data-shopify-xr
data-shopify-model3d-id="{{ first_3d_model.id }}"
data-shopify-title="{{ product.title | escape }}"
data-shopify-xr-hidden
>
{% render 'icon-3d-badge-full-color' %}<span class='product-single__view-in-space-text'>{{ 'products.product.view_in_space' | t }}</span>
</button>
{%- endif -%}
{% if show_thumbnails %}
{% render 'thumbnails-gallery' enable_thumbnail_slides:enable_thumbnail_slides,thumb_flickity_options:thumb_flickity_options %}
{% endif %}
</div>
<div class="grid__item {{ product_description_width }}">
<div class="product-single__meta {% if enabled_mobile_sticky_btns %} {% endif %}">
{% capture "form_classes" -%}
product-form product-form-{{ section.id }}
{%- if section.settings.enable_payment_button and product.has_only_default_variant%} product-form--payment-button-no-variants{% endif %}
{%- if current_variant.available == false %} product-form--variant-sold-out {%- endif -%}
{%- endcapture %}
{% form 'product', product, class:form_classes, data-product-form: '' %}
{% assign show_default_variant_input = true %}
{% for block in section.blocks %}
{% case block.type %}
{% when 'complementary' %}
{% assign enable_quick_add = block.settings.enable_quick_add %}
<div class='complementary-products'
data-url="{{ routes.product_recommendations_url }}?section_id={{ section.id }}&product_id={{ product.id }}&limit={{ block.settings.product_list_limit }}&intent=complementary">
{% if block.settings.block_heading != blank %}
<h5 class='complementary-products-heading h5'>{{ block.settings.block_heading }}</h5>
{% endif %}
{% assign products_per_page = block.settings.products_per_page | times: 1 %}
{% assign recommendations_products_size = recommendations.products | size %}
{%- capture flickity_options -%}
{
"prevNextButtons": false,
"wrapAround": true,
"dragThreshold": 15,
"cellAlign": "left",
"autoPlay": false,
"pageDots": false
}
{%- endcapture -%}
<div class='complementary-products-slider_custom_arrows slider_custom_arrows'>
<a href="javascript:void(0)" id='complementary_button_prev_{{section.id}}' class='button-prev btn btn--circle-arrow' aria-label="Previous" aria-describedby="button previous">
{% render 'icon' with 'tail-left' %}
</a>
<a href="javascript:void(0)" id='complementary_button_next_{{section.id}}' class='button-next btn btn--circle-arrow' aria-label="Next" aria-describedby="button next">
{% render 'icon' with 'tail-right' %}
</a>
</div>
<div class='complementary-products-slider {% if settings.align_height %} use_align_height {% else %} use_image_height {% endif %}' data-flickity-config='{{ flickity_options }}'>
{%- if recommendations.performed and recommendations.products_count > 0 -%}
{%- assign max_height = 250 -%}
<div class=" complementary_grid">
<div class='complementary_products_slide'>
{%- for prod in recommendations.products limit: block.settings.product_list_limit offset: continue -%}
{% assign modulo_index = forloop.index | modulo:products_per_page %}
{% render 'product-card-item', enable_quick_add: enable_quick_add, block:block,isComplementary_product: true,list: true, max_height: max_height, product: prod, show_vendor: false,products_per_row: 1 %}
{% if modulo_index == 0 and recommendations_products_size != forloop.index %}
</div>
<div class='complementary_products_slide'>
{% endif %}
{% endfor %}
</div>
</div>
{% endif %}
</div>
</div>
{% when "@app" %}
{% render block %}
{% when 'product_price' %}
<div class="product__price">
{% render 'product-price', variant: current_variant, product: product %}
</div>
{%- if cart.taxes_included or shop.shipping_policy.body != blank -%}
<div class="product__policies rte" data-product-policies>
{%- if cart.taxes_included -%}
{{ 'products.product.include_taxes' | t }}
{%- endif -%}
{%- if shop.shipping_policy.body != blank -%}
{{ 'products.product.shipping_policy_html' | t: link: shop.shipping_policy.url }}
{%- endif -%}
</div>
{%- endif -%}
<div class='shopify-payment-terms'>
{{ form | payment_terms }}
</div>
{% when 'liquid_code' %}
{% if block.settings.liquid != blank %}
<div class="product-liquid-code">{{ block.settings.liquid }}</div>
{% endif %}
{% when 'local_pickup' %}
{%- comment -%}
Live region for announcing updated price and availability to screen readers
{%- endcomment -%}
<p class="visually-hidden" data-product-status
aria-live="polite"
role="status"
></p>
{%- comment -%}
Live region for announcing that the product form has been submitted and the
product is in the process being added to the cart
{%- endcomment -%}
<p class="visually-hidden" data-loader-status
aria-live="assertive"
role="alert"
aria-hidden="true"
>{{ 'products.product.loader_label' | t }}</p>
<div
class="product-single__store-availability-container"
data-store-availability-container
data-product-title="{{ product.title | escape }}"
data-has-only-default-variant="{{ product.has_only_default_variant }}"
data-base-url="{{ shop.url }}{{ routes.root_url }}"
>
</div>
{% when 'product_title' %}
<h1 class=" product-single__title h3">
{% if template.suffix == 'quick-view' %}
<a href="{{ product.url}}"> {{ product.title }} </a>
{% else %}
{{ product.title }}
{% endif %}
</h1>
{%- when 'rating' -%}
{%- if product.metafields.reviews.rating.value != blank -%}
{% liquid
assign rating_decimal = 0
assign decimal = product.metafields.reviews.rating.value.rating | modulo: 1
if decimal >= 0.3 and decimal <= 0.7
assign rating_decimal = 0.5
elsif decimal > 0.7
assign rating_decimal = 1
endif
%}
<div class="rating" role="img" aria-label="{{ 'general.accessibility.star_reviews_info' | t: rating_value: product.metafields.reviews.rating.value, rating_max: product.metafields.reviews.rating.value.scale_max }}">
<span aria-hidden="true" class="rating-star color-icon-text" style="--rating: {{ product.metafields.reviews.rating.value.rating | floor }}; --rating-max: {{ product.metafields.reviews.rating.value.scale_max }}; --rating-decimal: {{ rating_decimal }};"></span>
</div>
<p class="rating-text caption">
<span aria-hidden="true">{{ product.metafields.reviews.rating.value }} / {{ product.metafields.reviews.rating.value.scale_max }}</span>
</p>
<p class="rating-count caption">
<span aria-hidden="true">({{ product.metafields.reviews.rating_count }})</span>
<span class="visually-hidden">{{ product.metafields.reviews.rating_count }} {{ "general.accessibility.total_reviews" | t }}</span>
</p>
{%- endif -%}
{% when 'product_description' %}
{% if block.settings.desc_display == 'default' %}
<div class="rte product-single__description main-product-description-{{ section.id }}" >
{{ product.description }}
</div>
{% else %}
{% assign show_product_desc_full_width = true %}
{% endif %}
{% when 'product_buttons' %}
{%- if product.gift_card? and block.settings.show_gift_card_recipient -%}
<div class="form_bg_row">
<div class="gift-card-recipient">
<div class="gift-card-recipient__checkbox">
<input id="send_gift_card_to_recipient" type="checkbox" name="properties[__shopify_send_gift_card_to_recipient]">
<label for="send_gift_card_to_recipient">{{'gift_cards.recipient.checkbox' | t }}</label>
</div>
<div class="gift-card-recipient__fields">
<div class="form-vertical">
<input class="gift-card-recipient-field gift-card-recipient-field-email" type="email" name="properties[Recipient email]" placeholder="{{ 'gift_cards.recipient.email_label' | t }}">
<input class="gift-card-recipient-field" type="text" name="properties[Recipient name]" placeholder="{{ 'gift_cards.recipient.name_label' | t }}">
<textarea class="gift-card-recipient-field" rows="3" maxlength="200" name="properties[Message]" placeholder="{{ 'gift_cards.recipient.message_label' | t }}"></textarea>
</div>
</div>
</div>
</div>
{%- endif -%}
<div class="product-form__controls-group
{% if enabled_mobile_sticky_btns %} product-form-sticky-parent {% endif %}
product-form__controls-group--submit {% if hide_price0_box_and_button %} hide {% endif %}">
<div class="product-form__item product-form__item--submit
{%- if block.settings.enable_payment_button %} product-form__item--payment-button {%- endif -%}
"
>
{% if request.page_type != 'password' %}
<button type="submit" name="add"
{% unless current_variant.available %} aria-disabled="true"{% endunless %}
aria-label="{% unless current_variant.available %}{{ 'products.product.sold_out' | t }}{% else %}{% if show_preOrderButton %}{{ 'products.product.pre_order' | t }}{% else %}{{ 'products.product.add_to_cart' | t }}{% endif %}{% endunless %}"
class="btn product-form__cart-submit btn--primary"
data-add-to-cart>
<span data-add-to-cart-text>
{% unless current_variant.available %}
{{ 'products.product.sold_out' | t }}
{% else %}
{% if show_preOrderButton %}
{{ 'products.product.pre_order' | t }}
{% else %}
{{ 'products.product.add_to_cart' | t }}
{% endif %}
{% endunless %}
</span>
{%- render 'icon', icon: cart_icon_style -%}
<span class="hide" data-loader>
{% render 'icon-spinner' %}
</span>
</button>
{% endif %}
{% if block.settings.enable_payment_button %}
{{ form | payment_button }}
{% endif %}
</div>
<div class='pre_order_text {% unless show_preOrderButton %} hide {% endunless %}'>
{{ 'products.product.pre_order_text' | t }}
</div>
</div>
<div class="product-form__error-message-wrapper product-form__error-message-wrapper--hidden{% if section.settings.enable_payment_button %} product-form__error-message-wrapper--has-payment-button{% endif %}" data-error-message-wrapper role="alert">
<span class="visually-hidden">{{ 'general.accessibility.error' | t }} </span>
{% render 'icon-error' %}
<span class="product-form__error-message" data-error-message>{{ 'products.product.quantity_minimum_message' | t }}</span>
</div>
<p class="visually-hidden" data-loader-status
aria-live="assertive"
role="alert"
aria-hidden="true"
>{{ 'products.product.loader_label' | t }}</p>
{% when 'product_vendor'%}
<div class="price__vendor">
<span class="visually-hidden">{{ 'products.product.vendor' | t }}</span>
{{product.vendor | link_to_vendor}}
</div>
{% when 'show_share_buttons' %}
{% render 'social-sharing', share_title: product.title, share_permalink: product.url, share_image: product %}
{% when 'inventory_qty' %}
{% assign show_inventory_quantity = true %}
{% assign low_inventory_threshold = block.settings.low_inventory_threshold %}
<div class='inventory_qty_info' data-block-type="inventory-qty">
<div class="product-form__info-content {% if section.settings.show_pick_an_option and product.selected_variant == blank and product.variants.size > 1%} hide {% endif %}">
{%- if current_variant.available -%}
{%- if current_variant.inventory_management and current_variant.inventory_policy == 'deny' and block.settings.low_inventory_threshold > 0 -%}
{%- if current_variant.inventory_quantity <= block.settings.low_inventory_threshold -%}
{% assign text = 'products.product.low_stock_with_quantity_count' | t: count: current_variant.inventory_quantity %}
{% assign icon = 'exclamation' %}
{% assign type = 'warning' %}
{%- else -%}
{% assign text = 'products.product.in_stock_with_quantity_count' | t: count: current_variant.inventory_quantity %}
{% assign icon = 'check' %}
{% assign type = 'success' %}
{%- endif -%}
{%- else -%}
{% assign text = 'products.product.in_stock' | t %}
{% assign icon = 'check' %}
{% assign type = 'success' %}
{%- endif -%}
{%- else -%}
{% assign text = 'products.product.out_of_stock' | t %}
{% assign icon = 'x' %}
{% assign type = 'danger' %}
{%- endif -%}
<div class="product-form__inventory">
<div class="product-form__inventory-icon">
<div class="product-form__inventory-icon-base">
<load-icon name="box"></load-icon>
</div>
<div class="product-form__inventory-icon-status text-{{ type }}">
<load-icon name="{{icon}}"></load-icon>
</div>
</div>
<div class="product-form__inventory-text h6">{{ text }}</div>
</div>
</div>
</div>
{% when 'form_popup' %}
{% assign show_form_popup = true %}
{% assign link_alignment = block.settings.link_alignment %}
{% assign link_color = block.settings.link_color %}
{% assign underline_link_title = block.settings.underline_link_title %}
<div class='form_popup_link_wrapper text-{{ link_alignment }}'>
{% if block.settings.link_title != blank %}
<a href="#form_popup__{{ block.id }}" class="form_popup_link form_popup_link__{{ block.id }}">
{% if block.settings.icon != blank %}
<load-icon name="{{block.settings.icon}}"></load-icon>
{% endif %}
<span class="{% if underline_link_title %}link_underline{% endif %}">{{ block.settings.link_title }}</span>
</a>
{% endif %}
{% if link_color != blank %}
<style>
.form_popup_link__{{ block.id }}:not(:hover) span {
color: {{ link_color }};
}
</style>
{% endif %}
</div>
{% when 'quantity_block' %}
<div class='form_bg_row quantity_block'>
<div class='product_quantity_info_container'>
<div class='qty_container'>
<label class='header' for="Quantity-{{ block.id }}">{{ 'products.product.quantity' | t }}:</label>
<div class="qty product-page-qty">
<a href='javascript:void(0);' class="minus_btn qty_btn" ></a>
<input type="text" id="Quantity-{{ block.id }}"
name="quantity" value="1" min="1" pattern="[0-9]*"
class="product-form__input product-form__input--quantity"
data-quantity-input>
<a href='javascript:void(0);' class="plus_btn qty_btn" ></a>
</div>
</div>
</div>
</div>
{% when 'product_variations' %}
{%- liquid
assign contains_product = false
for product_variation in block.settings.products
if product_variation == product
assign contains_product = true
endif
endfor
-%}
{%- if contains_product -%}
{%- assign metafield_parts = block.settings.option_value_metafield | split: '.' -%}
{%- assign metafield_namespace = metafield_parts | first -%}
{%- assign metafield_key = metafield_parts | last -%}
{% if block.settings.color_selector_type == 'dropdown' %}
<div class="product-form__controls-group product_options_block_wrapper product_options_block_wrapper--product-variations">
<div class="selector-wrapper js product-form__item">
{% if block.settings.option_name != blank %}
<label class="header" for="SingleOptionSelector-{{ section.id }}-product-variations">
{{ block.settings.option_name | escape }}
</label>
{% endif %}
<select class="single-option-selector product-form__input" id="SingleOptionSelector-{{ section.id }}-product-variations">
{% for product_variation in block.settings.products %}
{% assign value = product_variation.metafields[metafield_namespace][metafield_key].value %}
<option value="{{ product_variation.url }}"{% if product_variation == product %}selected="selected"{% endif %}>{{ value }}</option>
{% endfor %}
</select>
</div>
</div>
{% else %}
<div class="product_swatches-variations">
<div class="clearfix form_bg_row">
<div class="swatch">
{% if block.settings.option_name != blank %}
<style>
.swatch-option\:{{ block.settings.option_name | escape }} {
display: none;
}
</style>
<div class="header">{{ block.settings.option_name | escape }}:</div>
{% endif %}
<div class="swatch_elements_wrapper">
{% for product_variation in block.settings.products %}
{% assign value = product_variation.metafields[metafield_namespace][metafield_key].value %}
{% if product_variation == product %}
{% assign selected = true %}
{% else %}
{% assign selected = false %}
{% endif %}
{% if block.settings.color_selector_type == 'block' %}
<a href="{{ product_variation.url }}" class="swatch-element swatch_{{ value | handle }}">
<label {% if selected %}class="is-selected"{% endif %}>{{ value }}</label>
</a>
{% elsif block.settings.color_selector_type == 'color' %}
<a href="{{ product_variation.url }}" class="swatch-element color swatch_{{ value | handle }}">
<label class="{% if selected %}is-selected{% endif %} swatch-size--{{ block.settings.color_selector_size }}" title="{{value}}" style="{% render 'color_swatch_customization', default_value: value, filter_value:value %}">
<span class='swatch_check_icon'>{% render 'icon' with 'check' %}</span>
</label>
{% if block.settings.show_tooltip and value != blank %}
<div class="tooltip">{{ value }}</div>
{% endif %}
</a>
{% elsif block.settings.color_selector_type == 'variant' %}
<a href="{{ product_variation.url }}" class="swatch-element color swatch_{{ value | handle }}">
<label class="{% if selected %}is-selected{% endif %} swatch-size--{{ block.settings.color_selector_size }}" title="{{value}}" style="background-color:#fff; background-image: url({{ product_variation.featured_media | img_url:"100x" }});">
<span class='swatch_check_icon'>{% render 'icon' with 'check' %}</span>
</label>
{% if block.settings.show_tooltip and value != blank %}
<div class="tooltip">{{ value }}</div>
{% endif %}
</a>
{% endif %}
{% endfor %}
</div>
</div>
</div>
</div>
{% endif %}
{%- endif -%}
{% when 'product_options_block' %}
<div class="" data-block-type="product-options-block">
{% assign show_default_variant_input = false %}
{% unless product.has_only_default_variant %}
<div class="product-form__controls-group product_options_block_wrapper">
{% for option in product.options_with_values %}
<div class="selector-wrapper js product-form__item">
<label class="header" for="SingleOptionSelector-{{ section.id }}-{{ forloop.index0 }}">
{{ option.name }}
</label>
<select class="single-option-selector single-option-selector-{{ section.id }} product-form__input single_option_{{option.name | downcase}}_selector-{{ section.id }}"
id="SingleOptionSelector-{{ section.id }}-{{ forloop.index0 }}"
data-option-name='{{ option.name | downcase }}'
data-index="option{{ forloop.index }}">
{% for value in option.values %}
<option value="{{ value.id }}" data-option-value="{{ value | escape }}" {% if option.selected_value == value %} selected="selected"{% endif %}>
{{ value }}
{% unless value.available %}
{% if value.variant %} - {{ 'products.product.sold_out' | t }}{% else %} - {{ 'products.product.unavailable' | t }}{% endif %}
{% endunless %}
</option>
{% endfor %}
</select>
</div>
{% endfor %}
</div>
{% if block.settings.show_product_swatches %}
{% unless product.has_only_default_variant %}
{% if template.suffix != 'quick-view' %}
{% assign use_variant_image_for_swatches = block.settings.use_variant_image_for_swatches %}
{% else %}
{% assign use_variant_image_for_swatches = settings.use_variant_image_for_grid_swatches %}
{% endif %}
<div class='product_swatches'>
{% for option in product.options_with_values %}
{% render 'swatch' swatch:option, forloop_index: forloop.index, use_variant_image_for_swatches:use_variant_image_for_swatches %}
{% endfor %}
</div>
{% endunless %}
{% endif %}
{% endunless %}
</div>
<input name="id" id="ProductSelect-{{ section.id }}" class="product-form__variants no-js" type="hidden"
value="{{ current_variant.id }}"
data-inventory_management="{{current_variant.inventory_management}}"
data-inventory_policy="{{current_variant.inventory_policy}}"
data-inventory_quantity="{{current_variant.inventory_quantity}}"
/>
{% when 'sku_block' %}
<p class='product_sku product-sku' {% if current_variant.sku == blank %} style="display:none;" {% else %}{% if section.settings.show_pick_an_option and product.selected_variant == blank and product.variants.size > 1%} style="display:none;" {% endif %}{% endif %}>{{ 'products.product.sku' | t }} <span class='variant-sku'> {{ current_variant.sku }}</span></p>
{% when 'image_with_text_blocks' %}
{% assign image_with_text_blocks_color = block.settings.icon_color %}
<div class='image_with_text_blocks'>
{% for i in (1..3) %}
{% capture link_handle %}link_{{i}}{% endcapture %}
{% capture text_handle %}text_{{i}}{% endcapture %}
{% capture image_handle %}image_{{i}}{% endcapture %}
{% capture show_block_handle %}show_block_{{i}}{% endcapture %}
{% capture icon_handle %}icon_{{i}}{% endcapture %}
{% assign link = block.settings[link_handle] %}
{% assign text = block.settings[text_handle] %}
{% assign image = block.settings[image_handle] %}
{% assign icon_name = block.settings[icon_handle] %}
{% assign show_block = block.settings[show_block_handle] %}
{% if i == 1 %}
{% assign show_block = true %}
{% endif %}
{% if show_block %}
<div class='block'>
{% if link != blank %}
<a href='{{link}}'>
{% endif %}
<div class='block_content'>
{% if image != blank %}
<img src='{{ image | img_url:"200x"}}'
srcset="{{ image | img_url: '200x' }} 1x, {{ image | img_url: '200x', scale: 2 }} 2x"
loading="lazy"
width="{{image.width}}"
height="{{image.height}}"
alt='{{image.alt | default: text }}'
style="object-position:{{ image.presentation.focal_point }};">
{% else %}
<load-icon name="{{ icon_name }}"></load-icon>
{% endif %}
{% if text != blank %}
<p>{{text}}</p>
{% endif %}
</div>
{% if link != blank %}
</a>
{% endif %}
</div>
{% endif %}
{% endfor %}
</div>
{% when 'back_in_stock' %}
<div class='back_in_stock_row {% if current_variant.available %} hide {% elsif section.settings.show_pick_an_option and product.selected_variant == blank and product.variants.size > 1%} hide {% endif %}' data-id="{{ 'ContactForm_' | append: product.id }}">
<div class='back_in_stock_response'></div>
<label for="back_in_stock_custom_formInput-{{ product.id }}" ><span class='h5'>{{ 'products.product.notify_me_heading' | t }}</span></label>
<div class='back_in_stock_custom_form'>
<input type="email"
id="back_in_stock_custom_formInput-{{ product.id }}"
class="Form__Input input-group__field"
value="{{ form.email }}"
placeholder="{{ 'products.product.email_placeholder' | t }}"
autocorrect="off"
autocapitalize="off"
name="contact[email]"
form="{{ 'ContactForm_' | append: product.id }}"
>
<span class="input-group__btn-wrapper">
<button type="submit" form="{{ 'ContactForm_' | append: product.id }}" class="btn btn--primary back_in_stock_btn" >
{% render 'icon' with 'check' %}
</button>
</span>
</div>
</div>
{% else %}
{% if block.type contains 'collapsible_tab' %}
{% assign type = block.type | replace: 'collapsible_tab_', '' %}
{%- case type -%}
{%- when 'text' -%}
<div class='product_description_accrordion {{type}}'>
<div class='product_accordion__block'>
<span class="product_accordion__heading h5">
{{ block.settings.heading }}
</span>
<div class='product_accordion__content'>
<div class="rte">
{{ block.settings.content }}
</div>
</div>
</div>
</div>
{%- when 'page' -%}
<div class='product_description_accrordion {{type}}'>
<div class='product_accordion__block'>
<span class="product_accordion__heading h5">
{{ block.settings.heading | default: block.settings.page.title }}
</span>
<div class='product_accordion__content'>
<div class="rte">
{{ block.settings.page.content }}
</div>
</div>
</div>
</div>
{%- when 'desc' -%}
{% if product_description_in_static_tab == false %}
{% assign expanded_by_default = block.settings.expanded_by_default %}
<div class='product_description_accrordion {{ type}} '>
<div class='product_accordion__block'>
<span class="product_accordion__heading h5 {% if expanded_by_default %} active {% endif %}">
{{ block.settings.heading }}
</span>
<div class='product_accordion__content {% if expanded_by_default %} active {% endif %}'>
<div class="rte">
{{ product.description }}
</div>
</div>
</div>
</div>
{% endif %}
{%- when 'liquid' -%}
<div class='product_description_accrordion {{ type }}'>
<div class='product_accordion__block'>
<span class="product_accordion__heading h5">
{{ block.settings.heading }}
</span>
<div class='product_accordion__content'>
<div class="rte">
{{ block.settings.content }}
</div>
</div>
</div>
</div>
{% endcase %}
{% endif %}
{% endcase %}
{% endfor %}
{% if show_default_variant_input %}
<input type="hidden" name="id" value="{{ current_variant.id }}" />
{% endif %}
{% endform %}
</div>
</div>
</div>
{% if show_product_desc_full_width %}
{% for block in section.blocks %}
{% if block.type == 'product_description' %}
<div class="rte product-single__description main-product-description-{{ section.id }} full_product-single__description" >
{{ product.description }}
</div>
{% break %}
{% endif %}
{% endfor %}
{% endif %}
{% if template.suffix != 'quick-view' %}
{% if show_static_tabs %}
{% assign static_tab_title_index = 1 %}
{% assign static_tab_text_index = 1 %}
<div class="tabing small--hide">
<ul class="nav nav-tabs">
{% for block in section.blocks %}
{% if block.type contains 'static_tab' %}
<li {% if static_tab_title_index == 1 %}class="active"{% endif %}>
<a href="#tab{{static_tab_title_index}}" data-toggle="tab">
{% assign type = block.type | replace: 'static_tab_', '' %}
{% if type == 'page' %}
{{ block.settings.tab_title | escape | default: block.settings.page.title }}
{% else %}
{{ block.settings.tab_title | escape }}
{% endif %}
</a>
</li>
{% assign static_tab_title_index = static_tab_title_index | plus: 1 %}
{% endif %}
{% endfor %}
</ul>
<!-- Tab panes -->
<div class="tab-content">
{% for block in section.blocks %}
{% if block.type contains 'static_tab' %}
{% assign type = block.type | replace: 'static_tab_', '' %}
{%- case type -%}
{%- when 'text' -%}
<div class="tab-pane {% if static_tab_text_index == 1 %} active {% endif %}" id="tab{{ static_tab_text_index }}">
<div class="rte">
{% if block.settings.product_tab_content != '' %}
{{ block.settings.product_tab_content }}
{% else %}
<p>{{ 'products.general.tab_no_page' | t }}</p>
{% endif %}
</div>
</div>
{%- when 'page' -%}
<div class="tab-pane {% if static_tab_text_index == 1 %} active {% endif %}" id="tab{{ static_tab_text_index }}">
<div class="rte">
{% if block.settings.page.content != '' %}
{{ block.settings.page.content }}
{% else %}
<p>{{ 'products.general.tab_no_page' | t }}</p>
{% endif %}
</div>
</div>
{%- when 'desc' -%}
<div class="tab-pane {% if static_tab_text_index == 1 %} active {% endif %}" id="tab{{ static_tab_text_index }}">
<div class="rte">
{{ product.description }}
</div>
</div>
{%- when 'liquid' -%}
<div class="tab-pane {% if static_tab_text_index == 1 %} active {% endif %}" id="tab{{ static_tab_text_index }}">
<div class="rte">
{{ block.settings.content }}
</div>
</div>
{% endcase %}
{% assign static_tab_text_index = static_tab_text_index | plus: 1 %}
{% endif %}
{% endfor %}
</div>
</div>
<div class='product_description_accrordion medium-up--hide'>
{% for block in section.blocks %}
{% if block.type contains 'static_tab' %}
{% assign type = block.type | replace: 'static_tab_', '' %}
<div class='product_accordion__block'>
<span class="product_accordion__heading h5">
{% if type == 'page' %}
{{ block.settings.tab_title | escape | default: block.settings.page.title }}
{% else %}
{{ block.settings.tab_title | escape }}
{% endif %}
</span>
<div class='product_accordion__content'>
{%- case type -%}
{%- when 'text' -%}
<div class="rte">
{% if block.settings.product_tab_content != '' %}
{{ block.settings.product_tab_content }}
{% else %}
<p>{{ 'products.general.tab_no_page' | t }}</p>
{% endif %}
</div>
{%- when 'page' -%}
<div class="rte">
{% if block.settings.page.content != '' %}
{{ block.settings.page.content }}
{% else %}
<p>{{ 'products.general.tab_no_page' | t }}</p>
{% endif %}
</div>
{%- when 'desc' -%}
<div class="rte">
{{ product.description }}
</div>
{%- when 'liquid' -%}
<div class="rte">
{{ block.settings.content }}
</div>
{% endcase %}
</div>
</div>
{% endif %}
{% endfor %}
</div>
{% endif %}
{% endif %}
{% if enable_alts %}
<div class='hide'>
<div class='all_media__block'>
{%- for media in product.media -%}
{% if media.media_type == 'image' %}
<div class='product-single__media__slide'>
{% render 'media', media: media, featured_media: featured_media, height: height, image_scale: product_image_scale %}
</div>
{% endif %}
{%- endfor -%}
</div>
{% if show_thumbnails %}
<div class='all_thumb_media__block'>
{% for media in product.media %}
{% if media.media_type == 'image' %}
{% render 'thumb_media' media: media %}
{% endif %}
{% endfor %}
</div>
{% endif %}
</div>
{% endif %}
</div>
{% unless product == empty %}
<script type="application/json" data-variant-json>
{{ product.selected_or_first_available_variant | json }}
</script>
<script type="application/json" id="ModelJson-{{ section.id }}">
{{ product.media | where: 'media_type', 'model' | json }}
</script>
{% endunless %}
<style>
#ProductSection-{{ section.id }} .product-single__thumbnails-block {
width: calc(100% / {{thumbnails_size}});
}
</style>
<div class='hidden_contactForm'>
{%- assign formId = 'ContactForm_' | append: product.id -%}
{% form 'contact', id: formId %}
<div class='form-status'>
{% assign success_message = 'products.product.notify_me_success_message' %}
{% render 'form-status', form: form, form_id: formId, success_message: success_message %}
</div>
<input type="hidden" id="contant_form_current_variant_title" name="contact[variant-title]" value="{{ current_variant.title }}" />
<input type="hidden" id="contant_form_current_variant_sku" name="contact[variant-sku]" value="{{ current_variant.sku }}" />
{% comment %}
<input class='contact-form_email'
type="email"
name="contact[email]"
value="{% if customer %}{{ customer.email }}{% endif %}"
>
<input type="submit" class="btn" value="{{ 'contact.form.submit' | t }}">
{% endcomment %}
{% endform %}
</div>
{% if show_form_popup %}
{% for block in section.blocks %}
{% if block.type == 'form_popup' %}
{% assign image = block.settings.image %}
{% assign page_handle = block.settings.page %}
{% assign content = block.settings.content %}
<div class='form_popup modal' id="form_popup__{{ block.id }}" aria-hidden="true">
<div class="modal__dialog modal__dialog--stretch" role="dialog">
<button class="modal__close close_form_popup"
title="{{ 'general.accessibility.close_modal' | t | escape }}">
{%- render 'icon', icon: 'close' -%}
</button>
<div class="modal__inner ">
<div class='page-width-small'>
{% if image != blank and content == 'image' %}
<div class='modal__inner_media_wrapper'>
<img src='{{ image | img_url:"300x"}}'
srcset="{{ image | img_url: '1000x' }} 1x, {{ image | img_url: '1000x', scale: 2 }} 2x, {{ image | img_url: '1000x', scale: 3 }} 3x"
loading="lazy"
width="{{image.width}}"
height="{{image.height}}"
alt='{{image.alt | default: text }}'
style="object-position:{{ image.presentation.focal_point }};">
</div>
{% endif %}
{% if page_handle != blank and content == 'page' %}
{% assign modal_page = pages[page_handle] %}
{% if modal_page.content != blank %}
<div class="modal__inner_page_content rte">
{{ modal_page.content }}
</div>
{% endif %}
{% endif %}
</div>
</div>
</div>
</div>
{% endif %}
{% endfor %}
{% endif %}
{{ 'component-rating.css' | asset_url | stylesheet_tag }}
{% if enable_image_zoom %}
<link rel="stylesheet" href="{{ 'photoswipe.css' | asset_url }}" type="text/css">
<link rel="stylesheet" href="{{ 'default-skin.css' | asset_url }}" type="text/css">
{% endif %}
<script>
// Override default values of shop.strings for each template.
// Alternate product templates can change values of
// add to cart button, sold out, and unavailable states here.
theme.productStrings = {
preOrder: {{ 'products.product.pre_order' | t | json }},
addToCart: {{ 'products.product.add_to_cart' | t | json }},
soldOut: {{ 'products.product.sold_out' | t | json }},
unavailable: {{ 'products.product.unavailable' | t | json }}
}
</script>
{% assign current_variant = product.selected_or_first_available_variant %}
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"name": {{ product.title | json }},
"url": {{ shop.url | append: product.url | json }},
{%- if product.featured_media -%}
{%- assign media_size = product.featured_media.preview_image.width | append: 'x' -%}
"image": [
{{ product.featured_media | img_url: media_size | prepend: "https:" | json }}
],
{%- endif -%}
"description": {{ product.description | strip_html | json }},
{%- if current_variant.sku != blank -%}
"sku": {{ current_variant.sku | json }},
{%- endif -%}
"brand": {
"@type": "Brand",
"name": {{ product.vendor | json }}
},
"offers": [
{%- for variant in product.variants -%}
{
"@type" : "Offer",
{%- if variant.sku != blank -%}
"sku": {{ variant.sku | json }},
{%- endif -%}
"availability" : "http://schema.org/{% if variant.available %}InStock{% else %}OutOfStock{% endif %}",
"price" : {{ variant.price | divided_by: 100.00 | json }},
"priceCurrency" : {{ cart.currency.iso_code | json }},
"url" : {{ shop.url | append: variant.url | json }}
}{% unless forloop.last %},{% endunless %}
{%- endfor -%}
]
}
</script>
<style>
#ProductSection-{{ section.id }} .image_with_text_blocks .block svg {
color: {{ image_with_text_blocks_color }};
}
</style>
<script type="module" src="{{ 'dynamic-icon.js' | asset_url }}"></script>
{% schema %}
{
"name": "t:sections.product-template.name",
"tag": "section",
"class": "section-product-template",
"settings": [
{
"type":"checkbox",
"id":"show_breadcrumbs",
"label":"t:sections.product-template.settings.show_breadcrumbs.label",
"default": true
},
{
"type":"checkbox",
"id":"show_pick_an_option",
"label":"t:sections.product-template.settings.show_pick_an_option.label",
"info":"t:sections.product-template.settings.show_pick_an_option.info",
"default": false
},
{
"type":"checkbox",
"id":"enabled_mobile_sticky_btns",
"label":"t:sections.product-template.settings.enabled_mobile_sticky_btns.label",
"default": true
},
{
"type": "header",
"content": "t:sections.product-template.settings.header__2.content",
"info": "t:sections.product-template.settings.header__2.info"
},
{
"type": "select",
"id": "media_size",
"label": "t:sections.product-template.settings.media_size.label",
"options": [
{
"value": "small",
"label": "t:sections.product-template.settings.media_size.options__1.label"
},
{
"value": "medium",
"label": "t:sections.product-template.settings.media_size.options__2.label"
},
{
"value": "large",
"label": "t:sections.product-template.settings.media_size.options__3.label"
},
{
"value": "full",
"label": "t:sections.product-template.settings.media_size.options__4.label"
}
],
"default": "medium"
},
{
"type": "checkbox",
"id": "enable_image_zoom",
"label": "t:sections.product-template.settings.enable_image_zoom.label",
"default": true
},
{
"type": "checkbox",
"id": "enable_video_looping",
"label": "t:sections.product-template.settings.enable_video_looping.label",
"default": true
},
{
"type": "checkbox",
"id": "enable_sticky_gallery_on_desktop",
"label": "t:sections.product-template.settings.enable_sticky_gallery_on_desktop.label"
},
{
"type": "select",
"id": "thumbnails_type",
"label": "t:sections.product-template.settings.thumbnails_type.label",
"options": [
{
"value": "grid",
"label": "t:sections.product-template.settings.thumbnails_type.options__1.label"
},
{
"value": "carousel",
"label": "t:sections.product-template.settings.thumbnails_type.options__2.label"
},
{
"value": "none",
"label": "t:sections.product-template.settings.thumbnails_type.options__3.label"
}
],
"default":"grid"
},
{
"type": "range",
"id": "thumbnails_size",
"min": 1,
"max": 6,
"step": 1,
"label": "t:sections.product-template.settings.thumbnails_size.label",
"default": 4
}
],
"blocks": [
{
"type": "@app"
},
{
"type":"liquid_code",
"name":"t:sections.custom-liquid.name",
"settings": [
{
"id": "liquid",
"type": "liquid",
"label": "t:sections.custom-liquid.settings.custom_liquid.label"
}
]
},
{
"type":"collapsible_tab_desc",
"name":"t:sections.product-template.blocks.collapsible_tab_desc.name",
"settings": [
{
"id": "heading",
"type": "text",
"label": "t:sections.product-template.blocks.collapsible_tab.settings.heading.label",
"default": "Accordion (description)"
},
{
"id": "expanded_by_default",
"type": "checkbox",
"label": "t:sections.product-template.blocks.collapsible_tab_desc.settings.expanded_by_default.label"
}
]
},
{
"type":"collapsible_tab_page",
"name":"t:sections.product-template.blocks.collapsible_tab_page.name",
"settings": [
{
"id": "heading",
"type": "text",
"info": "t:sections.product-template.blocks.collapsible_tab.settings.heading.info",
"label": "t:sections.product-template.blocks.collapsible_tab.settings.heading.label",
"default": "Accordion (page)"
},
{
"id": "page",
"type": "page",
"label": "t:sections.product-template.blocks.collapsible_tab.settings.page.label"
}
]
},
{
"type":"collapsible_tab_liquid",
"name":"t:sections.product-template.blocks.collapsible_tab_reviews.name",
"settings": [
{
"id": "heading",
"type": "text",
"info": "t:sections.product-template.blocks.collapsible_tab.settings.heading.info",
"label": "t:sections.product-template.blocks.collapsible_tab.settings.heading.label",
"default": "Accordion (liquid)"
},
{
"id": "content",
"type": "liquid",
"label": "t:sections.custom-liquid.settings.custom_liquid.label"
}
]
},
{
"type":"collapsible_tab_text",
"name":"t:sections.product-template.blocks.collapsible_tab_text.name",
"settings": [
{
"id": "heading",
"type": "text",
"info": "t:sections.product-template.blocks.collapsible_tab.settings.heading.info",
"label": "t:sections.product-template.blocks.collapsible_tab.settings.heading.label",
"default": "Accordion (text)"
},
{
"id": "content",
"type": "richtext",
"label": "t:sections.product-template.blocks.collapsible_tab.settings.content.label"
}
]
},
{
"type":"back_in_stock",
"name":"t:sections.product-template.blocks.back_in_stock.name",
"settings": []
},
{
"type":"product_buttons",
"name":"t:sections.product-template.blocks.product_buttons.name",
"settings": [
{
"type": "checkbox",
"id": "enable_payment_button",
"label": "t:sections.product-template.blocks.product_buttons.settings.enable_payment_button.label",
"info": "t:sections.product-template.blocks.product_buttons.settings.enable_payment_button.info",
"default": true
},
{
"type": "checkbox",
"id": "show_gift_card_recipient",
"label": "t:sections.product-template.blocks.product_buttons.settings.show_gift_card_recipient.label",
"info": "t:sections.product-template.blocks.product_buttons.settings.show_gift_card_recipient.info",
"default": true
}
]
},
{
"type": "complementary",
"name": "t:sections.product-template.blocks.complementary_products.name",
"limit": 1,
"settings": [
{
"type": "paragraph",
"content": "t:sections.product-template.blocks.complementary_products.settings.paragraph.content"
},
{
"type": "text",
"id": "block_heading",
"default": "Pairs well with",
"label": "t:sections.product-template.blocks.complementary_products.settings.heading.label"
},
{
"type": "range",
"id": "product_list_limit",
"min": 1,
"max": 10,
"step": 1,
"default": 10,
"label": "t:sections.product-template.blocks.complementary_products.settings.product_list_limit.label"
},
{
"type": "range",
"id": "products_per_page",
"min": 1,
"max": 4,
"step": 1,
"default": 3,
"label": "t:sections.product-template.blocks.complementary_products.settings.products_per_page.label"
},
{
"type": "header",
"content": "t:sections.product-template.blocks.complementary_products.settings.product_card.heading"
},
{
"type": "checkbox",
"id": "enable_quick_add",
"label": "t:sections.product-template.blocks.complementary_products.settings.enable_quick_add.label",
"default": false
}
]
},
{
"type":"local_pickup",
"name":"t:sections.product-template.blocks.local_pickup.name",
"settings": []
},
{
"type": "rating",
"name": "t:sections.product-template.blocks.rating.name",
"limit": 1,
"settings": [
{
"type": "paragraph",
"content": "t:sections.product-template.blocks.rating.settings.paragraph.content"
}
]
},
{
"type":"form_popup",
"name":"t:sections.product-template.blocks.form_popup.name",
"settings": [
{
"type":"text",
"id":"link_title",
"label": "t:sections.product-template.blocks.form_popup.settings.link_title.label",
"default": "Popup link"
},
{
"type":"checkbox",
"id":"underline_link_title",
"label": "t:sections.product-template.blocks.form_popup.settings.underline_link_title.label",
"default":true
},
{
"type":"text",
"id":"icon",
"label": "t:sections.product-template.blocks.form_popup.settings.icon.label",
"info": "t:sections.product-template.blocks.form_popup.settings.icon.info"
},
{
"type":"color",
"id":"link_color",
"label": "t:sections.product-template.blocks.form_popup.settings.link_color.label",
"default":"#000"
},
{
"type":"select",
"id":"link_alignment",
"label": "t:sections.product-template.blocks.form_popup.settings.link_alignment.label",
"options": [
{
"value": "left",
"label": "t:sections.product-template.blocks.form_popup.settings.link_alignment.options__1.label"
},
{
"value": "center",
"label": "t:sections.product-template.blocks.form_popup.settings.link_alignment.options__2.label"
},
{
"value": "right",
"label": "t:sections.product-template.blocks.form_popup.settings.link_alignment.options__3.label"
}
],
"default":"left"
},
{
"type":"select",
"id":"content",
"label": "t:sections.product-template.blocks.form_popup.settings.content.label",
"options": [
{
"value": "image",
"label": "t:sections.product-template.blocks.form_popup.settings.content.options__1.label"
},
{
"value": "page",
"label": "t:sections.product-template.blocks.form_popup.settings.content.options__2.label"
}
],
"default":"image"
},
{
"type":"image_picker",
"id":"image",
"label": "t:sections.product-template.blocks.form_popup.settings.image.label"
},
{
"type":"page",
"id":"page",
"label": "t:sections.product-template.blocks.form_popup.settings.page.label"
}
]
},
{
"type":"product_price",
"name":"t:sections.product-template.blocks.product_price.name",
"settings": []
},
{
"type":"product_title",
"name":"t:sections.product-template.blocks.product_title.name",
"settings": []
},
{
"type":"product_description",
"name":"t:sections.product-template.blocks.product_description.name",
"settings": [
{
"type": "select",
"id": "desc_display",
"label": "t:sections.product-template.blocks.product_description.settings.desc_display.label",
"options": [
{
"value": "default",
"label": "t:sections.product-template.blocks.product_description.settings.desc_display.options_1.label"
},
{
"value": "full_width",
"label": "t:sections.product-template.blocks.product_description.settings.desc_display.options_2.label"
}
],
"default": "default"
}
]
},
{
"type":"product_vendor",
"name":"t:sections.product-template.blocks.product_vendor.name",
"settings": []
},
{
"type":"quantity_block",
"name":"t:sections.product-template.blocks.quantity_block.name",
"settings": [
]
},
{
"type":"sku_block",
"name":"t:sections.product-template.blocks.sku_block.name",
"settings": []
},
{
"type":"show_share_buttons",
"name":"t:sections.product-template.blocks.show_share_buttons.name",
"settings": []
},
{
"type":"static_tab_desc",
"name":"t:sections.product-template.blocks.static_tab_desc.name",
"settings": [
{
"id": "tab_title",
"type": "text",
"label": "t:sections.product-template.blocks.static_tab.settings.tab_title.label",
"default": "Decsription"
}
]
},
{
"type":"static_tab_page",
"name":"t:sections.product-template.blocks.static_tab_page.name",
"settings": [
{
"id": "tab_title",
"type": "text",
"label": "t:sections.product-template.blocks.static_tab.settings.tab_title.label",
"default": "Title"
},
{
"id": "page",
"type": "page",
"label": "t:sections.product-template.blocks.static_tab.settings.page.label"
}
]
},
{
"type":"static_tab_liquid",
"name":"t:sections.product-template.blocks.static_tab_reviews.name",
"settings": [
{
"id": "tab_title",
"type": "text",
"label": "t:sections.product-template.blocks.static_tab.settings.tab_title.label",
"default": "Liquid"
},
{
"id": "content",
"type": "liquid",
"label": "t:sections.custom-liquid.settings.custom_liquid.label"
}
]
},
{
"type":"static_tab_text",
"name":"t:sections.product-template.blocks.static_tab_text.name",
"settings": [
{
"id": "tab_title",
"type": "text",
"label": "t:sections.product-template.blocks.static_tab.settings.tab_title.label",
"default": "Title"
},
{
"id": "product_tab_content",
"type": "richtext",
"label": "t:sections.product-template.blocks.static_tab.settings.product_tab_content.label"
}
]
},
{
"type":"inventory_qty",
"name":"t:sections.product-template.blocks.inventory_qty.name",
"settings": [
{
"type": "range",
"id": "low_inventory_threshold",
"label": "t:sections.product-template.blocks.inventory_qty.settings.low_inventory_threshold.label",
"info": "t:sections.product-template.blocks.inventory_qty.settings.low_inventory_threshold.info",
"min": 0,
"max": 100,
"step": 1,
"default": 0
}
]
},
{
"type":"image_with_text_blocks",
"name":"t:sections.product-template.blocks.image_with_text_blocks.name",
"limit": 1,
"settings": [
{
"type":"color",
"id":"icon_color",
"label": "t:sections.product-template.blocks.image_with_text_blocks.settings.icon_color.label",
"default":"#000"
},
{
"type": "header",
"content": "t:sections.product-template.blocks.image_with_text_blocks.content_1"
},
{
"type": "text",
"id": "icon_1",
"label": "t:sections.product-template.blocks.image_with_text_blocks.settings.icon.label",
"info": "t:sections.product-template.blocks.image_with_text_blocks.settings.icon.info",
"default": "star"
},
{
"type":"image_picker",
"id":"image_1",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.image.label_1"
},
{
"type":"text",
"id":"text_1",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.text.label_1"
},
{
"type":"url",
"id":"link_1",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.link.label_1"
},
{
"type": "header",
"content": "t:sections.product-template.blocks.image_with_text_blocks.content_2"
},
{
"type":"checkbox",
"id":"show_block_2",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.show_block.label"
},
{
"type": "text",
"id": "icon_2",
"label": "t:sections.product-template.blocks.image_with_text_blocks.settings.icon.label",
"info": "t:sections.product-template.blocks.image_with_text_blocks.settings.icon.info",
"default": "star"
},
{
"type":"image_picker",
"id":"image_2",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.image.label_2"
},
{
"type":"text",
"id":"text_2",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.text.label_2"
},
{
"type":"url",
"id":"link_2",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.link.label_2"
},
{
"type": "header",
"content": "t:sections.product-template.blocks.image_with_text_blocks.content_3"
},
{
"type":"checkbox",
"id":"show_block_3",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.show_block.label"
},
{
"type": "text",
"id": "icon_3",
"label": "t:sections.product-template.blocks.image_with_text_blocks.settings.icon.label",
"info": "t:sections.product-template.blocks.image_with_text_blocks.settings.icon.info",
"default": "star"
},
{
"type":"image_picker",
"id":"image_3",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.image.label_3"
},
{
"type":"text",
"id":"text_3",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.text.label_3"
},
{
"type":"url",
"id":"link_3",
"label":"t:sections.product-template.blocks.image_with_text_blocks.settings.link.label_3"
}
]
},
{
"type":"product_options_block",
"name":"t:sections.product-template.blocks.product_options_block.name",
"settings": [
{
"type":"checkbox",
"id":"show_product_swatches",
"label":"t:sections.product-template.blocks.product_options_block.settings.show_product_swatches.label",
"info":"t:sections.product-template.blocks.product_options_block.settings.show_product_swatches.info",
"default": true
},
{
"type":"checkbox",
"id":"use_variant_image_for_swatches",
"label":"t:sections.product-template.blocks.product_options_block.settings.use_variant_image_for_swatches.label",
"default": false
}
]
},
{
"type": "product_variations",
"name": "t:sections.product-template.blocks.product_variations.name",
"settings": [
{
"type": "paragraph",
"content": "t:sections.product-template.blocks.product_variations.instructions"
},
{
"type": "text",
"id": "option_name",
"label": "t:sections.product-template.blocks.product_variations.option_name",
"placeholder": "t:sections.product-template.blocks.product_variations.option_name_placeholder"
},
{
"type": "text",
"id": "option_value_metafield",
"label": "t:sections.product-template.blocks.product_variations.option_value_metafield",
"info": "t:sections.product-template.blocks.product_variations.option_value_metafield_info"
},
{
"type": "product_list",
"id": "products",
"label": "t:sections.product-template.blocks.product_variations.product_list",
"info": "t:sections.product-template.blocks.product_variations.product_list_info"
},
{
"type": "select",
"id": "color_selector_type",
"label": "t:sections.product-template.blocks.product_variations.color_selector_type",
"info": "t:sections.product-template.blocks.product_variations.color_selector_type_info",
"options": [
{
"value": "block",
"label": "t:sections.product-template.blocks.product_variations.color_selector_type_options.block"
},
{
"value": "dropdown",
"label": "t:sections.product-template.blocks.product_variations.color_selector_type_options.dropdown"
},
{
"value": "color",
"label": "t:sections.product-template.blocks.product_variations.color_selector_type_options.color_swatch"
},
{
"value": "variant",
"label": "t:sections.product-template.blocks.product_variations.color_selector_type_options.variant_image"
}
],
"default": "color"
},
{
"type": "select",
"id": "color_selector_size",
"label": "t:sections.product-template.blocks.product_variations.color_selector_size",
"info": "t:sections.product-template.blocks.product_variations.color_selector_size_info",
"options": [
{
"value": "small",
"label": "t:sections.product-template.blocks.product_variations.color_selector_size_options.small"
},
{
"value": "medium",
"label": "t:sections.product-template.blocks.product_variations.color_selector_size_options.medium"
},
{
"value": "large",
"label": "t:sections.product-template.blocks.product_variations.color_selector_size_options.large"
}
],
"default": "small"
},
{
"type": "checkbox",
"id": "show_tooltip",
"label": "t:sections.product-template.blocks.product_variations.show_tooltip",
"info": "t:sections.product-template.blocks.product_variations.show_tooltip_info"
}
]
}
]
}
{% endschema %}