shopify的模板语言liquid

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 %}

最终效果