hugo使用shortcode嵌入视频
有时,文章中需要添加视频作为演示内容,而 hugo
默认不支持展示视频。虽然可以使用工具将其转换为 GIF
或者WEBP
,但会增加文件大小或者降低画质。好在 hugo
可以使用 shortcodes
来支持视频
添加模板
在主题目录或项目目录下的 layouts/shortcodes
创建 video.html
文件,向文件中添加下面代码
{{- $src := .Get "src" | default (.Get 0) -}}
<div class="video-wrapper">
<video src="{{- $src -}}" autoplay="true" loop="true" muted="true" playsinline="true" loading="lazy" controls="true">
<p>
Your browser doesn't support HTML5 video. Here is a
<a href="{{- $src -}}">link to the video</a> instead.
</p>
</video>
</div>
完整语法较为复杂,这里简单介绍如何获取参数。主要分成两种情况:
- 有属性名时,使用属性名读取:
.Get "src"
; - 没有属性名时,通过索引获取:
.Get 0
。
这样文章才能既支持有属性名 src
,又支持没有属性名两种写法。
嵌入文章
在文章中使用下面代码嵌入视频
{{< video "/input.mov" >}}
或者
{{< video src="/input.mov" >}}
类似于 html
语言中的标签语法,取决语模板文件中的代码如何编写
- 固定格式:
{{}}
,代表在当前位置嵌入shortcode
- 标签名:
<video>
,其中video
为模板名 - 参数:可以添加属性名,也可以不添加
"/input.mov"
、src="/input.mov"
如果需要在文章中直接显示源码,可以在标签中添加 /**/
。完整写法:
{{</* video src="/input.mov" */>}}
// 显示注释
{{</*/* video src="/input.mov" */*/>}}