HUGO 中文文档

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
gohugoio Star
  • 关于
    • 本节内容
    • 简介
    • 特性
    • 隐私
    • 安全
    • 许可证
  • 安装
    • 本节内容
    • macOS
    • Linux
    • Windows
    • BSD
  • 快速上手
    • 本节内容
    • 快速入门
    • 基本用法
    • 目录结构
    • 配置
    • 配置标记
    • 术语表
    • 配置构建
    • 外部学习资源
  • 快速参考
    • 本节内容
    • 表情符号
    • 函数
    • 方法
    • 页面集合
  • 内容管理
    • 本节内容
    • 组织
    • 页面包
    • 内容格式
    • Front matter (前置 matter)
    • 构建选项
    • 页面资源
    • 图片处理
    • 短代码
    • 相关内容
    • 章节
    • 内容类型
    • 原型
    • 分类法
    • 摘要
    • 链接和交叉引用
    • URL 管理
    • 菜单
    • 评论
    • 多语言
    • Markdown 属性
    • 语法高亮
    • 图表
    • 数学公式
    • 数据源
    • 内容适配器
  • 模板
    • 本节内容
    • 简介
    • 模板类型
    • 查找顺序
    • 基模板
    • 首页模板
    • 单个模板
    • 章节模板
    • 分类模板
    • 术语模板
    • 局部模板
    • 内容视图模板
    • 短代码模板
    • 站点地图模板
    • RSS 模板
    • 404 模板
    • robots.txt 模板
    • 菜单
    • 分页
    • 内嵌模板
    • 自定义输出格式
  • 函数
    • 本节内容
    • css
    • fmt
    • go 模板
    • hugo
    • js
    • lang
    • openapi3
    • os
    • urls
    • 全局
    • 加密
    • 反射
    • 变形
    • 变换
    • 哈希
    • 图像
    • 图表函数
    • 字符串
    • 安全函数
    • 局部模板函数
    • 数学
    • 数据
    • 时间
    • 模板
    • 比较
    • 类型转换
    • 编码
    • 调试
    • 资源
    • 路径
    • 集合
  • 方法
    • 本节内容
    • Duration
    • Menu
    • Page
    • Pager
    • Resource
    • Shortcode
    • Site
    • Taxonomy
    • Time
    • 菜单项
    • 页面
  • 渲染钩子
    • 本节内容
    • 简介
    • 块引用
    • 代码块
    • 标题
    • Images
    • 链接
    • Passthrough
    • 表格
  • Hugo 模块
    • 本节内容
    • 配置 Hugo 模块
    • 使用 Hugo 模块
    • 主题组件
  • Hugo 管道
    • 本节内容
    • 简介
    • 将 Sass 编译为 CSS
    • PostCSS
    • PostProcess
    • JavaScript 构建
    • 资源压缩
    • 连接资产
    • 指纹和 SRI 哈希
    • 从字符串创建资源
    • 从模板创建资源
  • 命令行界面
  • 故障排除
    • 本节内容
    • Audit
    • 日志记录
    • 检查
    • 弃用
    • 性能
    • FAQs
  • 开发者工具
    • 本节内容
    • 编辑器插件
    • 前端
    • Search
    • 迁移
    • 其他项目
  • 托管和部署
    • 本节内容
    • Hugo 部署
    • 使用 Rclone 部署
    • 使用 Rsync 部署
    • 在 21YunBox 上托管
    • 在 AWS Amplify 上托管
    • 在 Cloudflare Pages 上托管
    • 在 Firebase 上托管
    • 在 GitLab Pages 上托管
    • 在 Netlify 上托管
    • 在 Render 上托管
    • 托管在 Azure 静态 Web 应用上
    • 托管在 GitHub Pages 上
    • 托管在 KeyCDN 上
  • 贡献
    • 本节内容
    • 开发
    • 文档
    • 主题
  • 维护
CONTENT MANAGEMENT

短代码

短代码是内容文件中调用内置或自定义模板的简单代码片段。

什么是短代码

