是否可以将对象初始化为液体中的变量?

Mat*_*Som 8 liquid shopify

我对 Liquid 环境相当陌生,想知道您是否可以像 JS 一样在 Liquid 文件中启动对象变量?

let person = [{
    'name' : 'John Doe',
    'age' : '20'
}];
Run Code Online (Sandbox Code Playgroud)

我知道液体正在使用 {% allocate %} 那么它有什么工作方法吗

{% assign person = [{
    'name' : 'John Doe',
    'age' : '20'
}]; %}
Run Code Online (Sandbox Code Playgroud)

这是直接初始化它,而不从元字段中提取任何数据。

提前致谢!

Ali*_*ard 11

你可能会使用这样的东西:

{%- capture person -%}
name : John Doe , age : 20
{%- endcapture -%}
{% assign person = person | split:',' %}
Run Code Online (Sandbox Code Playgroud)

Person 现在是一个数组。

{{ person.first }}
Run Code Online (Sandbox Code Playgroud)

或者

{{ person[0] }}
Run Code Online (Sandbox Code Playgroud)

将输出:name : John Doe.

然后,更进一步:

{% assign person_name = person.first | split:':' %}
Run Code Online (Sandbox Code Playgroud)

所以

{{ person_name.last }}
Run Code Online (Sandbox Code Playgroud)

或者

{{ person_name[1] }}
Run Code Online (Sandbox Code Playgroud)

将输出:John Doe.

ETC。


Sub*_*Das 4

除非您已将对象数据保存在您在 Shopify 编辑器中定义和创建的元字段中,否则您无法在 Shopify 中创建新的自定义对象。

以下是创建对象并将其分配为字符串的方法,然后使用 javascript 从字符串创建 javascript 对象。

{% assign person = "[{'name' : 'John Doe','age' : '20'}]" %}

<script>
 var person = {{person}};
 //typeof(person) is object
</script>
Run Code Online (Sandbox Code Playgroud)