我有一个包含在多个模板中的片段。它执行一些操作,然后根据这些操作的结果定义一些带有值的变量。然后,模板需要以几种不同的方式使用这些值。
我似乎无法从模板访问代码片段中定义的变量。一个非常淡化的例子:
{% assign myVar = "bar" %}
{% assign myVar = "foo" %}
{% render 'colors' %}
{{ myVar }}
其输出为
foo
,而预期输出为 bar
。
我做错了什么,还是这根本不可能?
你没有做错任何事,是的,这是不可能的,至少对于
render
来说是不可能的。
在
render
调用的代码片段内部声明的变量只能在该代码片段内部访问。渲染已取代 include
,现已弃用,但允许您实现在上面的示例中尝试执行的操作。
也就是说,您现在仍然可以使用
include
- 更多信息请点击>> https://shopify.dev/api/liquid/tags/deprecated-tags#include
可以通过捕获来解决。
有颜色.液体:
{% assign myVar = "bar" %}{{- myVar -}}
在颜色选择器.液体中
{% capture myVar %}
{%- render 'colors' -%}
{% endcapture %}
{{ myVar }}