Hugo 偏爱 Markdown,因为它具有简单的内容格式,但有时 Markdown 也力不从心。内容作者常常被迫在 Markdown 内容中添加原始 HTML(例如视频 <iframe> )。我们认为这与 Markdown 语法简洁优雅的特性相矛盾。

Hugo 创建了 短代码 来规避这些限制。

短代码是内容文件中一个简单的代码片段,Hugo 将使用预定义的模板对其进行渲染。请注意,短代码在模板文件中不起作用。如果您需要短代码提供的这种即插即用功能,但在模板中使用,则很可能需要使用 局部模板 。

除了更简洁的 Markdown 之外,还可以随时更新短代码以反映新的类、技术或标准。在站点生成时,Hugo 短代码将轻松合并您的更改。您可以避免可能很复杂的查找和替换操作。

使用短代码

在您的内容文件中,可以通过调用 {{% shortcodename arguments %}} 来调用短代码。短代码参数用空格分隔,包含内部空格的参数必须用引号括起来。

短代码声明中的第一个词始终是短代码的名称。参数在名称之后。根据短代码的定义方式,参数可以是命名的、位置的或两者兼有,尽管您不能在一个调用中混合参数类型。命名参数的格式模仿 HTML,格式为 name="value" 。

某些短代码使用或需要闭合短代码。与 HTML 一样,开头和结尾的短代码(仅名称)匹配,结尾声明前面加一个斜杠。

以下是两个配对短代码的示例:

{{% mdshortcode %}}Stuff to `process` in the *center*.{{% /mdshortcode %}}
{{< highlight go >}} A bunch of code here {{< /highlight >}}

上面的示例使用了两种不同的分隔符,区别在于第一个示例使用 % 字符,第二个示例使用 <> 字符。

带有原始字符串参数的短代码

您可以使用原始字符串文字将多行作为参数传递给短代码:

{{<  myshortcode `This is some <b>HTML</b>,
and a new line with a "quoted string".` >}}

使用 Markdown 的短代码

使用 % 作为最外层分隔符的短代码将在发送到内容渲染器时完全渲染。这意味着短代码的渲染输出可以成为页面目录、脚注等的一部分。

不使用 Markdown 的短代码

< 字符表示短代码的内部内容不需要进一步渲染。通常,不使用 Markdown 的短代码包含内部 HTML:

{{< myshortcode >}}<p>Hello <strong>World!</strong></p>{{< /myshortcode >}}

嵌套短代码

您可以通过创建利用 .Parent 方法的自定义模板,在其他短代码中调用短代码。 .Parent 允许您检查调用短代码的上下文。请参阅 短代码模板 。

嵌入式短代码

根据需要使用这些嵌入式短代码。

comment

New in v0.137.1

要覆盖 Hugo 的嵌入式 comment 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

使用 comment 短代码在 Markdown 中包含注释。Hugo 在渲染站点时会排除封装的文本。

示例用法:

{{% comment %}} TODO: 重写下面的段落。 {{% /comment %}}

虽然您可以使用 {{< >}} 表示法调用此短代码,但在计算上,使用上面所示的 {{% %}} 表示法调用它效率更高。

details

New in v0.140.0

要覆盖 Hugo 的嵌入式 details 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

使用 details 短代码创建 details HTML 元素。例如:

{{< details summary="See the details" >}}
This is a **bold** word.
{{< /details >}}

Hugo 将其渲染为:

<details>
  <summary>See the details</summary>
  <p>This is a <strong>bold</strong> word.</p>
</details>

details 短代码接受以下命名参数:

summary
(string) 从 Markdown 渲染到 HTML 的子 summary 元素的内容。默认为 Details 。
open
(bool) 是否最初显示 details 元素的内容。默认为 false 。
class
(string) 元素的 class 属性的值。
name
(string) 元素的 name 属性的值。
title
(string) 元素的 title 属性的值。

figure

要覆盖 Hugo 的嵌入式 figure 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

figure 短代码可以使用以下命名参数:

