菜单

内部模板

相关源文件

内部模板是 Hugo 自带的预构建、即用型模板,用于提供常见的网站功能。它们可以处理社交媒体集成、SEO 元数据、评论系统和分页等任务,而无需您从头开始实现这些功能。

与您在网站布局目录中创建的常规模板不同,内部模板嵌入在 Hugo 的源代码中,可以从您的任何模板中调用。

有关您可以在模板中使用的常规模板函数的详细信息,请参阅模板函数

内部模板的工作原理

内部模板使用 template 动作调用,路径前缀为 _internal/

来源: hugolib/template_test.go724-725

覆盖内部模板

您可以通过在网站的 layouts/_internal/ 目录中创建同名文件来覆盖任何内部模板。Hugo 的模板查找系统将优先使用您的自定义模板而不是内置模板。

来源: hugolib/template_test.go718-731

可用的内部模板

SEO 模板

Hugo 提供了三个主要的 SEO 相关内部模板

Twitter Cards(_internal/twitter_cards.html

生成 Twitter Cards 元数据标签,允许您将富媒体附加到链接到您内容的推文。

示例输出

Open Graph(_internal/opengraph.html

为您的页面添加 Open Graph 协议元数据,以便更好地与 Facebook 等社交媒体平台集成。

示例输出

Schema.org(_internal/schema.html

使用 Schema.org 词汇表添加结构化数据标记,以改善搜索引擎对您内容的理解和显示方式。

示例输出

来源: hugolib/embedded_templates_test.go20-96

SEO 模板中的图片处理

SEO 模板在查找要包含在元数据中的图片时遵循特定的顺序

  1. 在 front matter 中定义的特定页面图片(images 参数)
  2. 具有特色图片角色的资源(例如,页面包中的 featured-sunset.jpg
  3. 在站点参数中定义的站点范围图片

来源: hugolib/embedded_templates_test.go20-96

评论模板

Disqus(_internal/disqus.html

将 Disqus 评论集成到您的网站中。要使用它,请在您的站点配置中设置您的 Disqus 短名称。

用途

来源: docs/content/en/content-management/comments.md9-38

分页模板(_internal/pagination.html

为 Hugo 中的内容列表提供标准化的分页方式。分页模板支持不同的格式

  • default:具有第一页、上一页、下一页和最后一页按钮的完整分页功能
  • terse:更简单的分页格式,导航元素较少

基本用法

使用自定义格式

默认格式的示例输出

来源: hugolib/embedded_templates_test.go98-135

模板上下文和数据

内部模板通常期望上下文(在模板调用中通常作为 . 提供)是 Page 对象。这使得模板可以访问

  • 页面元数据(标题、描述、日期)
  • 页面资源(图片)
  • 站点配置

一些模板,例如分页模板,可以接受作为字典传递的其他参数

来源: hugolib/embedded_templates_test.go127-134

实现细节

内部模板是 Hugo 二进制文件自带的嵌入式 Go 模板。当您调用内部模板时,Hugo 会执行以下过程:

  1. 检查用户定义的覆盖是否存在于 layouts/_internal/
  2. 如果不存在,则使用 Hugo 源代码中的内置模板
  3. 使用提供的上下文执行模板

该系统在便利性(使用预构建模板)和定制性(能够根据需要覆盖它们)之间取得了平衡。

来源: hugolib/template_test.go718-731

最佳实践

  1. 对标准功能使用内部模板:对于 SEO 元数据、评论和分页等常见功能,内部模板提供了经过充分测试的实现。

  2. 仅在必要时进行覆盖:仅当您需要与默认行为不同的功能时,才创建内部模板的自定义版本。

  3. 检查模板文档:一些内部模板具有可以在站点配置或 front matter 中设置的配置选项。

  4. 检查生成的输出:实现内部模板后,检查生成的 HTML 以确保其产生预期的输出。