如何在jekyll数据中获取嵌套列表的唯一值

如何在jekyll数据中获取嵌套列表的唯一值,jekyll,liquid,Jekyll,Liquid,我想使用jekyllsdata来存储指向站点的链接列表,其中可以对单个项目应用不同的标记: #_data/links.yml -标题:css技巧 网址:https://css-tricks.com 标签: -标签:css -标签:网格 -标题:css技巧2 网址:https://css-tricks.com2 标签: -标签:css -标签:flex 现在我想生成一个标签列表,以及一个按标签分组的链接列表 对于帖子,posts.tags将生成此列表,对于数据,这似乎不起作用 我试图使用{{si

我想使用jekylls
data
来存储指向站点的链接列表,其中可以对单个项目应用不同的标记:

#_data/links.yml
-标题:css技巧
网址:https://css-tricks.com
标签:
-标签:css
-标签:网格
-标题:css技巧2
网址:https://css-tricks.com2
标签:
-标签:css
-标签:flex
现在我想生成一个标签列表,以及一个按标签分组的链接列表

对于帖子,
posts.tags
将生成此列表,对于
数据,
这似乎不起作用

我试图使用
{{site.data.links | group_by_exp'tags',tags.tag'}
和其他
group_by
语句,如

{% assign grouped_res = site.data.links | group_by: 'tags' %}
{{ grouped_res }}
但这将按唯一的完整数组分组(伪符号:
[{tag:css},{tag:grid}]

虽然分组中添加了糖,但对于初学者来说,我已经很乐意加入并唯一化可用的标记了

在该示例中,如何获取标记列表


我看到有人要求它提供简单属性,而不是列表。

因此我找到了如何生成标记列表:

{% for link in site.data.links %}
  {% assign tags = tags | concat link.tags %}
{% endfor %}

{% assign all_tags = tags | uniq | map: "tag" | sort %}
但是,现在,当我想生成一个列表,其中链接按标签分组列出时,我看到的唯一解决方案是迭代标签列表(
all_tags
,并在该列表中迭代所有
link
s
,检查当前标签是否包含在标签列表中。我认为有一种更聪明、更高效的方法可以做到这一点(当然,静态站点生成器中的性能不是最重要的优化目标,但仍然…)

{% for tag in all_tags %}
### {{tag}}
  {% for link in site.data.links %}
    {% assign link_tag_names = link.tags | map :'tag' %}
    {% if link_tag_names contains tag %}
      {{ link.title }} ({{ tag }})
    {% endif %}
  {% endfor %}
{% endfor %}