如何在jekyll数据中获取嵌套列表的唯一值
我想使用jekylls如何在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
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 %}