如何防止 URL 在 liquid 模板中编码字符串?

how to prevent URL encoding a string in liquid templates?

我将一些字符串混合在一起并在图像节点上渲染,如下所示:

 {% capture src %}   
 {{'https://example.com/'}} {{ padded }} {{'.jpg'}} 
 {% endcapture %}

 <td><img src="{{ src }}" />src</td>

但出于某种原因,它是 URL 编码 padded 变量的值(在我的例子中是“0004”。所以最终输出看起来像

<td><img src="https://example.com/%200004%20.jpg"/></td>

我如何URL编码padded变量?

不幸的是,如果我这样做,它也会做同样的事情

<img src="https://example.com/{{padded}}.jpg"/>

我误解了 capture 的行为。 Capture 从字面上获取内容,就好像它们是渲染的一样,因此它将 }}{{ 之间的空格作为文字空格,然后对其进行 URL 编码。

捕获开始于},结束于{。所以当你捕获

{{'https://example.com/'}} {{ padded }} {{'.jpg'}}

这给出 |https://example.com/ 0004 .jpg|

当然,其中的 space 是 url 编码的。

尝试{{'https://example.com/'}}{{ padded }}{{'.jpg'}}