Shopify Liquid Theme advance自定义字段复选框(如果语句不理解);“真的”;真实的

Shopify Liquid Theme advance自定义字段复选框(如果语句不理解);“真的”;真实的,shopify,liquid,Shopify,Liquid,我通过高级自定义字段插件在Shopify中为我的产品添加了一些复选框 在主题中,我想反复检查这些复选框,只有选中了复选框,我才想在这里显示特定的翻译文本 但是,我在IF语句中无法检查复选框是否被选中 这是我的代码(带有一些调试输出) 但这也导致了同样的结果 这是来自高级自定义字段后端的屏幕截图 以下是复选框的示例性配置 我真想知道为什么这么简单的IF语句在这里不起作用 非常感谢您的帮助。元字段的存储格式可能与您的比较不完全匹配 当Shopify将值打印到文档中时,有时很难确定基础值的数据类型

我通过高级自定义字段插件在Shopify中为我的产品添加了一些复选框

在主题中,我想反复检查这些复选框,只有选中了复选框,我才想在这里显示特定的翻译文本

但是,我在IF语句中无法检查复选框是否被选中

这是我的代码(带有一些调试输出)

但这也导致了同样的结果

这是来自高级自定义字段后端的屏幕截图

以下是复选框的示例性配置

我真想知道为什么这么简单的IF语句在这里不起作用

非常感谢您的帮助。

元字段的存储格式可能与您的比较不完全匹配 当Shopify将值打印到文档中时,有时很难确定基础值的数据类型。例如,如果将
true
打印到文档中,是因为该值是布尔值
true
、字符串
“true”
、包含
['true']
的值数组,还是其他原因

要了解引擎盖下使用的确切值,我建议使用
|json
过滤器输出变量。通过使用
{field\u last | json}
,Shopify将变量转换为javascript合法格式,并包含所有特殊字符(一些特殊字符,如引号,将由
\
字符转义),从而揭示底层结构

在您的例子中,元字段值看起来像数组。我建议在比较中切换相等运算符(
==
),而不是在这个结构上进行精确匹配,因为
包含
关键字:

{% if field_last contains 'true' %}
  <!-- Cool feature goes here! -->
{% endif %}
{%if字段\最后一个包含“true”}
{%endif%}

问题可能在于复选框的类型和返回“true”的方式?它是在数组中还是类似的东西中?如果您将print语句更新为输出
值:{{field_last | json}}
,您会得到什么?(json过滤器将任何值转换为javascript合法输出,因此将显示可能存在的任何引号、数组括号等)尝试剥离变量以获得额外的空格
{%assign field_last=field | last | strip%}
抱歉,各位回复太晚了@DaveB现在的输出是:
Value:[“false”]
Value:[“true”]
@cMarius好主意,但这并没有解决问题。有趣的事实json过滤器的输出现在是:
“[\“false\”]”“
“[\“true\”]””
有趣-看起来元字段存储为一个数组,该数组已转换为字符串,并保存
[“true”]
[“false”]
的文本值(作为字符串)。如果将比较更新为
{%field\ u最后一次包含'true%}
,会发生什么情况?
{% if field_last == 'true' %}
{% if field_last contains 'true' %}
  <!-- Cool feature goes here! -->
{% endif %}