无法从 Liquid 中的模板访问代码片段中定义的变量

问题描述 投票:0回答:2

我有一个包含在多个模板中的片段。它执行一些操作,然后根据这些操作的结果定义一些带有值的变量。然后,模板需要以几种不同的方式使用这些值。

我似乎无法从模板访问代码片段中定义的变量。一个非常淡化的例子:

Sinppets/colors.liquid

{% assign myVar = "bar" %}

模板/颜色选择器.液体

{% assign myVar = "foo" %}
{% render 'colors' %}
{{ myVar }}

其输出为

foo
,而预期输出为
bar

我做错了什么,还是这根本不可能?

variables shopify liquid
2个回答
1
投票

你没有做错任何事,是的,这是不可能的,至少对于

render
来说是不可能的。

render
调用的代码片段内部声明的变量只能在该代码片段内部访问。渲染已取代
include
,现已弃用,但允许您实现在上面的示例中尝试执行的操作。

也就是说,您现在仍然可以使用

include
- 更多信息请点击>> https://shopify.dev/api/liquid/tags/deprecated-tags#include


0
投票

可以通过捕获来解决。

有颜色.液体:

{% assign myVar = "bar" %}{{- myVar -}}

在颜色选择器.液体中

{% capture myVar %}
    {%- render 'colors' -%}
{% endcapture %}

{{ myVar }}
© www.soinside.com 2019 - 2024. All rights reserved.