跳到主要内容
  1. Skills/
  2. Hugo 使用指南/

正确管理页面的 description meta

·字数 1302·3 分钟
有悟方法 seo

在编制 html 网页文件时,html meta 是一项重要的信息内容,这些内容并不是直接服务于浏览者,而是服务于客户端程序,或者搜索引擎爬虫。其中有一项比较重要的信息项就是页面描述。在 gohugo 中,应该如何正确的生成这个内容呢?

<meta name="description" content="页面描述">

meta:description 是一个非常重要的信息项,相比于 meta:keywords,可能更加重要。它是用来描述整个页面的内容,往往是搜索引擎用来呈现搜索结果中链接下方的网页简介。所以一定要与网页的内容相匹配。

在必应搜索引擎中,对 meta:description 还有如下要求:

Meta Description 太长或太短

问题与什么有关?

搜索引擎爬网程序仅在搜索结果页面中显示该说明的前 150-160 个字符,因此如果说明过长,搜索者可能无法看到所有文本;如果说明过短,搜索引擎可能会添加在页面其他位置找到的文本内容。请注意,如果搜索引擎认为其他说明与用户搜索内容的相关性更高,则可能会显示其他说明,而非你编写的说明。

如何修复?

将页面源代码的 标记中的描述长度更改为介于 25 到 160 个字符之间。

gohugo 中的页面描述 #

gohugo 中,meta:description 信息跟页面内容一起管理,gohugo 为页面提供了两个与页面描述相关的属性,descriptionsummary,可以在内容文件的 front matter中来设置它们的值。

官方文档 是,是这样定义的:

.Description
the description for the page.
.Summary
a generated summary of the content for easily showing a snippet in a summary view. The breakpoint can be set manually by inserting <!--more--> at the appropriate place in the content page, or the summary can be written independent of the page text. See Content Summaries for more details.

从定义上可知,description 是一段固定的文字,由作者自行编写;summary 则是一个带有某些自动生成功能的属性。

这里重点说明下 summary生成规则。

相关的 官方介绍

summary 的值受以下规则影响,

  • 使用分割符号 <!--more-->,将文章开头到该分割符之间的内容全部作为 summary 的值
  • 在文章的 front matter 中设置 summary 属性,这个与 description 相似
  • 在没有分割符,front matter中又没有设置 summary 属性时,hugo 将文件开始的70个词做为 summary 的值。当然,如果是中文文章,需要在站点配置参数 hasCJKLanguage=true,如果想修改默认的70个单词数,可以在站点配置中修改参数summaryLength=想要的单词数
summaryLength = "20" # 设置为你想要的单词数
hasCJKLanguage = true

如果以上规则同时出现,那么 hugo 会按照优先级 分割符 -> front matter -> 计算字符数 来设置 summary 的值。

在模板中使用 description 和 summary #

上一节说明了如何管理 descriptionsummary 的值,那么如何将这些值应用到模板中并渲染到页面上。

这两个页面属性定义非常接近,如果没有必要,最好保持一种风格,以免内容多了以后变得不易维护。

下面介绍 youwu.today 中的方法。先来看一段模板:

<meta name="description" content="
{{- with .Description -}}
{{ . }}
{{- else -}}
    {{- .Summary -}}
{{- end -}}
">

有悟的网页模板逻辑,先看页面 front matter 是否设置了 description,若无,则取 summary 的值。这样每个页面内容仅须维护 summary 即可。而在页面 markdown 文件中,使用分割符来分割开头一小段意思完整的内容来作为 summary 的值。以后,如果需要特别说明 description,那么手工设置 front matter 就好,不然就使用文章开头的一小段。而 front mattersummary 变量保留为空,因为在这种情况下,已经显得是多余的。

列表页中,往往也会出现页面描述(摘要)。可以采用生成 meta:description 的方法来设置列表模板 list.html 中文章项的摘要。