关于Hugo的Shortcodes系统的运用

Shortcodes 是Hugo创建的一种特殊的代码段,其诞生背景是在 Hugo 使用 Markdown 作为其简单的内容格式时,由于 Markdown 的特性,其在很多方面都无法很好地支持。 即使我们可以使用纯 HTML 来扩展可能性,但这恰好是一个坏主意。大家使用 Markdown, 正是因为它即使不经过渲染也可以轻松阅读,所以应该尽可能避免使用 HTML 以保持内容简洁。于是 Hugo 采用 Shortcodes 系统,其表现为一个简单的代码段,但是可以生成合理的 HTML 代码,非常符合 Markdown 的设计哲学。
既然 Hugo 为我们提供了这一方便的系统,我们就应当好好利用,此处我将按照可能使用的频率进行一些梳理与列举,便于以后查用。
Hugo 内置的Shortcodes
此处记录的为 Hugo 内置的一些 Shortcodes ,在使用时可以无视主题安装等限制进行使用。然而由于国内特殊的网络环境,有部分 Shortcodes 在使用后转换的效果无法正常呈现,故这里仅记录一个 figure ,其余可以参考这里。
figure
代码如
|
|
输出的 HTML 看起来如下:
|
|
其还有诸多可选的位置参数, 由于 LoveIt 对此有所拓展,故不详细记录。
LoveIt 主题内置的Shortcodes
LoveIt 主题在 Hugo 内置的 shortcode 的基础上提供多个扩展的 shortcode。
1 style
style
这个 shortcode 对于 Hugo extended 版本是必需的.本 shortcode 旨在使用简易的方式来为文中的某段内容进行样式设置,其含有两个参数:第一个参数是是自定义样式的内容,其支持 SASS的嵌套语法,并且以&
指代这个父元素;第二个参数是包裹你要更改样式内容的 HTML 标签,默认值是div
。
示例如下:
代码如下:
|
|
2 link
link
这个 shortcode 是对 Markdown 中链接语法的替代物,其可以提供一些其他功能并且可以用于代码块中。其命名参数如下:
命名参数 | 作用 | 备注 |
---|---|---|
herf | 链接目标 | 必需, 为第一个位置参数 |
content | 链接内容 | 可选, 支持 HTML 或 Markdown 格式, 为第二个位置参数 |
title | HTML中的title 属性 |
可选, 为第三个位置参数 |
rel | HTML中的rel 属性 |
可选 |
class | HTML中的class 属性 |
可选 |
现将 LoveIt 对于此 shortcode 的举例复制如下:
|
|
利用此语法输出效果如下:
LoveIt官方文档3 image
其相当于对figure
这个 shortcode 的替代, 其可选参数如下:
命名参数 | 作用 | 备注 |
---|---|---|
src | 图片的 URL | 必需, 第一个位置参数 |
alt | 图片无法显示时的替代文本, 默认值是 src 参数的值,支持HTML或Markdown格式 | 可选,第二个位置参数 |
caption | 图片标题,同样支持两种格式 | 可选,第三个位置参数 |
title | 悬停在图片上会显示的提示 | 可选 |
class | HTMLfigure 标签的class 属性 |
可选 |
src_s | 图片缩略图的 URL, 用在画廊模式中, 默认值是src 参数的值 |
可选 |
src_l | 高清图片的 URL, 用在画廊模式中, 默认值是src 参数的值 |
可选 |
height/width | 图片的height 属性(width 属性) |
可选 |
linked | 图片是否需要被链接, 默认值是true |
可选 |
rel | HTMLa 标签 的rel 补充属性, 仅在linked 属性设置成true 时有效 |
可选 |
一个image
示例如下:
|
|
输出效果如下:

4 admonition
用于插入提示用的横幅, 总共12种。全部呈现效果如下:
其有三个位置参数,分别为 type
,title
以及open
。各参数的作用如其参数名,分别控制横幅的种类,横幅的标题以及是否展开。按照横幅从上至下的顺序,其type
参数可选值有:note
,abstract
,info
,tip
,success
,question
,warning
,failure
,danger
,bug
,example
,quote
。
一个admonition
示例如下:
其代码如下:
|
|
5 music
插入一个响应式音乐播放器, 其强大的功能甚至能进行歌单的播放。参数等较多, 可以参看官方文档进行配置。
一个music
示例如下:
其代码如下:
|
|
6 bilibili
提供了一个内嵌的用来播放 bilibili 视频的响应式播放器。需要的内容仅需其 BV 号以及其视频分P。
一个bilibili
示例如下:(此为刘宝瑞先生单口相声集的第4P-黄半仙)
其代码为:
|
|
7 script
用于在文章中插入 JavaScript 脚本, 使用如下:
|
|
8 raw
用于插入原始 HTML 内容, 成对使用, 无参数。
其他 shortcodes
参见官方文档使用即可。