如何在Jekyll首页表格中展示指定页面的Front Matter数据?
实现站点页面Front Matter信息在首页表格展示的方案
嘿,这个需求在静态站点搭建里其实挺常见的,我给你拆解下具体怎么实现,以最常用的Jekyll为例(其他生成器思路类似,只是语法略有不同):
1. 给目标页面添加识别标记(可选但推荐)
为了避免把所有页面都塞进表格,你可以给需要展示的页面在Front Matter里加个专属标记,比如show_on_home: true。举个例子,某个页面的Front Matter会是这样:
--- title: "用户指南" status: "已发布" show_on_home: true ---
2. 在首页模板中编写循环渲染逻辑
打开首页的模板文件(一般是index.html或者index.md),用Liquid模板语法编写表格和循环逻辑,自动拉取符合条件的页面信息:
<table> <tr> <th>Page title</th> <th>Page status</th> </tr> {% for page in site.pages %} {% if page.show_on_home %} <tr> <td>{{ page.title }}</td> <td>{{ page.status }}</td> </tr> {% endif %} {% endfor %} </table>
3. 自定义筛选规则(按需调整)
如果你不想加标记,而是想按特定目录/类型筛选页面,比如只展示_docs目录下的文档,直接修改循环对象就行:
<table> <tr> <th>Page title</th> <th>Page status</th> </tr> {% for page in site.docs %} <tr> <td>{{ page.title }}</td> <td>{{ page.status }}</td> </tr> {% endfor %} </table>
4. 其他静态站点生成器的适配(比如Hugo)
如果用的是Hugo,语法会换成Go模板风格,思路还是一样的:
<table> <tr> <th>Page title</th> <th>Page status</th> </tr> {{ range where .Site.Pages ".Params.show_on_home" true }} <tr> <td>{{ .Title }}</td> <td>{{ .Params.status }}</td> </tr> {{ end }} </table>
注意事项
- 确保所有目标页面的Front Matter里都有
title和status字段,不然表格对应位置会显示为空; - 如果站点有分页或者特殊页面(比如404),记得在筛选条件里排除掉,避免干扰表格内容。
内容的提问来源于stack exchange,提问作者Andrei Deinichenko
相关产品推荐
相关产品推荐

