当前位置: 首页 > 知识库问答 >
问题:

shopify - 怎么在 Liquid 中解析调用的文件(列表)类型的元字段?

步德宇
2024-02-06

怎么在 Liquid 中解析调用的文件(列表)类型的元字段?

{{ product.metafields.custom.product_pictures }}

前端输出:
["gid://shopify/MediaImage/29618884149440","gid://shopify/MediaImage/29607147634880"]

尝试:

{% assign media_ids_string = product.metafields.custom.product_pictures %}{% assign media_ids = media_ids_string | split: ',' %}<ul>  {% for media_id in media_ids %}    {% assign media = all_images[media_id] %}    {% if media %}      <li>        <img src="{{ media.src | img_url: 'medium' }}" alt="{{ media.alt }}">      </li>    {% endif %}  {% endfor %}</ul>

但是前端输出的是空白的,media 为空没有进入判断。
希望能获取到文件(列表)图片的 src

共有2个答案

王凌
2024-02-06

哈喽,少了一个value哈,获取自定义元字段的方法是:

{{ product.metafields.custom.product_pictures.value }}
卫和洽
2024-02-06

你的代码片段在处理 Liquid 和 Shopify 的 metafields 时有一些问题。首先,你需要确保 product.metafields.custom.product_pictures 确实返回了一个字符串,其中包含由逗号分隔的媒体 ID 列表。然后,你需要使用 parsejson 过滤器将该字符串转换为 JSON 对象,然后才能正确地访问其内容。

另外,你试图在 all_images 数组中查找每个媒体 ID,但这个数组并不存在。你可能需要将所有图片的数组存储在一个变量中,然后在该变量中查找每个媒体 ID。

以下是一个可能的解决方案:

{% assign media_ids_string = product.metafields.custom.product_pictures %}{% assign media_ids = media_ids_string | parsejson | split: ',' %}{% assign all_media = collections.all_products | assign: "all_media" %}<ul>  {% for media_id in media_ids %}    {% assign media = all_media[media_id] %}    {% if media %}      <li>        <img src="{{ media.src | img_url: 'medium' }}" alt="{{ media.alt }}">      </li>    {% endif %}  {% endfor %}</ul>

这个代码首先将 product.metafields.custom.product_pictures 转换为 JSON 对象,然后将其分割为媒体 ID 列表。然后,它创建一个变量 all_media,其中包含所有产品的集合。最后,它遍历媒体 ID 列表,查找每个媒体 ID 在 all_media 中的对应项,并显示图片。

请注意,如果你的媒体 ID 存储在 product.metafields.custom.product_pictures 中的方式不同,或者你的图片存储在不同的地方,你可能需要调整此代码以适应你的具体情况。

 类似资料:
  • 我必须创建一个程序,打印出日期列表(年、月、日),直到用户选择日期(,稍后转换为)。 例如,如果今天是2017-09-30星期六,并且用户输入日期是2017-10-30,程序必须打印这些日期: 2017-09-30, 2017-10-07, 2017-10-14, 2017-10-21, 2017-10-28. 问题: 将日历类型元素添加到列表中 当我试图打印它时,输出只是一堆相同日期的副本。 输

  • GraphQL中有几个地方需要解析,而不仅仅是中的。 后端API- -用户列表-最少信息-姓名、id 构建一个架构来执行以下查询 模式可以如下- 上述模式中的解析器需要在两个不同的地方包含/处理用户详细信息获取调用。1.用户列表-和2.。必须记住处理这种类型,其中您只有一个用户ID将其转换为实际用户。 在撰写本文时,GraphQL支持和上的。不可能为整个指定解析器-只有中的可以具有解析器。因此,如

  • (下的唯一div) 还有更多关于参数的... 我也给了任何其他标签一个镜头,但我得到同样的问题。 最接近成功的是:。这将返回所有视频标题。但可悲的是,也有一些与其他文本的其他链接。因此不可靠。 下面是实现JSOUP的代码: 我尝试提取的示例:我正在查找的HTML块的图像 我好像错过了很多人说Jsoup很棒很简单的东西...(在我的情况下不是:v)

  • 你知道这是怎么回事吗?

  • 问题内容: 我正在尝试开发一种通用的表加载器,其架构在运行时是已知的。这需要具有包含不同类型的元素的列表,并支持各种get和诸如集方法的类,,。元素我考虑的类型有,,,和,和。每个元素的实际类型在运行时都是已知的,我将它们存储在一个List中,描述其架构以进行进一步处理。 我的问题是:我应该在或中存储这样的元素列表吗?还是有更好的方法来实现此类? 问题答案: 由于您的类的共同祖先是,并且由于不会使

  • 我有一个文件,它以JSON形式存储了许多JavaScript对象,我需要读取该文件,创建每个对象,并对它们做一些事情(在我的例子中,将它们插入数据库)。JavaScript对象可以用一种格式表示: 格式A: 或格式B: 请注意,