arrays - Shopify JSON 类型元字段循环不起作用
问题描述
我正在使用内置元字段的 shopify 并将其类型设置为 JSON,但以某种方式循环该值不起作用。
{
"slides": [{
"title": "Title 1",
"description": "This is description body",
"image": "https://cdn.shopify.com/s/files/"
}, {
"title": "Title 2",
"description": "This is description body",
"image": "https://cdn.shopify.com/s/files/"
}]
}
上面是我设置的示例值,下面是代码,但它根本不起作用。
{% if product.metafields.spec.slider != blank %}
<div class="grid">
{% assign sliders = product.metafields.spec.slider %}
{% for slider in sliders %}
<div class="grid__item">
<img src="{{ slides.image }}" alt="" />
<h4>{{ slides.title }}</h4>
<p>{{ slides.description }}</p>
</div>
{% endfor %}
</div>
{% endif %}
解决方案
您将需要使用value属性来获取 Metafield 的值。除此之外,您的循环变量只是混淆了。在您的 JSON 中,您有一个名为 slides 的顶级属性,它是一个对象数组。因此,您必须迭代 slides 属性而不是基本 JSON 值。
这样做,您的代码将是
{% if product.metafields.spec.slider.value != blank %}
<div class="grid">
{% assign slider = product.metafields.spec.slider.value %}
{% for slide in slider.slides %}
<div class="grid__item">
<img src="{{ slide.image }}" alt="" />
<h4>{{ slide.title }}</h4>
<p>{{ slide.description }}</p>
</div>
{% endfor %}
</div>
{% endif %}
推荐阅读
- sql-server - 关于sql server中filesteam数据及其varbinary(max)值的问题
- c# - 注册/使用 Castle.Core.AsyncInterceptor 拦截器
- python - vaex:检查两个帧之间是否相等
- python - tarfile.open() 没有解压到正确的目录路径
- javascript - svg foreignObject 中的视频标签未在 Google Chrome 上正确呈现
- php - 主机离线时如何处理RequestException
- docker - Synology Docker Container 的两个网站路径
- python - 即使我正在测试的功能正在记录,为什么 caplog.text 是空的?
- python - RPC 客户端如何访问服务器创建的跨度属性/子跨度
- vue.js - 将带有组件的字符串解析为 vue.js 中的模板