如何在 Hugo 中为博客文章列表页面的标题添加页码
某些搜索引擎不喜欢网站中存在标题相同页面的情况……
目录
要将 在 Hugo 的博客文章列表页面标题中添加页码 添加到您的列表页面,需要修改您的列表模板
(通常是 layouts/blog/list.html 或 layouts/_default/list.html,有时甚至是 layouts/_default/baseof.html) 以检测您是否在分页页面上。然后, 根据需要动态调整标题,适当添加页码。
常见描述
基本思路是使用 Hugo 的 内置分页器对象,并在页码大于 1 时条件性地渲染页码。以下是实现方法:
- 访问分页器:
在列表页面上使用.Paginator
以处理分页。 - 检查当前页码:
使用.Paginator.PageNumber
获取当前页码。 - 条件标题逻辑:
- 如果是第一页,显示常规标题 (
{{ .Title }}
)。 - 如果是第二页或更高页码,将
" - 第 X 页"
添加到标题中。
- 如果是第一页,显示常规标题 (
示例 Hugo 模板代码(适用于您的 list.html 部分,或 baseof.html/layouts 中的 `` 标签):
{{ .Title }}{{ if gt .Paginator.PageNumber 1 }} - 第 {{ .Paginator.PageNumber }} 页{{ end }}
或在您的实际页面标记中:
{{ .Title }}{{ if gt .Paginator.PageNumber 1 }} - 第 {{ .Paginator.PageNumber }} 页{{ end }}
注意事项:
- 这适用于分页列表页面(如分类、标签等),因为
.Paginator
是可用的。 .Paginator.PageNumber
返回当前页码。- 仅在后续页面中添加“第 X 页”,而不是第一页。
参考资料:
- Hugo 的列表和分页指南显示
.Paginator.Project
和动态标题是推荐的方式。 - 根据您希望在浏览器标签(即
<title>
)中还是在页面标题中显示页码,调整位置。
如果您希望在 HTML <title>
元素中显示页码以提高 SEO,将上述逻辑放在 HTML 头部的适当位置(通常为 layouts/_default/baseof.html)。对于视觉页面标题,请将其放在输出部分标题的位置。
没有官方的短代码用于此功能 - 它是通过直接在您的布局中使用 Hugo 模板设置的模式。
MainRoad 修改
本网站目前使用的是 Mainroad 主题。 为了提高此网站的SEO,我已修复了博客文章索引页面的标题生成方式,如下所示:
<title>{{ block "title" . }}{{ if .IsHome }}{{ .Site.Title }}{{ if and (eq .Kind "home") .Paginator (gt .Paginator.PageNumber 1) }} - 第 {{ .Paginator.PageNumber }} 页{{ end }}{{ else }}{{ .Title }}{{ if and (in (slice "section" "taxonomy" "term") .Kind) .Paginator (gt .Paginator.PageNumber 1) }} - 第 {{ .Paginator.PageNumber }} 页{{ end }} - {{ .Site.Title }}{{ end }}{{ end }}</title>