Hugo Shortcodes 的使用

Hugo Shortcodes 的使用

内置Shortcodes

figure

Markdown 中图片语法的扩展

hugo 官方 figure 使用文档

示例

1
{{< figure src="images/example.png" title="Mercury (figure)" >}}

效果如下

Mercury (figure)

命名参数

参数含义
src图片URL
link图片点击跳转的链接
alt图片无法显示时的替代文本
title图片标题
caption图片说明
classHTML的Class属性
height图片高度
width图片宽度
attr图片归属地
attrlink图片归属链接

gist

Github gist 的引用

Hugo 官方 gist 使用文档

示例

gist 链接为:https://github.com/spf13/7896402

则可通过用户名和gist ID嵌入内容

1
{{< gist spf13 7896402 >}}

效果如下

若gist有多个文件且只想引用其中一个文件,则可将该文件名作为第三个参数

1
{{< gist spf13 7896402 "img.html" >}}

highlight

代码语法高亮

Hugo 官方 highlight 使用文档

示例

1
2
3
4
5
6
7
8
9
# html 为代码语言类型
{{< highlight html >}}
<section id="main">
    <div>
        <h1 id="title">{{ .Title }}</h1>
        <h4 id="desc">{{ .Desc }}</h4>
    </div>
</section>
{{< /highlight >}}

效果如下

1
2
3
4
5
6
<section id="main">
    <div>
        <h1 id="title">{{ .Title }}</h1>
        <h4 id="desc">{{ .Desc }}</h4>
    </div>
</section>

param

站点参数

Hugo 中 param 的使用文档

示例

1
Hugo 内置扩展以及 LoveIt 外置扩展使用示例

效果如下

Hugo 内置扩展以及 LoveIt 外置扩展使用示例

ref与relref

页面跳转链接,通过相对路径(posts/example.md)或逻辑名称(example.md)进行查找

注意添加的页面必须是已存在的,否则站点会报错

示例

1
2
[Certbot]({{< ref "posts/certbot_nginx.md" >}}) 
[申请]({{< relref "posts/certbot_nginx.md#申请" >}})

效果如下

Certbot

申请

tweet

推特文章嵌入

Hugo 中 tweet 的使用文档

示例

添加user用户名和推文URL的ID

1
2
{{< tweet user="SanDiegoZoo" id="1453110110599868418" >}}
{{< tweet 917359331535966209 >}}

效果如下

vimeo

嵌入来自Vimeo的视频

Hugo 中 vimeo 的使用文档

1
{{< vimeo 146022717 >}}

效果如下

youtube

嵌入来自YouTube的视频

Hugo 中 youtube 的使用文档

示例

1
{{< youtube w7Ft2ymGmfc >}}

效果如下

扩展Shortcodes

style

自定义样式

示例

1
2
3
{{< style "text-align:right; strong{color:#00b1ff;}" >}}
This is a **right-aligned** paragraph.
{{< /style >}}

效果如下

This is a right-aligned paragraph.

内置的 link 的替代,具备其他功能并可在代码块中使用

参数

参数含义
href链接
content链接内容
title标题
rel补充属性
classclass属性

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
无content,显示链接
{{< link "https://assemble.io" >}}
{{< link href="https://assemble.io" >}}

带content,显示content
{{< link "https://assemble.io" Assemble >}}
{{< link href="https://assemble.io" content=Assemble >}}

鼠标聚焦显示title
{{< link "https://github.com/upstage/" Upstage "Visit Upstage!" >}}
{{< link href="https://github.com/upstage/" content=Upstage title="Visit Upstage!" >}}

效果如下

无content,显示链接

https://assemble.io

带content,显示content

Assemble Assemble

鼠标聚焦显示title

Upstage Upstage

image

内置 figure 的替代,充分利用 lazysizeslightGallery 依赖库

参数

参数含义
src图片链接
alt图片无法显示时的替代文本
caption图片标题
title图片聚焦显示提示
classclass属性
src_s图片缩略图URL,用于画廊模式,默认为src
src_l图片高清图URL,用于画廊模式,默认为src
height图片高度
width图片宽度
linked图片是否需要被链接,默认为true
rel补充属性,尽在 linked 为true时生效

示例

