Update
Ich habe das jetzt endlich mal in richtig implementiert, mit Markdown Render Hooks statt einem Shortcode, siehe hier.

Verlinkt man oft auf die selben Webseiten, kann man natürlich, wie sonst auch, die komplette URL immer wieder eintragen. Wenn sich aber irgendwann die Domain des Ziels ändern sollte, dann müsste man alle verwendeten Links wieder anpassen. 1

Man kann aber auch sogenannte Interwiki-Links nutzen, deren “Verwaltung” an einer zentralen Stelle liegt und kann so alle möglichen Anpassungen für verlinkte URLs vornehmen.

Bei einem Interwiki Link ist die Zieldomain nur ein einziges Mal irgendwo zentral hinterlegt und man gibt bei einer Verlinkung nur noch eine selbst definierte Abkürzung an und optional den Pfad zur Unterseite.

Für mein Wiki ist die Domain aktuell https://wiki.natenom.de/ und die verlinkte Unterseite könnte z. B. verkehr/projekte/radfahrer_faq sein. Die definierte Abkürzung ist n-wiki.

Um einen solchen Link in meinem Blog einzufügen, würde ich schreiben:

{{​< interwiki dest="n-wiki" title="Ein Link zu meinem Wiki" link="verkehr/projekte/radfahrer_faq" >​}}

Das Ergebnis: Ein Link zu meinem Wiki

Das sieht jetzt erst einmal nicht so aus, als hätte man durch mehr Schreibarbeit einen Vorteil. Hier ist die Liste z. B. die Liste der Interwiki-Links aus meinem Wiki, die ich verwende.

Hier eine Liste der verfügbaren Interwiki-Links auf meinen Websites.

In meinem Blog hatte ich es wegen WordPress nie geschafft, so etwas umzusetzen. Hier in Hugo ist das sehr einfach zu realisieren.

Es ist mit Interwiki-Links auch möglich, z. B. ein kleines Icon der Website anzuzeigen, wie ich es von DokuWiki kenne, siehe hier.

Oder man kann weitere Attribute nur für eine bestimmte Verlinkung angeben, z. B. rel.

Shortcode für Interwiki in Hugo

Ich habe für meine Interwiki-Links einen Shortcode geschrieben:

{{ $dest := .Get "dest" }}
{{ $link := .Get "link" }}
{{ $title := .Get "title" }}

{{ if eq $dest "n-wiki"}}
{{ .Scratch.Set "baseurl" "https://wiki.natenom.de/" }}
{{ else if eq $dest "n-com"}}
{{ .Scratch.Set "baseurl" "https://www.natenom.com/" }}
{{ else if eq $dest "n-de"}}
{{ .Scratch.Set "baseurl" "https://www.natenom.de/" }}
{{ else if eq $dest "n-files"}}
{{ .Scratch.Set "baseurl" "https://f.natenom.de/" }}
{{ else }}
{{ errorf "Invalid dest set. See shortcode for help."}}
{{ end }}

<a class="shortcode-interwiki natenom" href="{{- .Scratch.Get "baseurl" -}}{{- $link -}}">{{ if $title }}{{ $title }}{{ else }}{{ .Scratch.Get "baseurl" }}{{ $link }}{{ end }}</a>

Noch mehr Möglichkeiten

Wenn es eine Domain gar nicht mehr geben sollte, auf die ich oft verlinkt hätte, könnte ich das im Shortcode so ändern, dass nur der Link nicht mehr gesetzt wird und der Linktext zusätzlich durchgestrichen wird und eine kleine Info angezeigt wird, dass es das Ziel nicht mehr gibt.

Oder ich könnte einstellen, dass externen Links auf fremde Seiten, je nach Ziel, eine Warnung vorgeschaltet wird.

So viele Möglichkeiten :)

Verbesserungspotenzial

Schön wäre es, wenn ich Interwiki-Links in Hugo so umsetzen könnte, dass ich das normale Markdown weiterhin verwenden kann. Für einen Link zu meinem Wiki als Interwiki-Link könnte ich dann z. B. statt

[Link zum Wiki](https://wiki.natenom.de/docs/fahrrad/faq)

bzw. meiner Variante mit einem Shortcode

{{​< interwiki dest="n-wiki" title="Ein Link zu meinem Wiki" link="verkehr/projekte/radfahrer_faq" >​}}

so eine Syntax verwenden:

[n-wiki:Link zum Wiki](verkehr/projekte/radfahrer_faq)

Damit werde ich mich später mal beschäftigen.


  1. Man kann das natürlich, speziell in Hugo, auch mit einem einzigen Kommandozeilenaufruf mit Hilfe von des Streameditors sed machen. ↩︎