布局和模板之间的液体可变范围
Liquid variable scope between Layout and Template
是否可以在模板文件中可见的布局文件中定义液体变量?
布局(例如theme.liquid
)中定义的变量对通过<% include %>
包含的任何片段可见(反之亦然)。
模板(例如index.liquid
)中定义的变量在通过<% include %>
(例如product-grid-item.liquid
)包含的任何片段中可见并且在布局文件中也可见。
然而,布局中定义的变量似乎对模板不可见。据推测,模板是在评估布局之前评估的。有什么方法可以覆盖此行为吗?
目前在 Shopify 中,无法将 Liquid 变量从布局传递到模板中。
解决这个问题的一种方法是将相同的逻辑执行两次,也许是在一个片段中。然后在布局和模板中放置相同的片段。
另外值得注意的是 Shopify Liquid 范围的主题,因为它没有在任何地方记录,是在部分内部定义的变量在该部分的范围内,不能在外部访问。
编辑:
同样是关于 Shopify Liquid 变量范围的主题。
现在还有 {% render %}
标记,它强制使用显式传入的所需变量调用代码段。
例如,您可以使用 include
{% assign name = 'cart' %}
{% include 'icon' %}
或者,您可以使用具有一些性能优势的渲染标记。只需确保您显式传递名称变量即可。
{% render 'icon' name: 'cart' %}
<!-- OR -->
{% assign name = 'cart' %}
{% render 'icon' name: name %}
使用 render 的好处是变量总是限定在代码段内,这可以防止一些令人困惑的错误。另外,Shopify 的服务器上有一个很大的速度性能,这将改进第一个字节的时间。
是否可以在模板文件中可见的布局文件中定义液体变量?
布局(例如theme.liquid
)中定义的变量对通过<% include %>
包含的任何片段可见(反之亦然)。
模板(例如index.liquid
)中定义的变量在通过<% include %>
(例如product-grid-item.liquid
)包含的任何片段中可见并且在布局文件中也可见。
然而,布局中定义的变量似乎对模板不可见。据推测,模板是在评估布局之前评估的。有什么方法可以覆盖此行为吗?
目前在 Shopify 中,无法将 Liquid 变量从布局传递到模板中。
解决这个问题的一种方法是将相同的逻辑执行两次,也许是在一个片段中。然后在布局和模板中放置相同的片段。
另外值得注意的是 Shopify Liquid 范围的主题,因为它没有在任何地方记录,是在部分内部定义的变量在该部分的范围内,不能在外部访问。
编辑:
同样是关于 Shopify Liquid 变量范围的主题。
现在还有 {% render %}
标记,它强制使用显式传入的所需变量调用代码段。
例如,您可以使用 include
{% assign name = 'cart' %}
{% include 'icon' %}
或者,您可以使用具有一些性能优势的渲染标记。只需确保您显式传递名称变量即可。
{% render 'icon' name: 'cart' %}
<!-- OR -->
{% assign name = 'cart' %}
{% render 'icon' name: name %}
使用 render 的好处是变量总是限定在代码段内,这可以防止一些令人困惑的错误。另外,Shopify 的服务器上有一个很大的速度性能,这将改进第一个字节的时间。