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