如何在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
相关产品推荐
相关产品推荐

