Jekyll 中的动态链接列表

List of Dynamic Links in Jekyll

我正在尝试获取帖子标签并生成以逗号分隔的链接列表,但似乎无法弄清楚如何完成它。以下是我所拥有的,也许我没有正确使用 Jekyll 的数组?

{% assign tag_array = [] %}
    {% for tag in post.tags %}
        {% assign tag_array = tag_array | push: '<a href="/tag/{{tag}}">{{tag}}</a>' %}
    {% endfor %}
{{ tag_array | join: ', ' }}
  • 更新

迭代for循环,如果不是最后一次迭代则生成一个逗号,并捕获输出:

{% capture tagscommas %}
{% for tag in page.tags %}
    <a href="/tag/{{tag}}">{{tag}}</a>
    {% unless forloop.last %},{% endunless %}
{% endfor %}
{% endcapture %}

{{tagscommas}}

如果你想避免带有换行符的输出,只需将所有代码放在一行中,直到 jekyll 使用不会生成空行的新 {%- 标签。

如果您不介意在变量中输出,只需使用内部 for 循环在遍历标记数组时直接显示链接。

编辑后的答案:

这里有两个问题:

在 jekyll 中生成一个空数组

{% assign tag_array = [] %} 什么都不做。

{{ tag_array | inspect }} returns nil,并在 nil 中推送(如 {% assign tag_array = tag_array | push: 'anything' %})总是 returns nil.

为了得到一个空数组你可以:

  1. _config.yml中设置一个empty_array: []并像这样使用它:{% assign tag_array = site.empty_array %}

  1. 创建数组 "on the fly" 具有:{% assign tag_array = "" | split: "/" %}

{{ tag_array | inspect }} 现在 returns [].

jekyll 中的字符串连接

{% assign link = <a href="/tag/{{tag}}">{{tag}}</a> %} 在液体中不起作用。 {{ link | inspect }} returns nil.

如果你想连接一个字符串,你可以使用:

  1. prependappend liquid filter{% assign link = '<a href="/tag/' | append: tag | append: '">' | append: tag | append: '</a>' %}

  2. replace 像这样过滤: {% assign link_template = '<a href="/tag/%%placeholder%%">%%placeholder%%</a>' %} {% assign link = link_template | replace: "%%placeholder%%", tag %}

  3. capture 标签如下:{% capture link %}<a href="/tag/{{ tag }}">{{ tag }}</a>{% endcapture %}

现在可以使用了:

{% assign tag_array = "" | split: "/" %}
{% for tag in post.tags %}
  {% capture link %}<a href="/tag/{{ tag }}">{{ tag }}</a>{% endcapture %}
  {% assign tag_array = tag_array | push: link %}
{% endfor %}
{{ tag_array | join: ', ' }}