Shopify Liquid Theme advance custom field checkbox if-statement 不理解 "true" 为真
Shopify Liquid Theme advance custom field checkbox if-statement did not understand "true" as truthy
我通过高级自定义字段插件在 Shopify 中为我的产品添加了几个复选框。
在主题中,我想遍历这些复选框,只有当复选框被选中时,我才想在此处显示特定的翻译文本。
但是,我无法通过 IF 语句检查复选框是否被选中。
这是我的代码(带有一些调试输出)
<ul>
{% for field in product.metafields.warnhinweise %}
{% assign field_first = field | first %}
{% assign field_last = field | last %}
<li>ID: {{ field_first }} - Value: {{ field_last }}</li>
{% assign language_key = 'products.productwarnings.' | append: field_first %}
{% if field_last == true %}
<ul>
<li>ID: {{ field_first }} - Value: {{ field_last }}</li>
<ul>
<li>nest the variable output: {{ language_key | t }}</li>
</ul>
</ul>
{% else %}
<ul>
<li>don't show</li>
</ul>
{% endif %}
{% endfor %}
</ul>
这是输出:
结论:也许 true 不是 truthy?
我也试过这个,检查一个字符串:
{% if field_last == 'true' %}
但这会导致相同的结果。
这是高级自定义字段后端的屏幕截图
这是复选框的示例配置。
我真的很奇怪为什么这么简单的 IF 语句在这里不起作用?
非常感谢您的帮助。
元字段可能未以与您的比较完全匹配的格式存储
当 Shopify 将值打印到您的文档时,有时很难确定基础值的数据类型。例如,如果 true
被打印到文档,是因为值是布尔值 true
、字符串 "true"
、包含 ['true']
的值数组、还是别的?
要找出幕后使用的确切值是什么,我建议使用 | json
过滤器来输出您的变量。通过使用 {{ field_last | json }}
之类的东西,Shopify 会将变量转换为 javascript 合法格式,并将包含所有特殊字符(并且引号等特殊字符将被 \
字符转义), 从而揭示底层结构是什么。
在您的例子中,元字段值看起来像数组。我建议在比较 contains
关键字时切换相等运算符 (==
),而不是完全匹配此构造:
{% if field_last contains 'true' %}
<!-- Cool feature goes here! -->
{% endif %}
我通过高级自定义字段插件在 Shopify 中为我的产品添加了几个复选框。
在主题中,我想遍历这些复选框,只有当复选框被选中时,我才想在此处显示特定的翻译文本。
但是,我无法通过 IF 语句检查复选框是否被选中。
这是我的代码(带有一些调试输出)
<ul>
{% for field in product.metafields.warnhinweise %}
{% assign field_first = field | first %}
{% assign field_last = field | last %}
<li>ID: {{ field_first }} - Value: {{ field_last }}</li>
{% assign language_key = 'products.productwarnings.' | append: field_first %}
{% if field_last == true %}
<ul>
<li>ID: {{ field_first }} - Value: {{ field_last }}</li>
<ul>
<li>nest the variable output: {{ language_key | t }}</li>
</ul>
</ul>
{% else %}
<ul>
<li>don't show</li>
</ul>
{% endif %}
{% endfor %}
</ul>
这是输出:
结论:也许 true 不是 truthy?
我也试过这个,检查一个字符串:
{% if field_last == 'true' %}
但这会导致相同的结果。
这是高级自定义字段后端的屏幕截图
这是复选框的示例配置。
我真的很奇怪为什么这么简单的 IF 语句在这里不起作用?
非常感谢您的帮助。
元字段可能未以与您的比较完全匹配的格式存储
当 Shopify 将值打印到您的文档时,有时很难确定基础值的数据类型。例如,如果 true
被打印到文档,是因为值是布尔值 true
、字符串 "true"
、包含 ['true']
的值数组、还是别的?
要找出幕后使用的确切值是什么,我建议使用 | json
过滤器来输出您的变量。通过使用 {{ field_last | json }}
之类的东西,Shopify 会将变量转换为 javascript 合法格式,并将包含所有特殊字符(并且引号等特殊字符将被 \
字符转义), 从而揭示底层结构是什么。
在您的例子中,元字段值看起来像数组。我建议在比较 contains
关键字时切换相等运算符 (==
),而不是完全匹配此构造:
{% if field_last contains 'true' %}
<!-- Cool feature goes here! -->
{% endif %}