方法一:HTML 标签的方法
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
这样支持了 HTML 标签:
<a href="https://example.com" target="_blank">example.com</a>
但比较麻烦,不推荐,不过建议开启这个功能以支持 HTML 语法。
方法二:在 blackFriday 中渲染
Hugo 已在 v0.60 后默认使用了符合 CommonMark 标准的 Goldmark 渲染器。
不过仍然可以启用 blackFriday 渲染器来设定其 hrefTargetBlank
属性为 true
:
[markup]
defaultMarkdownHandler = 'blackFriday'
[markup.blackFriday]
hrefTargetBlank = true
但这样就放弃了更快更标准的 Goldmark Markdown 渲染器。
方法三(推荐):使用 Goldmark 的 Markdown Render Hooks
需要 Hugo 版本大于 v0.62.0 并启用 Goldmark(默认就是)。
创建 render-link.html
文件在 ./themes/<你的主题>/layouts/_default/_markup/
目录。
内容:(参考官方文档)
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>
推荐使用此方法,自动为所有文章内的链接加上了 target="_blank" rel="noopener"
。
但是站内链接也都加上了 target="_blank" rel="noopener"
。
站内链接建议写 path:
[title](/foo/bar/)
↓ 会被简单解析为: ↓
<a href="/foo/bar/">title</a>