diff options
author | Alex Shpak <alex-shpak@users.noreply.github.com> | 2020-03-07 18:47:16 +0100 |
---|---|---|
committer | Alex Shpak <alex-shpak@users.noreply.github.com> | 2020-03-07 18:47:16 +0100 |
commit | 289a3f456e771194cc18606051f113962f7e86c1 (patch) | |
tree | 631d2b9506d0ac46c292e73738fc814bfd99b053 /layouts/_default/_markup/render-link.html | |
parent | c217876059161cf6b89a114425116c65c89fba0c (diff) |
Add portable links, requires hugo 0.62
Diffstat (limited to 'layouts/_default/_markup/render-link.html')
-rw-r--r-- | layouts/_default/_markup/render-link.html | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/layouts/_default/_markup/render-link.html b/layouts/_default/_markup/render-link.html new file mode 100644 index 0000000..48b419f --- /dev/null +++ b/layouts/_default/_markup/render-link.html @@ -0,0 +1,28 @@ +{{ if .Page.Site.Params.BookPortableLinks }} + {{- template "portable-link" . -}} +{{ else }} + <a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a> +{{ end }} + +{{- define "portable-link" -}} + {{- $destination := .Destination }} + {{- $isRemote := or (in .Destination "://") (strings.HasPrefix .Destination "//") }} + {{- if not $isRemote }} + {{- $url := urls.Parse .Destination }} + {{- $path := strings.TrimSuffix "/_index.md" $url.Path }} + {{- $path = strings.TrimSuffix "/_index" $path }} + {{- $path = strings.TrimSuffix ".md" $path }} + {{- $page := .Page.GetPage $path }} + {{- if $page }} + {{- $destination = $page.RelPermalink }} + {{- if $url.Fragment }} + {{- $destination = print $destination "#" $url.Fragment }} + {{- end }} + {{- else if fileExists (print .Page.File.Dir .Destination) }} + <!-- Nothing --> + {{- else -}} + {{- warnf "Page '%s' not found in '%s'" .Destination .Page.File }} + {{- end }} + {{- end }} + <a href="{{ $destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a> +{{- end -}} |