【发布时间】:2021-07-28 17:36:41
【问题描述】:
我通过高级自定义字段插件在 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>
这是输出:
结论:也许真实不真实?
我也试过这个,检查字符串:
{% if field_last == 'true' %}
但这会导致相同的结果。
这是来自高级自定义字段后端的屏幕截图
这里是一个复选框的示例配置。
我真的很奇怪为什么这么简单的 IF 语句在这里不起作用?
非常感谢您的帮助。
【问题讨论】:
-
也许问题在于复选框以及它返回“真实”的方式?是在数组里面还是类似的东西?
-
如果你更新你的打印语句来输出
Value: {{ field_last | json }},你会得到什么? (json过滤器将任何值转换为 javascript 合法输出,因此将显示可能存在的任何引号、数组括号等) -
尝试剥离变量以获得额外的空格
{% assign field_last = field | last | strip %} -
抱歉,回复晚了。 @DaveB 输出现在是:
Value: ["false"]或Value: ["true"]@cMarius 好主意,但这并没有解决问题。有趣的是,json 过滤器的输出现在是:"[\"false\"]"或"[\"true\"]" -
有趣 - 看起来元字段被存储为一个数组,该数组已转换为字符串,并保存
["true"]或["false"]的文字值(作为字符串)。如果您将比较更新为{% if field_last contains 'true' %},会发生什么?