Jinja2在没有名称空间的循环外设置变量字符串

时间:2019-07-09 00:29:39

标签: loops scope jinja2 shopify

我试图在循环外创建一个串联的字符串,然后将其设置为一个变量,然后可以在循环外使用。我无法使用旧版本的Jinja2访问名称空间。

到目前为止,这里是我要说明的事情...

    {% set ab_cart_string = '' %}
    {% for item in cart_object %}

    VariantID = {{ item.variant_id }}
    Item Count = {{ item.quantity }}
    {% set ab_cart_string = ab_cart_string ~ item.variant_id ~ ':' ~ item.quantity ~ ',' %}
    String = {{ ab_cart_string }}

    {% endfor %}

    Url = {{ ab_cart_string|slice(0, -1) }}

预期输出:

String = 27707915206755:1,28410722943075:1,

网址= 27707915206755:1,28410722943075:1

实际输出:

String = 27707915206755:1,28410722943075:1,

网址=

1 个答案:

答案 0 :(得分:0)

我不是在循环外访问变量,而是在标记内部构建了字符串,因为目标是建立链接。

在这里,我要遍历产品对象并遍历每个索引,然后添加一个variant.id和一个数量,以使用用户最后添加的商品在Shopify中手动构建一个cart link

然后,当循环中有多个项目时,我添加了一个条件(如果不是最后一个循环),我们需要在索引之间添加逗号。这样,我就可以根据每个永久链接正确构建链接,以将购物车预加载到Shopify中。

<a href="https://{{ event.domain }}/cart/
{%- set products = cart_object -%} 
{%- for product in products -%} 
    {{- product.variant_id -}}:{{- product.quantity -}}
    {%- if not loop.last -%},{%- endif -%}
{%- endfor -%}  
">CART LINK HERE</a>