arrays - 将 product line_items 存储在与供应商的关联数组中
问题描述
在生成“订单确认”电子邮件时,我想要一个根据供应商按“数组”排序的产品列表。
但我不知道如何设置产品线项目以与那里的供应商相关联。
这是我正在尝试的;
{% assign vendor_count = 0 %}
{% capture vendor_check %}
{% for line in line_items %}
{{ line.product.vendor }}{% if forloop.last != true %},{% endif %}
{% endfor %}
{% endcapture %}
{% assign line_vendor = vendor_check | split: ',' | uniq %}
{%- assign vendor_items = line_items | where: "vendor", vendor -%}
{% for vendor in line_vendor %}
{% assign vendor_count = vendor_count | plus: 1 %}
<div><strong>Delivery {{ vendor_count }} - {{ vendor }}</strong></div>
{% for line in vendor_items %}
{{ line.title }}<br>
{% endfor %}
{% endfor %}
电流输出:
交付 1 - 供应商#1
产品 1
产品 2
产品 3
产品 4
交付 2 - 供应商#2
产品 1
产品 2
产品 3
产品 4
期望的输出:
交付 1 - 供应商#1
产品 1
产品 2
交付 2 - 供应商#2
产品 3
产品 4
我在这里做错了什么?
解决方案
缩进的液体代码可以通过插入意外的空格来混淆捕获的变量,要么将整个捕获标记放在 1 行上,要么转义空格。
vendor_items
并不是真正需要的,只需从 中创建一系列独特的供应商line_items
,然后再次遍历您的line_items
并显示匹配的产品。
您可以尝试这样的事情并根据您的需要进行调整:
{% capture vendor_check %}{% for line in line_items %}{{ line.product.vendor }}{% if forloop.last != true %},{% endif %}{% endfor %}{% endcapture %}
{% assign line_vendor = vendor_check | split: "," | uniq %}
{% for vendor in line_vendor %}
{% assign vendor_count = vendor_count | plus: 1 %}
<div><strong>Delivery {{ vendor_count }} - {{ vendor }}</strong></div>
{% for line in line_items %}
{% if line.product.vendor == vendor %}{{ line.title }}{% endif %}<br>
{% endfor %}
{% endfor %}
推荐阅读
- jquery - 使用 jQuery 从 Select 中动态删除选项
- docker - 除了 docker 之外,还有没有使用底层磁盘存储而不预先设置限制的传统虚拟化?
- ios - UISwitch 的明确变量名称是什么,因为“switch”是保留关键字?
- python - 一个 ElasticSearch 查询中的多个查询
- php - 无法使用数组元素
- c++ - 如何获取 Boost 进程的退出代码?
- reactjs - componentDidMount:无法在未安装的组件上调用 setState(或 forceUpdate)
- wordpress - 我可以在 domain.com 上安装一些非 wordpress 页面的 wordpress 吗?
- php - sqlite到mysql使用php
- sql - 将 .txt 文件中的数据插入 SQL DB 时出现错误说没有权限 OpenRowSet()