通过使用.Summary 页面变量, Hugo生成内容摘要,可以在摘要视图中作为短摘要使用。

摘要截取方式 Summary Splitting Options

  • 自动截取摘要 Automatic Summary Split
  • 手工截取摘要 Manual Summary Split
  • 前言设定设置摘要 Front Matter Summary

在摘要上附上到达原文的链接是很自然的想法,一个常见的设计模式是以"阅读更多…“按钮的形式构建这个链接. 参考页面变量.RelPermalink, .Permalink, 和 .Truncated文档.

自动截取摘要

缺省情况下, Hugo自动提取内容的头70个词作为内容摘要并且保存在 .Summary 页面变量中,以供模板使用. 可以通过在站点配置文件中设定summaryLength来定制这个摘要长度.

可以使用如plainifysafeHTML等函数定制摘要中HTML标签的加载方式.

Hugo自动截取的摘要设置使用的是词数,也就是被一个或者多个连续空白字符分隔的文本数。如果使用中日韩语言,并希望Hugo自动截取摘要表现正确, 请在站点配置中中设置 hasCJKLanguagetrue

手动截取摘要 Manual Summary Splitting

另外一种方式,您可以在文章中添加 <!--more-->作为文本中摘要分隔.

对于 Org mode content文档, 使用 # more 作为文章中分割摘要和其余部分的分割

在摘要分隔前的内容将作为内容的摘要,并存储在页面变量.Summary 中并且保存所有HTML格式不变.

Pros 支持
自由,改进的显示。所有HTML标签和格式都被保留
Cons 反对
内容作者需要更多工作。他们需要敲键盘输入<!--more--> ( # moreorg content文档中)在每个内容文件中. 这个可以通过在原型archetype中在前言设定后面添加摘要分隔来自动化完成。

注意正确输入<!--more--> 都是小写并且没有空白。

前言设定摘要 Front Matter Summary

您可能想内容摘要是与文章开头文本不同的一些内容。这种需求可以通过在文章的front matter部分提供一个不同摘要文本的summary变量来实现。

Pros
完全和文章内容独立。标记可以用在摘要中。
Cons
内容作者需要写完全不同的一段文本

摘要选择顺序

由于摘要可以通过好几种方式提供,理解Hugo摘要选择并通过.Summary变量返回摘要的顺序很有帮助。 正如下面这样:

  1. 如果文章中存在<!--more-->摘要分隔符, 则该摘要文本直到分隔符,将按照手动摘要拆分方法获得
  2. 如果文章的前言设定中包含summary 变量,变量的值通过前言设定摘要法获得
  3. 文章开始的文本内容会被自动摘要截取法使用

如果同时具有<!--more--> 和前言设定的summary, 那么Hugo选择 手动摘要拆分方法选择<!--more--> 之前的文字作为摘要

例子: 具有摘要的前10片文章

用下面代码可以显示内容摘要,使用下面代码短,比如用在块模板

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{{ range first 10 .Pages }}
    <article>
      <!-- this <div> includes the title summary -->
      <div>
        <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
        {{ .Summary }}
      </div>
      {{ if .Truncated }}
      <!-- This <div> includes a read more link, but only if the summary is truncated... -->
      <div>
        <a href="{{ .RelPermalink }}">Read More…</a>
      </div>
      {{ end }}
    </article>
{{ end }}