我正在尝试让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">
这些东西都不起作用。我该如何以一种易于阅读且符合我想要的简洁方式来编写它?
答案 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过滤器,以确保无论链接环境如何,链接都可以正确呈现。我在本地计算机上对此进行了测试,我也希望它可以在线运行而无需进行手动更改。