我想用一些变量来操纵Liquid / Jekyll的“ post_url”标签。这是我想做的两件事:
将结果存储到变量
我想将post_url的结果存储在一个变量中,目前,这不起作用:
{%- assign _page_url = post_url 2019-05-19-test -%}
这行之后_page_url为空。 :(
使用变量作为参数
但是,当我尝试使用变量作为参数时,就会出现主要问题。 _item.post是一个变量,其中包含指向正确帖子的字符串。
{%- post_url _item.post -%}
抛出异常:
液体异常:无法解析标记中帖子“ _item.post”的名称 'post_url'。确保帖子存在并且名称正确。
Jekyll :: Errors :: InvalidPostNameError:“ _ item.post”不包含 有效日期和/或标题。在/_layouts/page.html中 错误:无法解析标签“ post_url”中帖子“ _item.post”的名称。确保帖子存在并且名称正确。 Jekyll :: Errors :: InvalidPostNameError:'_item.post'不包含 有效日期和/或标题。 错误:运行jekyll build --trace以获得更多信息。
答案 0 :(得分:1)
由于post_url
是Liquid标记,因此您需要以首先执行该标记逻辑的方式包含它,以便它可以存储结果。在这些情况下,可以使用{% capture %}
代替{% assign %}
:
{%- capture _page_url -%}
{% post_url 2019-05-19-test %}
{%- endcapture -%}
关于将变量用作post_url
的参数,此标记当前无法实现。看tag's code,它从字面上获取标记中post_url
之后的所有内容,并尝试使用其定义的帖子结构来解析它,而类似include
tag的东西则具有检测变量的实际步骤并解决他们的价值。但是,看起来在Jekyll 4.0(see this PR)中是可能的。尽管不稳定,所以您现在可以使用pre-alpha version来获得此行为,因此您可能会在其他地方看到意外的行为。