支持商品媒体
商家可以为商品添加媒体,包括图片、3D 模型和视频。
资源
- product object 的
media属性
实现商品媒体
商品媒体通常在商品页面上展示。但您可能也希望在 theme 的其他区域显示商品媒体,因此建议在 snippet 中构建媒体展示,以便复用。
要展示商品媒体,您可以遍历 product object 的 images 属性,并根据 media_type 应用相应的 media_parse filter。
示例
如果您希望在商品页面输出商品媒体,且商品页面内容托管在 product.liquid section 中,可以按以下方式操作:
- 创建一个名为
product_images.liquid的 snippet,用于托管图片和媒体展示。 - 在
product.liquidsection 中引入product_images.liquid。
{% include 'product_images' %}
{% for item in product.images %}
{% assign media = item.src | media_parse %}
{% if media.mp4 or media.hls %}
<video x5-playsinline="true" playsinline="true" webkit-playsinline="true" poster="{{ media.preview_image }}">
{% if media.hls %}
<source src="{{ media.hls }}" type="application/x-mpegURL">
{% endif %}
{% if media.mp4 %}
<source src="{{ media.mp4 }}" type="video/mp4">
{% endif %}
</video>
{% elsif media.media_type == 'model3d' %}
<div data-zoom-idx="{{ forloop.index0 }}">
<button data-model-src="{{ media.sources }}" data-model-poster="{{ item.src }}">
<img data-img-zoom="{{item.src}}" src="{{ item.src }}" alt="{{ item.alt | default: product.title | escape }}" data-media="{{ media.sources }}" />
</button>
</div>
{% else %}
<img data-img="{{ item.src }}" src="{{ shop.default_img }}" data-src="{{ item.src | img_url: '{width}x'}}" data-sizes="auto" alt="{{ item.alt | escape }}">
{% endif %}
{% endfor %}
响应式媒体元素
Shoplazza 托管的 3D 模型使用 Google 的 model viewer 组件,外部渲染的视频在 <iframe> 元素中渲染。这两者默认都不是响应式容器。