1
{{< image src="/images/example.png" caption="Mercury (`image`)" src_s="/images/example-small.jpg" src_l="/images/example-large.jpg" >}}

效果如下

https://r4.wallpaperflare.com/wallpaper/632/790/513/digital-digital-art-artwork-city-lights-hd-wallpaper-7886ed48d0c0fc88f0ec11aec8b2a4da.jpg
Mercury (image)

admonition

提示横幅,包含12种样式

参数

  • type:样式类型,默认为 note
  • title:提示横幅标题,默认为 type 的值
  • open:是否展开,默认为 true
type参数列表
参数含义
note(默认)注意 →
abstract摘要 →
info信息 →
tip技巧 →
success成功 →
question问题 →
warning警告 →
failure失败 →
danger危险 →
bugBug →
example示例 →
quote引用 →

示例

1
2
3
4
{{< admonition type=tip title="标题" open=false >}}
{{< /admonition >}}
{{< admonition tip "标题" false >}}
{{< /admonition >}}

效果如下

标题
内容
标题
内容

mermaid

使用 Mermaid 库提供绘制图表和流程图的功能

mermaid 中文使用示例

示例

1
2
3
4
5
6
7
{{< mermaid >}}
graph LR;
    A[Hard edge] -->|Link text| B(Round edge)
    B --> C{Decision}
    C -->|One| D[Result one]
    C -->|Two| E[Result two]
{{< /mermaid >}}

效果如下

echarts

echarts shortcode 使用 ECharts 库提供数据可视化的功能

参数

  • wdith:数据图宽度,默认100%
  • height:数据图高度,默认100%

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
{{< echarts >}}
{
  "title": {
    "text": "折线统计图",
    "top": "2%",
    "left": "center"
  },
  "tooltip": {
    "trigger": "axis"
  },
  "legend": {
    "data": ["邮件营销", "联盟广告", "视频广告", "直接访问", "搜索引擎"],
    "top": "10%"
  },
  "grid": {
    "left": "5%",
    "right": "5%",
    "bottom": "5%",
    "top": "20%",
    "containLabel": true
  },
  "toolbox": {
    "feature": {
      "saveAsImage": {
        "title": "保存为图片"
      }
    }
  },
  "xAxis": {
    "type": "category",
    "boundaryGap": false,
    "data": ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
  },
  "yAxis": {
    "type": "value"
  },
  "series": [
    {
      "name": "邮件营销",
      "type": "line",
      "stack": "总量",
      "data": [120, 132, 101, 134, 90, 230, 210]
    },
    {
      "name": "联盟广告",
      "type": "line",
      "stack": "总量",
      "data": [220, 182, 191, 234, 290, 330, 310]
    },
    {
      "name": "视频广告",
      "type": "line",
      "stack": "总量",
      "data": [150, 232, 201, 154, 190, 330, 410]
    },
    {
      "name": "直接访问",
      "type": "line",
      "stack": "总量",
      "data": [320, 332, 301, 334, 390, 330, 320]
    },
    {
      "name": "搜索引擎",
      "type": "line",
      "stack": "总量",
      "data": [820, 932, 901, 934, 1290, 1330, 1320]
    }
  ]
}
{{< /echarts >}}

效果如下

mapbox

使用 Mapbox GL JS 库提供互动式地图的功能

Tip

Mapbox使用需要在config中填写access token

Mapbox注册需要卡号,可用卡号生成器随机绑定一个

参数

参数含义
lng经度
lat纬度
zoom初始缩放级别,默认为10
marked是否在的初始中心点添加图钉,默认为true
light-style浅色主题的地图样式
dark-style深色主题的地图样式
navigation缩放按钮和指南针的控件,默认为true
geolocate使用浏览器的地理定位API在地图上定位用户的控件,默认为true
scale放大缩小控件,默认为true
fullscreen全屏控件,默认为true
width地图宽度,默认为100%
height地图高度,默认为20rem

示例

1
{{< mapbox lng=121.485 lat=31.233 zoom=12 >}}

效果如下

music

music 基于 APlayerMetingJS 库提供了一个内嵌的响应式音乐播放器

分为本地模式和在线模式

通用参数

