From 289a3f456e771194cc18606051f113962f7e86c1 Mon Sep 17 00:00:00 2001 From: Alex Shpak Date: Sat, 7 Mar 2020 18:47:16 +0100 Subject: Add portable links, requires hugo 0.62 --- layouts/_default/_markup/render-link.html | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 layouts/_default/_markup/render-link.html (limited to 'layouts/_default/_markup/render-link.html') 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 }} + {{ .Text | safeHTML }} +{{ 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) }} + + {{- else -}} + {{- warnf "Page '%s' not found in '%s'" .Destination .Page.File }} + {{- end }} + {{- end }} + {{ .Text | safeHTML }} +{{- end -}} -- cgit v1.2.3