Interne Verlinkung optimieren & 404-Fehler verhindern — Shortcode für Hugo-Projekte

Lukas Becker, geschäftsführender Gesellschafter der Digitalagentur candyblue UG (haftungsbeschränkt) aus Kassel
Lukas Geschäftsführung

404-Fehler sind ziemlich ärgerlich.

Häufiger schreiben wir mehrere Blogbeiträge hintereinander und verlinken die Beiträge auch vorbildlich untereinander — aber leider veröffentlichen wir die Beiträge dann zu unterschiedlichen Zeiten. Das Ergebnis: Beitrag a) verlinkt auf Beitrag b), der noch gar nicht veröffentlicht ist, sodass ein 404-Fehler entsteht.

Tada: Um für diesen Case eine Lösung am Start zu haben, haben wir einen Shortcode entwickelt, den wir in unseren Projekten für interne Verlinkungen nutzen.

Der Shortcode prüft, ob die Seite, auf die verlinkt werden soll, überhaupt existiert — wenn alles in Ordnung ist und die Seite existiert, wird der Link ausgegeben, existiert die Seite nicht, gibt es auch keine Verlinkung.

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

{{ with .Site.GetPage $link }}
  <a href="{{ relref . $link | absURL }}">
{{ end }}

  {{ .Get "text" }}

{{ with .Site.GetPage $link }}
  </a>
{{ end }}

Im content nutzt ihr den Shortcode folgendermaßen:

{{% internal link="/blog/artikel-1.md" text="euer Artikel" %}}
Lukas Becker, geschäftsführender Gesellschafter der Digitalagentur candyblue UG (haftungsbeschränkt) aus Kassel
Lukas

Lukas ist Gründer und Geschäfsführer von candyblue, ihr findet ihn bei Instagram oder xing.