保持代码在我的液体标签列表片段中的可读性

Keeping the code readable in my liquid tags list snippet

我有一些代码可以过滤掉我的 shopify 产品页面模板上某些标签的显示。 它在这个逗号分隔的标签列表中读取,我想从产品页面上的显示中排除:

{% assign exclude_tags = "Dangerous Goods,Quick Links,ShippingLetter,ShippingParcel" | split: ',' %}

产品页面在该片段中读取:

{% include "excluded-tags" %}

...并排除在 exclude_tags 列表中找到的标签:

{%- for tag in product.tags -%}
{% if exclude_tags contains tag %}
{% continue %}
{% endif %}

并且一切正常。 然而,这个要排除的标签列表最终会变得非常大(假设这里可能有 100 个标签!!),我想让它保持可读性以便以后编辑等,所以我尝试将逗号分隔列表更改为一个代码编辑器中的每行项目,但是当我这样做时它停止工作了吗?应该隐藏在产品页面上的项目并没有被隐藏。

有没有办法实现这一点,而不是将逗号分隔值全部放在一行代码中,看起来像这样:

{% assign exclude_tags = "Dangerous Goods,
Quick Links,
ShippingLetter,
ShippingParcel" | split: ',' %}

干杯, 罗布

与其将其作为硬编码保存在代码文件中,不如将其保存在主题定制器下的一个容器中,然后可以在那里一起看到所有内容。您必须编辑 liquid 文件才能实现此功能。

例如

您可以使用 capture 将多行文本分配给 Liquid 变量,然后使用 split 将其转换为数组。

{% capture exclude_tags %}
  Dangerous Goods,
  Quick Links,
  ShippingLetter,
  ShippingParcel
{% endcapture %}
    
{% assign exclude_tags = exclude_tags | split: ',' %}

但是,根据您上面的代码片段,您不需要使用拆分。您可以将包含与字符串一起使用。所以你的代码将变成这样

{% capture exclude_tags %}
  Dangerous Goods,
  Quick Links,
  ShippingLetter,
  ShippingParcel
{% endcapture %}