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

如何在Jekyll中按字母顺序排序文章?解决endfor语法错误求助

解决Jekyll分类页面按标题排序的Liquid语法错误

我帮你定位到问题根源啦,你的代码里有两个关键错误,直接导致了这个Unknown tag 'endfor'的报错:

错误1:sort过滤器的语法错误

你在定义sorted_posts的时候,末尾多了一个多余的},而且排序字段的写法不对——sort过滤器需要接收字段名字符串,而不是post.title这种对象属性。正确的写法应该是sort: 'title'。

错误2:未使用排序后的变量

你已经定义了sorted_posts,但循环的时候还是用了原始的site.categories[category],等于白定义了排序变量;再加上前面的语法错误破坏了Liquid的解析结构,导致它找不到匹配的endfor标签。

修正后的完整代码

--- 
layout: page 
--- 

{% unless page.content == '' %} 
  {{ content }} 
{% endunless %} 

<ul class="posts-list">
  {% assign category = page.category | default: page.title %}
  {% assign sorted_posts = site.categories[category] | sort: 'title' %}
  {% for post in sorted_posts %}
    <li>
      <h3>
        <a href="{{ site.baseurl }}{{ post.url }}">
          {{ post.title }}
          <!-- <small>{{ post.date | date_to_string }}</small> -->
        </a>
      </h3>
    </li>
  {% endfor %}
</ul>

关键修改点说明

  • 移除了assign sorted_posts行末尾多余的}
  • 将sort: post.title改为sort: 'title',明确告诉Liquid按文章的title字段排序
  • 把循环对象从site.categories[category]改成sorted_posts,确保遍历的是按标题字母排序后的文章

现在重新运行jekyll build应该就能正常生成分类页面啦 😊

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:05:48