I have a default nofollow
setup in the posts. Dofollow
only my own domain link, and the domain in the front matter dofollow
tag.
My existing front matter:
dofollow: domain-allow.com
The code below can only work for one domain; how could I change the render-link.html
to allow nofollow
multiple domains?
New front matter:
dofollow: ["domain-allow1.com", "domain-allow2.com", "domain-allow3.com"]
My existing render-link.html
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }} {{ if (or (in (.Destination) "mydomain.com") (in (.Destination) .Page.Params.dofollow)) }} target="_blank" rel="noopener" {{ else if strings.HasPrefix .Destination "http" }} target="_blank" rel='noopener nofollow' {{ else }} target="_blank" rel="noopener" {{ end }} >{{ .Text | safeHTML }}</a>
Is render-link.html
a partial? How do you call it from the templates?
You could do something like
{{ $do := false }}
{{ $destination := .Destination }}
{{ $dofollow := .Page.Params.dofollow }}
{{ range $dofollow }}{{ if (in ($destination) .) }}{{ $do = true }}{{ end }}{{ end }}
{{ if (or (in (.Destination) "mydomain.com") $do ) }}
...
Sorry for the late reply, it’s working perfectly well!
my front matter:
dofollow: [“mydomain.com”, “domain-allow1.com”,“domain-allow2.com”]
my final code:
{{ $do := false }}
{{ $destination := .Destination }}
{{ $dofollow := .Page.Params.dofollow }}
{{ range $dofollow }}
{{ if (in ($destination) .) }}{{ $do = true }}{{ end }}
{{ end }}
{{ if ($do) }}
<a href=“{{ .Destination | safeURL }}”{{ with .Title}} title=“{{ . }}”{{ end }} target=“_blank” rel=“noopener” rel=‘noopener’>{{ .Text | safeHTML }}
{{ else }}
<a href=“{{ .Destination | safeURL }}”{{ with .Title}} title=“{{ . }}”{{ end }} target=“_blank” rel=“noopener nofollow” rel=‘noopener’>{{ .Text | safeHTML }}
{{ end }}
1 Like
render-link.html is a hugo render hook, more detail information here:
1 Like