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
.
为了得到一个空数组你可以:
- 在_config.yml中设置一个
empty_array: []
并像这样使用它:{% assign tag_array = site.empty_array %}
或
- 创建数组 "on the fly" 具有:
{% assign tag_array = "" | split: "/" %}
{{ tag_array | inspect }}
现在 returns []
.
jekyll 中的字符串连接
{% assign link = <a href="/tag/{{tag}}">{{tag}}</a> %}
在液体中不起作用。 {{ link | inspect }}
returns nil
.
如果你想连接一个字符串,你可以使用:
prepend
或 append
liquid filter 如 {% assign link = '<a href="/tag/' | append: tag | append: '">' | append: tag | append: '</a>' %}
replace
像这样过滤:
{% assign link_template = '<a href="/tag/%%placeholder%%">%%placeholder%%</a>' %}
{% assign link = link_template | replace: "%%placeholder%%", tag %}
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: ', ' }}
我正在尝试获取帖子标签并生成以逗号分隔的链接列表,但似乎无法弄清楚如何完成它。以下是我所拥有的,也许我没有正确使用 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
.
为了得到一个空数组你可以:
- 在_config.yml中设置一个
empty_array: []
并像这样使用它:{% assign tag_array = site.empty_array %}
或
- 创建数组 "on the fly" 具有:
{% assign tag_array = "" | split: "/" %}
{{ tag_array | inspect }}
现在 returns []
.
jekyll 中的字符串连接
{% assign link = <a href="/tag/{{tag}}">{{tag}}</a> %}
在液体中不起作用。 {{ link | inspect }}
returns nil
.
如果你想连接一个字符串,你可以使用:
prepend
或append
liquid filter 如{% assign link = '<a href="/tag/' | append: tag | append: '">' | append: tag | append: '</a>' %}
replace
像这样过滤:{% assign link_template = '<a href="/tag/%%placeholder%%">%%placeholder%%</a>' %}
{% assign link = link_template | replace: "%%placeholder%%", tag %}
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: ', ' }}