You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在11ty中全局实现标签分类下文章按字母顺序排序

解决方案:全局配置+标签模板联动实现需求

你当前的问题核心在于,postsAscending集合是把所有符合路径的文章全部聚合后排序,所以不管哪个标签页面调用它,都会输出所有文章。要实现「按标签过滤+全局统一字母排序」的需求,不需要为每个标签单独配置,只需要把排序逻辑全局统一,同时在标签模板中针对当前标签的文章集合应用这个排序即可,下面分两种方式实现:

方式一:用全局自定义过滤器统一排序逻辑(推荐)

这种方式把排序逻辑放在全局配置里,所有模板都能复用,完全符合你想要的「全局配置」诉求:

  1. 修改你的11ty配置文件,把原来的集合改成自定义过滤器(如果需要保留全文章排序集合,也可以同时保留):
// 新增全局排序过滤器,复用你原来的排序逻辑
eleventyConfig.addFilter("sortPostsByTitleDesc", (collection) => {
  // 复制集合避免修改原数据,然后按标题降序排序
  return [...collection].sort((a, b) => {
    if (a.data.title > b.data.title) return -1;
    if (a.data.title < b.data.title) return 1;
    return 0;
  });
});

// 保留全文章排序集合(比如首页、全文章页面需要用到时)
eleventyConfig.addCollection("postsAscending", (collection) => {
  return collection.getFilteredByGlob("gallery/*.md", "blog/*.md")
    .sort((a, b) => {
      if (a.data.title > b.data.title) return -1;
      if (a.data.title < b.data.title) return 1;
      return 0;
    });
});
  1. 在你的标签模板(比如tag.liquid)中,替换原来的集合调用逻辑:
{% comment %} 精准获取当前标签对应的所有文章集合 {% endcomment %}
{% assign currentTagPosts = collections[page.tag] %}
{% comment %} 应用全局定义的排序过滤器 {% endcomment %}
{% assign sortedTagPosts = currentTagPosts | sortPostsByTitleDesc %}

{% for post in sortedTagPosts %}
  <!-- 这里写你的文章渲染代码,比如标题、链接、摘要等 -->
  <article>
    <h2><a href="{{ post.url }}">{{ post.data.title }}</a></h2>
    <p>{{ post.data.excerpt }}</p>
  </article>
{% endfor %}

方式二:直接在模板中用Liquid内置过滤器排序

如果你不想新增全局过滤器,也可以直接用Liquid自带的sort过滤器快速实现,逻辑更轻量:

{% comment %} 获取当前标签文章,并按标题降序排序(和你原来的逻辑一致) {% endcomment %}
{% assign sortedTagPosts = collections[page.tag] | sort: 'data.title' | reverse %}

{% for post in sortedTagPosts %}
  <!-- 文章渲染代码 -->
{% endfor %}

这里sort: 'data.title'默认是按标题升序排列,reverse反转后就和你原来的降序排序逻辑完全匹配了。

关键原理说明

  • 11ty默认会为每一个标签生成专属集合:比如你在文章的front matter里写了tags: [photography, tech],那么collections.photography就包含所有带photography标签的文章,collections.tech同理。
  • 你原来的postsAscending是跨路径的全文章聚合集合,自然无法实现标签过滤;而通过collections[page.tag]可以精准获取当前标签页对应的文章,再套用上全局统一的排序逻辑,就完美达成了你的需求。

内容的提问来源于stack exchange,提问作者Neo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 06:37:44