src
要显示的图像的 URL。
link
如果需要将图像超链接,则为目标的 URL。
target
如果设置了 link 参数,则为 URL 的可选 target 属性。
rel
如果设置了 link 参数,则为 URL 的可选 rel 属性。
alt
如果无法显示图像,则为图像的替代文本。
title
图像标题。
caption
图像标题。 caption 值中的 Markdown 将被渲染。
class
HTML figure 标记的 class 属性。
height
图像的 height 属性。
width
图像的 width 属性。
loading
图像的 loading 属性。
attr
图像署名文本。 attr 值中的 Markdown 将被渲染。
attrlink
如果需要将署名文本超链接,则为目标的 URL。

示例用法:

{{< figure src="elephant.jpg" title="An elephant at sunset" >}}

渲染结果:

<figure>
  <img src="elephant.jpg">
  <figcaption><h4>An elephant at sunset</h4></figcaption>
</figure>

gist

要覆盖 Hugo 的嵌入式 gist 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

要显示具有此 URL 的 GitHub gist :

https://gist.github.com/user/50a7482715eac222e230d1e64dd9a89b

在 Markdown 中包含此内容:

{{< gist user 50a7482715eac222e230d1e64dd9a89b >}}

这将按文件名以字母顺序显示 gist 中的所有文件。

要显示 gist 中的特定文件:

{{< gist user 23932424365401ffa5e9d9810102a477 list.html >}}

渲染结果:

highlight

要覆盖 Hugo 的嵌入式 highlight 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

要显示突出显示的代码示例:

{{< highlight go-html-template >}}
{{ range .Pages }}
  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
{{< /highlight >}}

渲染结果:

{{ range .Pages }}
  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}

要指定一个或多个 突出显示选项 ,请包含一个用引号括起来的、逗号分隔的列表:

{{< highlight go-html-template "lineNos=inline, lineNoStart=42" >}}
{{ range .Pages }}
  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
{{< /highlight >}}

渲染结果:

42{{ range .Pages }}
43  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
44{{ end }}

instagram

要覆盖 Hugo 的嵌入式 instagram 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

要显示具有此 URL 的 Instagram 帖子:

https://www.instagram.com/p/CxOWiQNP2MO/

在 Markdown 中包含此内容:

{{< instagram CxOWiQNP2MO >}}

渲染结果:

View this post on Instagram

param

要覆盖 Hugo 的嵌入式 param 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

param 短代码渲染页面前题字中的参数,并回退到同名站点参数。如果参数不存在,短代码将引发错误。

示例用法:

{{< param testparam >}}

通过链接访问嵌套值:

{{< param my.nested.param >}}

ref

要覆盖 Hugo 的嵌入式 ref 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

调用此短代码时,始终使用 {{% %}} 表示法。

ref 短代码返回给定页面引用的永久链接。

示例用法:

[Post 1]({{% ref "/posts/post-1" %}})
[Post 1]({{% ref "/posts/post-1.md" %}})
[Post 1]({{% ref "/posts/post-1#foo" %}})
[Post 1]({{% ref "/posts/post-1.md#foo" %}})

渲染结果:

<a href="http://example.org/posts/post-1/">Post 1</a>
<a href="http://example.org/posts/post-1/">Post 1</a>
<a href="http://example.org/posts/post-1/#foo">Post 1</a>
<a href="http://example.org/posts/post-1/#foo">Post 1</a>

relref

要覆盖 Hugo 的嵌入式 relref 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

调用此短代码时,始终使用 {{% %}} 表示法。

relref 短代码返回给定页面引用的永久链接。

示例用法:

[Post 1]({{% relref "/posts/post-1" %}})
[Post 1]({{% relref "/posts/post-1.md" %}})
[Post 1]({{% relref "/posts/post-1#foo" %}})
[Post 1]({{% relref "/posts/post-1.md#foo" %}})

渲染结果:

<a href="/posts/post-1/">Post 1</a>
<a href="/posts/post-1/">Post 1</a>
<a href="/posts/post-1/#foo">Post 1</a>
<a href="/posts/post-1/#foo">Post 1</a>

twitter

要覆盖 Hugo 的嵌入式 twitter 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

您可以使用其 tweet 别名来调用 twitter 短代码。

要显示具有此 URL 的 Twitter 帖子:

