【问题标题】:Shopify Liquid conditionally include sectionsShopify Liquid 有条件地包括部分
【发布时间】:2017-08-27 05:16:02
【问题描述】:

因此,当前 Shopify 实施的部分还有很多不足之处。大部分功能都归入主页。

我试图在一定程度上绕过它,但基本上将所有部分功能(通常会分成多个部分)放入 一个 部分文件,然后为每个部分复制它商店中的产品,重复使用每个产品的句柄作为部分名称。

例如:example-product-handle --> sections/example-product-handle.liquid

然后我的想法是在主 product.liquid 文件中创建一个简单的路由系统,如果存在与句柄匹配的部分,它将有条件地包含一个部分。这个SO answer 激发了我的创造力。

理想的结果应该是……

{% assign current_page = product.handle %}
{% capture snippet_exists %}{% section current_page %}{% endcapture %}
{% unless snippet_exists contains "Liquid error" %}
    {% section current_page %}
{% endunless %}

漂亮适用于 sn-ps。在该代码中将section 替换为include,路由系统完美运行。

但是有部分?

液体语法错误:标签“部分”中的错误 - 有效语法:部分“[类型]”

有没有办法解决这个问题?部分名称必须明确说明吗?

【问题讨论】:

  • 我无法指导你如何制作动态部分,但你可以参考这里 - help.shopify.com/themes/development/theme-editor/…
  • 动态部分是完美的,但问题是:“部分可以从主题编辑器动态添加到主题的主页。”它们只能在主页上使用。在其他地方,您必须转向静态部分,其内容在包含它们的每个页面上都是相同的。

标签: include shopify liquid code-snippets


【解决方案1】:

这是不可能的。这是故意不可能的。请尝试使用该部分来动态包含 sn-ps。

{% for block in section.blocks %}
  {% case block.type %}
  {% when 'layout1' %}
    {% include 'layout1' %}
{% endfor %}

【讨论】:

  • 了解这一点很有用。感谢您提供替代解决方案。我很好奇:为什么故意不能有条件地包含一个部分。
  • @DylanKinnett 我的猜测是因为这些部分与主题定制器绑定在一起,有条件地隐藏和显示部分主题定制器将是一个糟糕的用户体验。
猜你喜欢
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 2013-01-18
相关资源
最近更新 更多