如何将 'line_items' 存储在数组中

How to store 'line_items' in an array

生成 "New order notification" 邮件时,我希望根据集合名称对产品进行 "arrays" 排序,集合名称可以在产品标签中找到。

但我似乎无法将 line_item 存储在数组中。

这是我正在尝试的:

{% assign kaas_vleeswaren_delicatessen = "" %}

{% for line_item in order.line_items %}
  {% for tag in line_item.product.tags %}
    {% if tag == 'Kaas - vleeswaren - delicatessen Albert Heijn' %}
      {% assign kaas_vleeswaren_delicatessen = kaas_vleeswaren_delicatessen | append: line_item | append: ',' %}
    {% endif %}
  {% endfor %}
{% endfor %}

{% assign kaas_vleeswaren_delicatessen = kaas_vleeswaren_delicatessen | split: ',' %}

{% for product in kaas_vleeswaren_delicatessen %}
  {{ product.title }}<br>
{% endfor %}

#=> 

{% for product in kaas_vleeswaren_delicatessen %}
  {{ product }}<br>
{% endfor %}

#=> LineItemDrop
#   LineItemDrop
#   LineItemDrop

当试图查看 product.title 时,它只是 returns 空白。当试图查看产品时,它很简单 returns LineItemDrop.

我做错了什么?

这一行实际上并不是在添加产品,它是在为 line_item 添加它的 return 值("LineItemDrop" 是一个字符串,而不是一个对象):

{% assign kaas_vleeswaren_delicatessen = kaas_vleeswaren_delicatessen | append: line_item | append: ',' %}

由于您实际上无法使用液体创建数组,因此您需要添加字符串而不是对象。

{% assign kaas_vleeswaren_delicatessen = "" %}

{% for line_item in order.line_items %}
  {% for tag in line_item.product.tags %}
    {% if tag == 'Kaas - vleeswaren - delicatessen Albert Heijn' %}
      {% assign kaas_vleeswaren_delicatessen = kaas_vleeswaren_delicatessen | append: line_item.title | append: ',' %}
    {% endif %}
  {% endfor %}
{% endfor %}

{% assign kaas_vleeswaren_delicatessen = kaas_vleeswaren_delicatessen | split: ',' %}

{% for line_item_title in kaas_vleeswaren_delicatessen %}
  {{ line_item_title }}<br>
{% endfor %}

虽然它可能会更好一些,但只是遍历它并打印值

{% for line_item in order.line_items %}
  {% for tag in line_item.product.tags %}
    {% if tag == 'Kaas - vleeswaren - delicatessen Albert Heijn' %}
      {{ line_item.product.title }}
      {{ line_item.product.price }}
    {% endif %}
  {% endfor %}
{% endfor %}