https://x.com/SanDiegoZoo/status/1453110110599868418

在 Markdown 中包含此内容:

{{< twitter user="SanDiegoZoo" id="1453110110599868418" >}}

渲染结果:

Owl bet you'll lose this staring contest 🦉 pic.twitter.com/eJh4f2zncC

— San Diego Zoo Wildlife Alliance (@sandiegozoo) October 26, 2021

vimeo

要覆盖 Hugo 的嵌入式 vimeo 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

要显示具有此 URL 的 Vimeo 视频:

https://vimeo.com/channels/staffpicks/55073825

在 Markdown 中包含此内容:

{{< vimeo 55073825 >}}

渲染结果:

如果您想进一步自定义视觉样式,请在调用短代码时添加 class 参数。新的 class 将添加到包装 <iframe> 的 <div> 中,并将删除内联样式。请注意,您也需要将 id 作为命名参数来传递。您还可以使用 title 为 Vimeo 视频添加描述性标题。

{{< vimeo id="146022717" class="my-vimeo-wrapper-class" title="My vimeo video" >}}

youtube

要覆盖 Hugo 的嵌入式 youtube 短代码,请将 源代码 复制到 layouts/shortcodes 目录中同名文件。

要显示具有此 URL 的 YouTube 视频:

https://www.youtube.com/watch?v=0RKpf3rK57I

在 Markdown 中包含此内容:

{{< youtube 0RKpf3rK57I >}}

渲染结果:

youtube 短代码接受以下命名参数:

id
(string) 视频 id 。如果像上面示例中那样以位置参数提供 id ,则可选。
allowFullScreen
New in v0.125.0
(bool) <iframe> 元素是否可以激活全屏模式。默认为 true 。
autoplay
New in v0.125.0
(bool) 是否自动播放视频。强制 mute 为 true 。默认为 false 。
class
(string) 包装 div 元素的 class 属性。指定此属性时,将从 iframe 元素及其包装 div 元素中删除 style 属性。
controls
New in v0.125.0
(bool) 是否显示视频控件。默认为 true 。
end
New in v0.125.0
(int) 播放器应停止播放视频的时间(以视频开始时的秒数计)。
loading
New in v0.125.0
(string) iframe 元素的加载属性, eager 或 lazy 。默认为 eager 。
loop
New in v0.125.0
(bool) 是否无限重复视频。第一次播放后忽略 start 和 end 参数。默认为 false 。
mute
New in v0.125.0
(bool) 是否静音视频。当 autoplay 为 true 时始终为 true 。默认为 false 。
start
New in v0.125.0
(int) 播放器应开始播放视频的时间(以视频开始时的秒数计)。
title
(string) iframe 元素的 title 属性。默认为“YouTube 视频”。

使用上述部分参数的示例:

{{< youtube id=0RKpf3rK57I start=30 end=60 loading=lazy >}}

隐私配置

要了解如何配置您的 Hugo 站点以符合新的欧盟隐私法规,请参阅 隐私保护 。

创建自定义短代码

要了解有关创建自定义短代码的更多信息,请参阅 短代码模板文档 。

See also

  • 隐私
  • 配置标记
  • Markdown 属性
  • 内容格式
  • 组织

On this page

  • 什么是短代码
  • 使用短代码
  • 嵌入式短代码
  • 隐私配置
  • 创建自定义短代码
Last updated: January 10, 2025: 添加 gtm 谷歌代码管理 (6220bf5)
Improve this page
By the Hugo Authors
Hugo Logo
  • File an Issue
  • Get Help
  • @GoHugoIO
  • @spf13
  • @bepsays
 

Hugo Sponsors

Your Company?
 

The Hugo logos are copyright © Steve Francia 2013–2025.

The Hugo Gopher is based on an original work by Renée French.

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
  • 关于
  • 安装
  • 快速上手
  • 快速参考
  • 内容管理
  • 模板
  • 函数
  • 方法
  • 渲染钩子
  • Hugo 模块
  • Hugo 管道
  • 命令行界面
  • 故障排除
  • 开发者工具
  • 托管和部署
  • 贡献
  • 维护