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