【问题标题】:Use "link" and "post_url" with variables将“link”和“post_url”与变量一起使用
【发布时间】:2019-05-19 15:35:07
【问题描述】:

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

【问题讨论】:

    标签: jekyll liquid


    【解决方案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 获得此行为,但它不稳定,因此您可能会在其他地方看到意外行为。

    【讨论】:

      【解决方案2】:

      现在 Jekyll 4.0 已经发布,您可以在 {% %} 标记中使用 {{}} 来使用变量:

      {%- post_url {{ _item.post }} -%}
      

      【讨论】:

        猜你喜欢
        • 2021-05-19
        • 2014-09-05
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 2015-04-18
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        相关资源
        最近更新 更多