液体有"or if blank?"型过滤器吗?

Does liquid have an "or if blank?"-type filter?

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

<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 对象的结构来解决这个问题,但不幸的是我不能很容易地做到这一点,所以我希望在这里找个轻松的地方。

您可以使用以下格式根据 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

您可以使用 default 过滤器:

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