Files
epsf-miniwebsite/layouts/_default/_markup/render-link.html

24 lines
1.0 KiB
HTML

{{- $baseurl := urls.Parse site.BaseURL -}}
{{- $url := urls.Parse .Destination -}}
{{- $getpage := site.GetPage .Destination -}}
{{- $internal := lt (len $url.Host) 1 -}} {{/* NOTE: internal links will always have an empty $url.Host */}}
{{- $fragment := $url.Fragment -}}
{{- with $fragment -}}{{ $fragment = printf "#%s" $fragment }}{{- end -}}
{{- $destination := "" -}}
{{- if $internal -}}
{{- if (strings.HasPrefix $url.Path "./") -}}
{{/* NOTE: for links starting with ./ */}}
{{- $urltrimmed := strings.TrimPrefix "./" $url -}}
{{- $destination = printf "%s://%s/%s%s" $baseurl.Scheme $baseurl.Host $urltrimmed $fragment -}}
{{- else -}}
{{/* NOTE: for internal links */}}
{{- $destination = printf "%s%s" $getpage.RelPermalink $fragment -}}
{{- end -}}
{{- else -}}
{{- $destination = .Destination -}}
{{- end -}}
<a href="{{ $destination | safeURL }}"{{ with or .Title $getpage.LinkTitle .Text }} title="{{ . }}"{{ end }}{{ if not $internal }} rel="noopener external"{{ end }}>{{ or .Text .Title $getpage.LinkTitle | safeHTML }}</a>