如何添加一个新的Hugo静态页面?

44
从“入门指南”部分看,似乎应该可以工作,但实际上却不能。
hugo new site my-site
hugo new privacy.md
hugo server --watch --includeDrafts

curl -L localhost:1313/privacy/index.html
# 404 page not found
curl -L localhost:1313/privacy.html
# 404 page not found
curl -L localhost:1313/privacy/
# 404 page not found

我该如何添加新页面?


据我所知:创建它就像创建其他帖子一样,唯一的区别是它应该在“content”目录中。即不要将其放在“content/posts”目录中。 - mfaani
5个回答

46
这是一个最佳教程,介绍如何在 Hugo 上创建静态“落地页”:https://discuss.gohugo.io/t/creating-static-content-that-uses-partials/265/19?u=royston。基本上,您需要在 /content/ 中创建 .md 文件,并在前置元数据中添加 type: "page",然后为其创建自定义布局,例如在前置元数据中添加 layout: "simple-static",然后在 themes/<name>/layouts/page/ 中创建布局模板,例如,simple-static.html。然后,像往常一样使用所有的 partials,并使用 {{ .Content }} 从原始 .md 文件中调用内容。所有我的静态(落地)页面都使用此方法。
顺便说一下,我并没有使用 "hugo new" 命令,而是将 .md 文件克隆或复制模板到 "/content/" 目录中,并使用我的文本编辑器 "iA Writer" 打开它。但我也没有使用 Hugo 的 "server" 命令,而是使用改编的 npm-build-boilerplate 运行服务器和构建。

10
我认为这个过程有点复杂。但是感谢你指明了一个方向!=) - jamland
这应该是正确的答案,并且与 Hugo 的 2020 文档相一致。 - Naveen
1
这个可行,我刚刚检查过了。我在这上面花费了很多时间,感到有些羞愧。 - Konstantin Kozirev

24

在Hugo 0.13上刚刚测试通过:

hugo new site my-site
cd my-site
hugo new privacy.md
hugo server -w -D
curl -L localhost:1313/privacy/

注意:您必须使用主题或提供自己的布局模板才能得到除空白页面外的东西。当然,在privacy.md中使用一些Markdown语法也会让页面更漂亮。

请查看最新文档:http://gohugo.io/overview/introduction


为什么你需要 -w -d? - David Marciel
4
在使用Hugo 0.69.0版本时,我发现以下命令已经不再起作用:% curl -L localhost:1313/privacy/输出结果为:404页面未找到 - Lars Blumberg
2
请确保将草稿设置为“false”,以便页面显示。 - neric
1
如果您看到“404页面未找到”,请确保按照此帖子中的说明设置了“type:page”并具有“single.html”布局:https://dev59.com/D1YO5IYBdhLWcg3wL-vY - Andres
@neric,如果你在hugo server命令中使用了-D标志,那么你不需要设置draft: false,因为这将启用草稿的渲染。 - Lushawn
你必须使用 hugo new 吗?如果我已经有一个文件怎么办?我真的需要把它移开才能使用 hugo new,然后再移回来吗? - Martin

14

我有一个类似的需求,需要添加静态页面(在这种情况下是 aboutus )。 下面是实现的步骤:

  • 创建空文件content/aboutus/_index.md
  • 创建关于我们页面:layouts/section/aboutus.html

4
让你在“archetypes/default.md”中设定一些默认的正文内容。
# archetypes/default.md
+++
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
+++

layouts/_default/single.html 中,使用单个布局来呈现某些变量或内容。

# tags to render markdown content
<h1>{{ .Title }}</h1>
<p>{{ .Content }}</p>
<span>{{ .Params.date }}</span>

现在输入hugo new privacy.md,它将在content/privacy.md目录下创建一个新页面。

3

以“关于”为例:

# will create content/about.md
hugo new about.md

编辑about.md并添加最后2行,元数据/正文看起来像:

title: "About"
date: 2019-03-26
menu: "main"
weight: 50

那应该可以正常工作。


这个在菜单中有链接。但我也能在主页上看到它作为帖子。有什么办法可以删除它吗? - Ramesh
你必须使用 hugo new 吗?如果我已经有一个文件怎么办?我真的需要把它移开才能使用 hugo new,然后再移回来吗? - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接