将“链接”和“ post_url”与变量一起使用

时间:2019-05-19 15:35:07

标签: jekyll liquid

我想用一些变量来操纵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以获得更多信息。

1 个答案:

答案 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来获得此行为,因此您可能会在其他地方看到意外的行为。