为Hugo单页主题新增页面遇问题,请求技术支援
嘿,我看你在配置hugo-split-theme的静态页面跳转时踩了几个典型的Hugo配置小坑,我帮你一步步理清楚怎么修正:
1. 先把链接URL改对——别指向content里的源文件
你在config.toml里把链接写成了/content/page/details.md,这是不对的:Hugo不会直接把content目录里的文件路径作为访问URL,而是会根据你的配置生成静态页面的访问路径。
根据你设置的permalinks规则page = "/:filename/",你的details.md文件会生成一个URL为/details/的页面(:filename指的是去掉后缀的文件名)。所以把链接的url改成这个路径就行:
[[params.links.list1.link]] text = "What, when, where" url = "/details/" # 改成Hugo生成后的页面URL
如果你想用你设置的slug: when-and-where作为URL路径,那把permalinks改成page = "/:slug/",这时候URL就会变成/when-and-where/,记得同步修改链接的url。
2. 修正页面元数据的YAML格式
你的details.md里的type = "page"用了等号,这不符合YAML的语法规范,得改成冒号:
--- title: When and Where author: '' date: '' slug: when-and-where categories: [] tags: [] type: "page" # 把等号换成冒号,保持YAML格式正确 --- test content here
YAML对格式要求很严格,这种小错误会导致Hugo解析页面时出问题。
3. 确认模板和本地预览的正确姿势
你的layout/page/page.html模板本身没大问题,不过可以加一点结构让页面更美观(可选):
{{ partial "header.html" . }} <div class="page-container"> <h1>{{ .Title }}</h1> {{ with .Params.author }} <p class="page-author">作者:{{ . }}</p> {{ end }} {{ if .Params.date }} <p class="page-date">{{ .Date.Format "2006/01/02" }}</p> {{ end }} <div class="page-content"> {{ .Content }} </div> </div> {{ partial "footer.html" . }}
然后在RStudio里,一定要用blogdown::serve_site()启动本地服务器来预览,不要直接点Markdown文件的预览。启动后访问默认的http://localhost:1313/,再点击链接就能正常跳转了。
4. 验证页面是否正确生成
你可以去项目根目录的public文件夹里看看,有没有生成details(或者when-and-where)文件夹,里面有没有index.html——如果有,说明页面已经生成成功,URL就是对应的路径。
其实最核心的问题就是链接指向了源文件而不是生成后的静态页面路径,再加上元数据的格式错误,修正这两个点之后应该就能正常跳转啦。
内容的提问来源于stack exchange,提问作者user2662391

