Hi,
With this way of inserting a link to an URL :
[Dummy](https://www.dummy.com/ "Dummy")
Is there a simple way to make it open in a blank page or tab ?
Thanks for the help.
Hi,
With this way of inserting a link to an URL :
[Dummy](https://www.dummy.com/ "Dummy")
Is there a simple way to make it open in a blank page or tab ?
Thanks for the help.
Hi there,
Have a look at render links: https://gohugo.io/getting-started/configuration-markup#link-with-title-markdown-example
Thanks,
I read that page (render links), but could you send me a markup file with a working example ?
Because I would need a working example to understand…
This is how I use it:
in my layouts/_default/_markup/render-link.html
<a
{{ if or (strings.HasPrefix .Destination `http`) (strings.HasPrefix .Destination `#`) (strings.HasPrefix .Destination `/`) }}
href = "{{ .Destination | safeURL }}"
{{ else if strings.HasPrefix .Destination `mailto` }}
href = "mailto:{{ .Text }}"
{{ end }}
{{ with .Title}}
title = "{{ . }}"
{{ end }}
{{ if strings.HasPrefix .Destination "http" }}
target = "_blank"
rel = "nofollow noopener noreferrer"
{{ else if strings.HasPrefix .Destination "mailto" }}
onClick = "javascript:window.open('mailto:{{ .Text }}', 'mail'); event.preventDefault()"
{{ end }}>
<span>
{{ .Text }}
</span>
</a>
To break this down, you can use 4 types of links - External, Internal, mailto
and #
.
The first if
condition parses the link and checks if the destination starts with http
or /
or #
. If it starts with any of those, it’ll add that in the href
. The mailto
is slightly different. It directly uses the text.
The second if
statement is the one that adds the target = "_blank
if the link starts with http
. For my personal satisfaction, I use JavaScript to force open mailto
links in new tab.
Then, in markdown, I can use this like:
External link: [text to link](https://www.foo.com/)
. Make sure to use http
or https
in the start as that’s how the detection of external link is working. This will open in new tab.
Internal link: [text to link](/link-relative-to-domain)
. Make sure to use relative links or else, if you use absolute ones and end up prefixing them with http
, they’ll open in new tab as well. This will open the link in same tab.
Hash link: [text to link](#link)
. This will scroll the element with the id
as link
. The element should be present in the same page.
mailto
: [user@example.com](mailto)
. Just this much configuration is enough. Make sure to use just the word mailto
and nothing else and the text to be linked should be an e-mail address.
Have you tried to follow the docs?
It includes an example of how you would use it in markdown:
[Text](https://www.gohugo.io "Title")
And the render-link code that you put into 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>
Hi Hrishikesh,
Thanks a lot for your example.
Are you sure the > after the {{ end }} is correct ?
What does it close ? Or what is it for ?
Hello pointyfar
Sorry, I didn’t fully get it that I needed to have a render-link file.
Now it’s in place and works great.
Big thank you for your help.
Andrew
It’s the closing bracket of the <a>
. Basically, the code goes like this:
<a href = "link from condition" title = "title" target = "_blank".....>
.
So, the >
after the {{ end }}
is responsible for the >
in the above line.
But there is a problem…
Because here is the final source code of the webpage
Plugins pour 4D <a
href = "https://www.e-node.net/"
target = "_blank"
rel = "nofollow noopener noreferrer"
>
<span>
e-Node
</span>
</a>
And there is a little “>” that is lost…
Yes this is what 'im using too, works great but…
I realize that it doesn’t work for links inside shortcodes. For example in a markdown table, if you put the markdown link it don’t respect the _blank… I don’t know what I’m missing but it’s really annoying !
Any suggestions ?
Hi @alnc, Please read Requesting Help and open a new topic with the details of your question.
I don’t see the problem here. Isn’t this correct? If you’d minimise this to one line, it’d look like:
Plugins pour 4D <a href = "https://www.e-node.net/" target = "_blank" rel = "nofollow noopener noreferrer"><span> e-Node</span></a>
My bad.
You are correct, there is no error !
Sorry.
Have a nice day and : Thank you for your help and time
A shortcode is different from markdown. Is it not working inside markdown or inside shortcode? But yeah, you should really open this up in a separate thread as this one seems solved now.
I modify the near the end of the code as follow
{{ .Text | safeHTML }}
so it can work with pairs of ` in the text without showing <code> .. </code>
.