我能用Markdown在hugo文章内容中创建带有“target="_blank"”属性的链接吗?

6

我使用Hugo部署静态网页,使用Markdown语言。我想要解决的问题很简单,我想找到一种最简单且与Markdown兼容的方法来让我的网页链接在不同的标签页中打开。

我目前使用的方法如下:

  1. < rawhtml >}}<a href="https://en.wikipedia.org/wiki/Rasmus_Lerdorf" target="blank">Rasmus Lerdorf</a></br>{{< /rawhtml >
  2. [link with title](http://nodeca.github.io/pica/demo/ "target="blank")

第一种方法是有效的,但它涉及到HTML;第二种方法无效。谢谢。

2个回答

12
你需要在 /layouts/_default/_markup/ 下新建一个名为 render-link.html 的文件。
然后,在该文件中,你可以自定义它的内容,例如:
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination  "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>

以下是可能出现的情况:

  • [link1](../something/ title="title") => <a href="../something/" title="title">link1</a>
  • [link2](https://example.com) => <a href="https://example.com">link2</a>

它只会将其添加到具有“http”和“https”的URL。

渲染钩子的文档在这里可用:https://gohugo.io/templates/render-hooks/


感谢 @I'M YourOnly.One 的清晰回答,但我有一个问题。类似于 URL 示例,是否可以使用 IMG 来实现相同的效果,例如 ![Title](/your-image-url/image.png position="left") 或 ![Title](/your-image-url/image.png align="center")? - Marcin
可以使用渲染钩子实现。不要使用“/layouts/_default/_markup/render-links.html”,而是创建“/layouts/_default/_markup/render-image.html”,然后在将Markdown图片呈现为HTML时,您可以覆盖默认布局。可以在这里找到示例。 - I'M YourOnly.One
@ 我是 YourOnly.One,但我该如何将我的帖子模板中的变量发送到 render-image.html 中,例如位置或大小?谢谢。 - Marcin
为此,您需要创建一个新的简码。有一个内置的简码叫做{{< figure >}},它可以接收classwidthheightrelalttitlecaptionattr。它还会自动添加一个figcaption。您可以在这里查看figure简码背后的代码。更多信息可在文档网站上找到。 - I'M YourOnly.One

-2

或者您可以使用普通的HTML直接将链接插入其中。

在我看来,因Hugo和当前使用的主题的缺陷而自责是不利于提高效率的。Markdown旨在为那些无法掌握HTML基本原理但又想在维基上创建和显示内容的用户提供一种快速简便的方式。

请考虑当前的情况。当您需要的功能在Hugo、主题和Markdown的组合下不存在时,使用它们是否真的节省了任何工作量呢?

当您需要花费数小时/数天的时间研究和学习如何操纵生成器的模板以从Markdown和Hugo生成所需的输出时,请问,哪里能找到这些时间的节约呢?

这就是为什么使用Flare、RoboHTML和Paligo等工具的人嘲笑那些吹嘘他们的Hugo网站生成HTML页面速度有多快的用户的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接