如何让Hugo中markdownify生成的链接点击后打开新标签页
Hugo 模板中 markdownify 生成链接默认新标签页打开的解决方案
方法1:单模板局部修改(仅对当前模板生效,无需改动全局配置)
直接替换你现有的模板代码即可:
<p>{{ . | markdownify | replaceRE `<a (href="[^"]+")` `<a $1 target="_blank" rel="noopener noreferrer"` | safeHTML }}</p>
- 逻辑说明:
- 先通过
markdownify将原始Markdown内容转换为HTML格式 - 再通过
replaceRE正则匹配所有<a>标签,自动追加target="_blank"新标签打开属性,以及rel="noopener noreferrer"安全属性(避免新开页面的恶意脚本获取原页面权限) - 末尾的
safeHTML用于声明渲染后的内容为可信HTML,避免Hugo自动转义特殊字符导致标签失效
- 先通过
方法2:全局生效配置(全站所有Markdown渲染的链接统一生效)
如果你希望站点内所有通过Markdown渲染生成的链接都默认新标签打开,可以使用Hugo的Link Render Hook功能:
- 在Hugo项目根目录下新建文件
layouts/_default/_markup/render-link.html - 往文件内写入以下内容:
<a href="{{ .Destination | safeURL }}"{{ with .Title }} title="{{ . }}"{{ end }} target="_blank" rel="noopener noreferrer">{{ .Text | safeHTML }}</a>
- 保存后重新构建站点即可,所有调用
markdownify生成的链接都会自动携带新标签打开属性。
内容的提问来源于stack exchange,提问作者Michael Mabinuola
相关产品推荐
相关产品推荐

