【问题标题】:Does liquid have an "or if blank?"-type filter?液体是否有“或空白?”型过滤器?
【发布时间】:2021-03-31 19:49:39
【问题描述】:

我正在尝试做这样的事情:

<a href="...&user_name={{customer.name}}&...">Click me.</a>

但有时customer.name 可能为空白。不是null,而是Ruby 版本的blank?(例如,一个空字符串"")。在这种情况下,我想使用customer.email

在理想情况下,液体应该有一个 or_if_blank 过滤器,它执行以下操作:

<a href="...&user_name={{customer.name | or_if_blank: customer.email }}...">Click me.</a>

但事实并非如此。有什么简单的方法可以破解这个?我对液体很陌生,所以即使我已经在these docs 上倾注了 15 分钟,答案也可能正盯着我看。

顺便说一句,我知道我可以通过更改我传递给 Liquid 的 customer 对象的结构来解决这个问题,但不幸的是我不能很容易地做到这一点,所以我希望找到一个简单的方法在这里。

【问题讨论】:

    标签: liquid


    【解决方案1】:

    您可以使用以下格式根据 customer.name 的值更改 html:

    {% if customer.name %}
    <a href="...&user_name={{customer.name}}&...">Click me.</a>
    {% else%}
    <a href="...&user_name={{customer.email}}&...">Click me.</a>
    {% endif %}
    

    您可以在此处阅读有关带有液体的 if 语句的更多信息:https://github.com/Shopify/liquid/wiki/Liquid-for-Designers#if--else

    【讨论】:

    • 是的,基于 Liquid 的当前 API,看起来这是完成此任务的唯一方法。谢谢!
    【解决方案2】:

    您可以使用default 过滤器:

    <a href="...&user_name={{customer.name | default: customer.email }}...">Click me.</a>
    

    【讨论】:

      猜你喜欢
      • 2019-01-20
      • 1970-01-01
      • 2018-01-17
      • 2017-07-27
      • 2023-03-20
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多