Liquid 编码 (Shopify) "and" 和 "elsif" 无法协同工作
Liquid coding (Shopify) "and" and "elsif" not functioning together
我在开设自己的 Shopify 商店时刚接触液体编码(尽管我有一些编码经验)。我目前正试图让这段代码发挥作用。我在液体文件中为每个变量添加了 3 个文本选项。这个想法是,当满足标准时,它将显示适当的文本选项。请在此处查看代码字符串以供参考。
{% if section.settings.free_shipping_announcement_bar %}
{% assign promote_text = section.settings.promote_free_shipping_text | escape %}
{% assign unlocked_text = section.settings.unlocked_free_shipping_text | escape %}
{% assign unlocked_del_text = section.settings.unlocked_free_delivery_text | escape %}
{% assign threshold = section.settings.free_shipping_threshold | times: 100 %}
{% assign value_left = threshold | minus:cart.total_price %}
{% assign value_left_money = value_left | money %}
<div class="announcement-bar">
{% if value_left <= 0 %}
<p class="announcement-bar__message">{{unlocked_text}}</p>
{% elsif value_left >= 1 and value_left < 50 %}
<p class="announcement-bar__message">{{unlocked_del_text}}</p>
{% else %}
<p class="announcement-bar__message">{{promote_text | replace:'(value)' , value_left_money}}</p>
{% endif %}
基本上,如果购物车总价在 0-99 美元之间,我将显示“promote_text”,如果在 100-149 美元之间,它将显示“Unlocked_free_del_text”(免费送货),然后 150 美元以上时在购物车中显示“unlocked_text”。
它目前显示从 $0-$149 的“promote_text”然后直接更改为“unlocked_text”并跳过“unlocked_del_text”的中间部分
我最好的假设是我错误地使用了 elsif 函数,但我在不破坏代码的情况下进行了尽可能多的调整,因此非常感谢任何建议!
更新:
在通过开发商店检查和测试代码后,我发现您需要使用 divided_by
到 value_left
值与标准化格式的值进行比较。
因此您的代码需要更新此行
{% assign value_left = threshold | minus:cart.total_price | divided_by: 100%}
因为案例是 100
的倍数以处理购物车值并且需要在测试之前归一化为 if
else
条件。
代码看起来不错,我不确定为什么不能正常工作,你也可以用这种方式检查和尝试,我希望它能工作。否则,您需要 post 整个代码以及架构,任何人都可以复制它并开发存储并找到解决方案。
{% if section.settings.free_shipping_announcement_bar %}
{% assign promote_text = section.settings.promote_free_shipping_text | escape %}
{% assign unlocked_text = section.settings.unlocked_free_shipping_text | escape %}
{% assign unlocked_del_text = section.settings.unlocked_free_delivery_text | escape %}
{% assign threshold = section.settings.free_shipping_threshold | times: 100 %}
{% assign value_left = threshold | minus:cart.total_price | divided_by: 100%}
{% assign value_left_money = value_left | money %}
<div class="announcement-bar">
{% if value_left <= 0 %}
<p class="announcement-bar__message">{{unlocked_text}}</p>
{% elsif value_left >= 1 and value_left < 50 %}
<p class="announcement-bar__message">{{unlocked_del_text}}</p>
{% else %}
<p class="announcement-bar__message">{{promote_text | replace:'(value)' , value_left_money}}</p>
{% endif %}
</div>
{% endif %}
感谢您的快速回复!我试用了您添加的代码段,但不幸的是 运行 遇到了同样的问题。这是我添加的用于影响我输入的代码部分的架构。如果您能够在这里发现一个简单的问题,请告诉我,否则,我将继续亲自进行故障排除,并希望找到解决方案或替代方法,以避免因必须复制整个代码来重现问题而给某人带来麻烦。
{
"type":"checkbox",
"label":"enable free shipping bar",
"id":"free_shipping_announcement_bar",
"default":false
},
{
"type":"text",
"id":"promote_free_shipping_text",
"label":"message to promote free shipping"
},
{
"type":"text",
"id":"unlocked_free_shipping_text",
"label":"message for unlocked free shipping"
},
{
"type":"text",
"id":"unlocked_free_delivery_text",
"label":"message for unlocked free delivery"
},
{
"type":"range",
"id":"free_shipping_threshold",
"label":"threshold for free shipping",
"min":0,
"max":200,
"step":5,
"unit":"$",
"default":150
}
我在开设自己的 Shopify 商店时刚接触液体编码(尽管我有一些编码经验)。我目前正试图让这段代码发挥作用。我在液体文件中为每个变量添加了 3 个文本选项。这个想法是,当满足标准时,它将显示适当的文本选项。请在此处查看代码字符串以供参考。
{% if section.settings.free_shipping_announcement_bar %}
{% assign promote_text = section.settings.promote_free_shipping_text | escape %}
{% assign unlocked_text = section.settings.unlocked_free_shipping_text | escape %}
{% assign unlocked_del_text = section.settings.unlocked_free_delivery_text | escape %}
{% assign threshold = section.settings.free_shipping_threshold | times: 100 %}
{% assign value_left = threshold | minus:cart.total_price %}
{% assign value_left_money = value_left | money %}
<div class="announcement-bar">
{% if value_left <= 0 %}
<p class="announcement-bar__message">{{unlocked_text}}</p>
{% elsif value_left >= 1 and value_left < 50 %}
<p class="announcement-bar__message">{{unlocked_del_text}}</p>
{% else %}
<p class="announcement-bar__message">{{promote_text | replace:'(value)' , value_left_money}}</p>
{% endif %}
基本上,如果购物车总价在 0-99 美元之间,我将显示“promote_text”,如果在 100-149 美元之间,它将显示“Unlocked_free_del_text”(免费送货),然后 150 美元以上时在购物车中显示“unlocked_text”。
它目前显示从 $0-$149 的“promote_text”然后直接更改为“unlocked_text”并跳过“unlocked_del_text”的中间部分
我最好的假设是我错误地使用了 elsif 函数,但我在不破坏代码的情况下进行了尽可能多的调整,因此非常感谢任何建议!
更新:
在通过开发商店检查和测试代码后,我发现您需要使用 divided_by
到 value_left
值与标准化格式的值进行比较。
因此您的代码需要更新此行
{% assign value_left = threshold | minus:cart.total_price | divided_by: 100%}
因为案例是 100
的倍数以处理购物车值并且需要在测试之前归一化为 if
else
条件。
代码看起来不错,我不确定为什么不能正常工作,你也可以用这种方式检查和尝试,我希望它能工作。否则,您需要 post 整个代码以及架构,任何人都可以复制它并开发存储并找到解决方案。
{% if section.settings.free_shipping_announcement_bar %}
{% assign promote_text = section.settings.promote_free_shipping_text | escape %}
{% assign unlocked_text = section.settings.unlocked_free_shipping_text | escape %}
{% assign unlocked_del_text = section.settings.unlocked_free_delivery_text | escape %}
{% assign threshold = section.settings.free_shipping_threshold | times: 100 %}
{% assign value_left = threshold | minus:cart.total_price | divided_by: 100%}
{% assign value_left_money = value_left | money %}
<div class="announcement-bar">
{% if value_left <= 0 %}
<p class="announcement-bar__message">{{unlocked_text}}</p>
{% elsif value_left >= 1 and value_left < 50 %}
<p class="announcement-bar__message">{{unlocked_del_text}}</p>
{% else %}
<p class="announcement-bar__message">{{promote_text | replace:'(value)' , value_left_money}}</p>
{% endif %}
</div>
{% endif %}
感谢您的快速回复!我试用了您添加的代码段,但不幸的是 运行 遇到了同样的问题。这是我添加的用于影响我输入的代码部分的架构。如果您能够在这里发现一个简单的问题,请告诉我,否则,我将继续亲自进行故障排除,并希望找到解决方案或替代方法,以避免因必须复制整个代码来重现问题而给某人带来麻烦。
{
"type":"checkbox",
"label":"enable free shipping bar",
"id":"free_shipping_announcement_bar",
"default":false
},
{
"type":"text",
"id":"promote_free_shipping_text",
"label":"message to promote free shipping"
},
{
"type":"text",
"id":"unlocked_free_shipping_text",
"label":"message for unlocked free shipping"
},
{
"type":"text",
"id":"unlocked_free_delivery_text",
"label":"message for unlocked free delivery"
},
{
"type":"range",
"id":"free_shipping_threshold",
"label":"threshold for free shipping",
"min":0,
"max":200,
"step":5,
"unit":"$",
"default":150
}