使用液体标签Jekyll的URL字符串插值

时间:2018-09-10 02:03:06

标签: jekyll liquid

我正在尝试让Jekyll动态生成链接。该链接用于CSS文件,但取决于正在呈现的页面。

即如果页面是联系页面,则应呈现mywebsite.com/lib/css/contact.css

我遇到的问题是,当我尝试嵌套液体标签时,它无法正确解析名称。似乎将整个字符串视为文字字符串,而不是解析名称。

我尝试了以下操作:

注意:layout.cssFile是一个页面变量,其中包含我要呈现的CSS文件的名称。

尝试1:

<link href="{{ lib/css/" | append:  layout.cssFile }} | relative_url }}" rel="stylesheet">

尝试2:

<link href="{{ "lib/css/{{ layout.cssFile }} | relative_url }}" rel="stylesheet"> 

尝试3:

{% assign cssPath="lib/css/{{layout.cssFile}}" %}
  <link href="{{ cssPath | relative_url }}" rel="stylesheet"> 

这些东西都不起作用。我该如何以一种易于阅读且符合我想要的简洁方式来编写它?

2 个答案:

答案 0 :(得分:2)

您不必在Liquid中使用双引号。单引号也一样。

<link href="{{ layout.cssFile | prepend: 'lib/css/' | append: '.css' | relative_url }}" />

答案 1 :(得分:0)

我找到了解决方案。但是,我不确定这是否是最佳解决方案。如果您有更好的解决方案,请在下面发布。

问题是我希望将双引号呈现到实际的生成文件中,因为它是href。此外,我还希望能够将以液体解析的变量作为URL的一部分。

解决方案是使用“追加”过滤器添加液体解析变量,然后在最后添加relative_url过滤器。

<link href="{{ "lib/css/" | append: layout.cssFile | append: ".css" | relative_url }}" 

等号后的第一个双引号标记将被渲染到生成的源文件中的双引号。匹配就是最后的双引号。

您看到的{{符号是液体标签的开头。后面的双引号允许路径lib/css/呈现为字符串。

注意,我使用了管道符号,并开始使用追加过滤器添加变量layout.cssFile,并将其与字符串连接。然后,我使用另一个追加过滤器将css扩展名添加到文件路径。

最后,我添加了relative_url过滤器,以确保无论链接环境如何,链接都可以正确呈现。我在本地计算机上对此进行了测试,我也希望它可以在线运行而无需进行手动更改。