Jekyll分页配置问题:博客集合内容未渲染求助
Jekyll集合分页内容未渲染问题排查
1. 确认分页插件依赖
原生jekyll-paginate只支持posts,集合分页必须用jekyll-paginate-v2:
- 检查Gemfile是否包含:
gem "jekyll-paginate-v2" - 执行
bundle install安装后,在_config.yml启用插件:plugins: - jekyll-paginate-v2
2. 验证集合与分页核心配置
_config.yml里的集合和分页配置必须匹配:
- 集合要开启输出:
collections: blogs: output: true permalink: /blogs/:name/ - 分页要明确指定目标集合:
pagination: enabled: true collection: blogs # 必须和集合名称一致 per_page: 5 permalink: '/blogs/page/:num/' sort_field: 'date' sort_reverse: true
3. 检查分页页面的Front Matter
blogs/index.html的Front Matter必须开启分页并指定集合:
--- layout: default pagination: enabled: true collection: blogs ---
注意:页面必须放在根目录下的blogs子文件夹中,否则生成路径会错乱。
4. 修正布局文件的渲染逻辑
布局里不能直接用site.blogs,必须用分页插件提供的page.pagination.posts遍历当前页内容:
{% for post in page.pagination.posts %} <article> <h2><a href="{{ post.url }}">{{ post.title }}</a></h2> <p>{{ post.excerpt }}</p> <time>{{ post.date | date: "%Y-%m-%d" }}</time> </article> {% endfor %} <!-- 分页导航(可选) --> {% if page.pagination.total_pages > 1 %} <div class="pagination"> {% if page.pagination.previous_page %} <a href="{{ page.pagination.previous_page_path }}">上一页</a> {% endif %} <span>第 {{ page.pagination.current_page }} 页 / 共 {{ page.pagination.total_pages }} 页</span> {% if page.pagination.next_page %} <a href="{{ page.pagination.next_page_path }}">下一页</a> {% endif %} </div> {% endif %}
如果这里用site.blogs,要么不会分页,要么分页配置失效时直接无内容输出。
5. 检查集合文档的Front Matter
确保_blogs目录下的每篇博客都有完整的Front Matter,比如:
--- title: "我的第一篇博客" date: 2024-01-01 ---
如果缺少date字段,而分页配置里用了sort_field: 'date',会导致排序异常或无法加载数据。
6. 本地调试看日志
执行bundle exec jekyll serve --verbose,查看构建日志里的分页相关提示:
- 若出现
Pagination: Disabled for ...,说明分页配置未生效,检查Front Matter或_config.yml的语法 - 若提示集合路径错误,确认
_blogs目录存在且命名正确
内容的提问来源于stack exchange,提问作者quarks
相关产品推荐
相关产品推荐

