如何在 Hugo 中为博客文章列表页面的标题添加页码

某些搜索引擎不喜欢网站中存在标题相同页面的情况……

目录

要将 在 Hugo 的博客文章列表页面标题中添加页码 添加到您的列表页面,需要修改您的列表模板

(通常是 layouts/blog/list.html 或 layouts/_default/list.html,有时甚至是 layouts/_default/baseof.html) 以检测您是否在分页页面上。然后, 根据需要动态调整标题,适当添加页码。

hugo-site-generator

常见描述

基本思路是使用 Hugo 的 内置分页器对象,并在页码大于 1 时条件性地渲染页码。以下是实现方法:

  1. 访问分页器
    在列表页面上使用 .Paginator 以处理分页。
  2. 检查当前页码
    使用 .Paginator.PageNumber 获取当前页码。
  3. 条件标题逻辑
    • 如果是第一页,显示常规标题 ({{ .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>

有用的链接