Created
August 19, 2020 13:40
-
-
Save dylanjhunt/43c39e779b6e0f9faa37b0da71f4d993 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{% comment %} | |
Renders a product card using "Grid" style | |
Accepts: | |
- max_height: {Number} Maximum height of the product's image (required) | |
- product: {Object} Product Liquid object (required) | |
- show_vendor: {Boolean} Show the product's vendor depending on the section setting (optional) | |
Usage: | |
{% include 'product-card-grid', max_height: max_height, product: product, show_vendor: section.settings.show_vendor %} | |
{% endcomment %} | |
<div class="grid-view-item{% unless product.available %} grid-view-item--sold-out{% endunless %} product-card"> | |
<a class="grid-view-item__link grid-view-item__image-container full-width-link" href="{{ variant.url | within: collection }}"> | |
<span class="visually-hidden">{{ product.title }} - {{ varaint.option1 }}</span> | |
</a> | |
{% capture img_id %}ProductCardImage-{{ section.id }}-{{ product.id }}{% endcapture %} | |
{% capture wrapper_id %}ProductCardImageWrapper-{{ section.id }}-{{ product.id }}{% endcapture %} | |
{%- assign preview_image = variant.image -%} | |
{%- assign img_url = preview_image | img_url: '1x1' | replace: '_1x1.', '_{width}x.' -%} | |
{% unless preview_image == blank %} | |
{% include 'image-style', image: preview_image, height: max_height, wrapper_id: wrapper_id, img_id: img_id %} | |
{% endunless %} | |
<div class="product-card__image-with-placeholder-wrapper" data-image-with-placeholder-wrapper> | |
<div id="{{ wrapper_id }}" class="grid-view-item__image-wrapper product-card__image-wrapper js"> | |
<div style="padding-top:{% unless preview_image == blank %}{{ 1 | divided_by: preview_image.aspect_ratio | times: 100 }}%{% else %}100%{% endunless %};"> | |
<img id="{{ img_id }}" | |
class="grid-view-item__image lazyload" | |
alt="{{ preview_image.alt }}" | |
data-src="{{ img_url }}" | |
data-widths="[180, 360, 540, 720, 900, 1080, 1296, 1512, 1728, 2048]" | |
data-aspectratio="{{ preview_image.aspect_ratio }}" | |
data-sizes="auto" | |
data-image> | |
</div> | |
</div> | |
<div class="placeholder-background placeholder-background--animation" data-image-placeholder></div> | |
</div> | |
<noscript> | |
{% capture image_size %}{{ max_height }}x{{ max_height }}{% endcapture %} | |
<img class="grid-view-item__image" src="{{ preview_image | img_url: image_size, scale: 2 }}" alt="{{ preview_image.alt }}" style="max-width: {{ max_height | times: preview_image.aspect_ratio }}px;"> | |
</noscript> | |
<div class="h4 grid-view-item__title product-card__title" aria-hidden="true">{{ product.title }} - {{ variant.option1 }}</div> | |
{%- liquid | |
if product.title | |
assign compare_at_price = variant.compare_at_price | |
assign price = variant.price | |
assign available = variant.available | |
assign variant = variant | |
else | |
assign compare_at_price = 1999 | |
assign price = 1999 | |
assign available = true | |
endif | |
assign money_price = price | money | |
-%} | |
<dl class="price price--listing | |
{%- if available == false %} price--sold-out {% endif -%} | |
{%- if compare_at_price > price %} price--on-sale {% endif -%} | |
{%- if product.price_varies == false and product.compare_at_price_varies %} price--compare-price-hidden {% endif -%} | |
{%- if variant.unit_price_measurement %} price--unit-available {% endif -%}" | |
> | |
{% if show_vendor and product %} | |
<div class="price__vendor price__vendor--listing"> | |
<dt> | |
<span class="visually-hidden">{{ 'products.product.vendor' | t }}</span> | |
</dt> | |
<dd> | |
{{ product.vendor }} | |
</dd> | |
</div> | |
{% endif %} | |
{%- comment -%} | |
Explanation of description list: | |
- div.price__regular: Displayed when there are no variants on sale | |
- div.price__sale: Displayed when a variant is a sale | |
- div.price__unit: Displayed when the first variant has a unit price | |
- div.price__availability: Displayed when the product is sold out | |
{%- endcomment -%} | |
<div class="price__regular"> | |
<dt> | |
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.regular_price' | t }}</span> | |
</dt> | |
<dd> | |
<span class="price-item price-item--regular"> | |
{%- if product.price_varies -%} | |
{{ 'products.product.from_lowest_price_html' | t: lowest_price: money_price }} | |
{%- else -%} | |
{{ money_price }} | |
{%- endif -%} | |
</span> | |
</dd> | |
</div> | |
<div class="price__sale"> | |
<dt> | |
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.sale_price' | t }}</span> | |
</dt> | |
<dd> | |
<span class="price-item price-item--sale"> | |
{%- if product.price_varies -%} | |
{{ 'products.product.from_lowest_price_html' | t: lowest_price: money_price }} | |
{%- else -%} | |
{{ money_price }} | |
{%- endif -%} | |
</span> | |
</dd> | |
<div class="price__compare"> | |
<dt> | |
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.regular_price' | t }}</span> | |
</dt> | |
<dd> | |
<s class="price-item price-item--regular"> | |
{{ compare_at_price | money }} | |
</s> | |
</dd> | |
</div> | |
</div> | |
<div class="price__unit"> | |
<dt> | |
<span class="visually-hidden visually-hidden--inline">{{ 'products.product.unit_price_label' | t }}</span> | |
</dt> | |
<dd class="price-unit-price"> | |
{%- capture unit_price_separator -%} | |
<span aria-hidden="true">/</span><span class="visually-hidden">{{ 'general.accessibility.unit_price_separator' | t }} </span> | |
{%- endcapture -%} | |
{%- capture unit_price_base_unit -%} | |
<span> | |
{%- if variant.unit_price_measurement -%} | |
{%- if variant.unit_price_measurement.reference_value != 1 -%} | |
{{- variant.unit_price_measurement.reference_value -}} | |
{%- endif -%} | |
{{ variant.unit_price_measurement.reference_unit }} | |
{%- endif -%} | |
</span> | |
{%- endcapture -%} | |
<span>{{ variant.unit_price | money }}</span>{{- unit_price_separator -}}{{- unit_price_base_unit -}} | |
</dd> | |
</div> | |
<div class="price__badges price__badges--listing"> | |
<span class="price__badge price__badge--sale" aria-hidden="true"> | |
<span>{{ 'products.product.on_sale' | t }}</span> | |
</span> | |
<span class="price__badge price__badge--sold-out"> | |
<span>{{ 'products.product.sold_out' | t }}</span> | |
</span> | |
</div> | |
</dl> | |
</div> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment