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_byvalue_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
}