shopify使用了 liquid 作为自己模板语言。在我看来liquid是smarty的后继者。
Shopify的文档 (链接) (github)常用的对象(object) (cheat sheet)
github (链接)
作品1 按照meta信息排序.
基本思路就是在循环显示之前,先循环一遍,把信息取出来后,单独保存到一个新的数组内。然后对这个数组进行排序。
{% assign newArray = false %}
{% for line_item in line_items %}
{% assign newOrder = line_item.product.metafields.regalnummer.value | default:'' %}
{% assign matrix = newOrder | append:'.' | append:forloop.index0 %}
{% if newArray %}
{% assign tmpIndex = matrix | split:',' %}
{% assign newArray = newArray | concat:tmpIndex %}
{% else %}
{% assign newArray = matrix | split:',' %}
{% endif %}
{% endfor %}
{% assign newArray = newArray | sort %}
显示的时候就按照这个新的数组进行循环
{% for newArrayItem in newArray %}
{% assign i = newArrayItem | split:'.' | last | times: 1 %}
{% assign rowObj =line_items[i] %}
<tr>
<td>{{ rowObj.quantity }} x</td>
<td>({{ rowObj.variant.inventory_quantity }})</td>
<td>{{ rowObj.product.metafields.regalnummer.value }}</td>
<td>{{ rowObj.variant.barcode }}</td>
<!-- <td>{{ rowObj.product.metafields.exp.value }}</td> -->
<td>{{ rowObj.sku }}</td>
<td>{{ rowObj.vendor }}</td>
<td>{{ rowObj.title }}</td>
<td style="text-align: right;">
{{ rowObj.price | money }}</td>
<td style="text-align: right;">
{{ rowObj.price | times:rowObj.quantity | money }}</td>
<td style="text-align: right;">
{% assign a = rowObj.grams %}
{% assign b = rowObj.quantity %}
{{ a | times: b }}</td>
</tr>
{% endfor %}
最终效果