参数含义
theme播放器的主题色,默认为#448aff
fixed固定模式,默认为false
mini迷你模式,默认为false
autoplay自动播放,默认为false
volume默认音量,默认为0.7
mutex自动暂停其他播放器,默认为true

仅适用于音乐列表模式

参数含义
loop循环模式,默认为none,可选allone
order播放顺序,默认为list,可选random
list-folded初始列表折叠,默认为false
list-max-height列表最大高度,默认为340px

本地

参数
  • server:链接
  • type: 音乐名称
  • artist: 创作者
  • cover: 封面链接
示例
1
{{< music url="/music/Wavelength.mp3" name=Wavelength artist=oldmanyoung cover="/images/Wavelength.jpg" >}}

在线

自动识别

auto 自动识别 neteasetencentxiami 平台的链接

示例
1
2
{{< music auto="https://music.163.com/#/playlist?id=60198" >}}
{{< music "https://music.163.com/#/playlist?id=60198" >}}

效果如下

自定义音乐平台、类型和ID
参数
  • server: 音乐平台,支持neteasetencentkugouxiamibaidu
  • type:类型,支持song, playlist, album, search, artist
  • id: 与type对应,歌曲 ID、 播放列表 ID、 专辑 ID、 搜索关键词、 创作者 ID
示例
1
2
{{< music server="netease" type="song" id="1868553" >}}
{{< music netease song 1868553 >}}

效果如下

bilibili

bilibili 内嵌的播放 bilibili 视频的响应式播放器

示例

若视频没有分P,则仅需av或者bv作为id参数

1
2
{{< bilibili BV1Sx411T7QQ >}}
{{< bilibili id=BV1Sx411T7QQ >}}

效果如下

若视频分P,则还需添加p参数,默认为1

1
2
{{< bilibili BV1TJ411C7An 3 >}}
{{< bilibili id=BV1TJ411C7An p=3 >}}

效果如下

typeit

typeit shortcode 基于 TypeIt 库提供了打字动画

参数

参数含义
tag包裹的标签名
code若内容为代码,可指定语言,显示代码块高亮
group相同group会按照顺序展示

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
简单示例
{{< typeit >}}
这一个带有基于 [TypeIt](https://typeitjs.com/) 的 **打字动画***段落*...
{{< /typeit >}}
带标签
{{< typeit tag=h4 >}}
这一个带有基于 [TypeIt](https://typeitjs.com/) 的 **打字动画***段落*...
{{< /typeit >}}
代码块
{{< typeit code=java >}}
public class HelloWorld {
    public static void main(String []args) {
        System.out.println("Hello World");
    }
}
{{< /typeit >}}
分组
{{< typeit group=paragraph >}}
**首先**, 这个段落开始
{{< /typeit >}}

{{< typeit group=paragraph >}}
**然后**, 这个段落开始
{{< /typeit >}}

效果如下

简单示例

带标签

代码块
分组

script

script可插入Javascript脚本

示例

1
2
3
{{< script >}}
console.log('Hello LoveIt!');
{{< /script >}}

效果在控制台

raw

raw可插入HTML内容

示例

1
2
3
4
5
6
7
8
9
行内公式: {{< raw >}}\(\mathbf{E}=\sum_{i} \mathbf{E}_{i}=\mathbf{E}_{1}+\mathbf{E}_{2}+\mathbf{E}_{3}+\cdots\){{< /raw >}}

公式块:

{{< raw >}}
\[ a=b+c \\ d+e=f \]
{{< /raw >}}

原始的带有 Markdown 语法的内容: {{< raw >}}**Hello**{{< /raw >}}

效果如下

行内公式:

公式块:

原始的带有 Markdown 语法的内容:

person

person用于插入个人网站链接

参数

参数含义
url链接
name站长名称
text鼠标聚焦时弹出的提示
picture头像链接
nick昵称

示例

1
2
3
{{< person url="https://evgenykuznetsov.org" name="Evgeny Kuznetsov" nick="nekr0z" text="author of this shortcode" picture="https://evgenykuznetsov.org/img/avatar.jpg" >}}

{{< person "https://dillonzq.com/" Dillon "author of the LoveIt theme" >}}

效果如下

nekr0zEvgeny Kuznetsov (nekr0z) Dillon