Es geht um alles – von H-Eins bis H-Sechs. Schließlich braucht jede Website ein System, wie es die Überschriften darstellt. Unsere Headlines spendieren euch gleich einen sogennanten Anchor-Link mit. Wenn ihr auf das #-Symbol klickt, speichern wir den Link in eure Zwischenablage. Damit ihr unseren super Beitrag gleich im Messenger-Dienst eures Vertrauens (hoffentlich Signal) weiterleiten könnt.

Ein Headline-Element mit einem klickbaren Hashtag
Headline-Element mit klickbarem Hashtag

Wie haben wir das gemacht? Lest einfach weiter.

Hugo und Headlines #

Hugo bietet für Headlines einen sogennanten Render-Hook an. Das heißt man kann das Verhalten, wie Überschriften aus Markdown-Files gerendert werden, abändern. Dafür legt ihr unter dem Pfad layouts/_default/_markup die Datei mit dem Namen render-heading.html an:

Verzeichnisstruktur für den Headline-Anchor-Link

Render-Hook #

Laut Dokumentation erhält dieses File die folgenden Variablen von Hugo als Input:

  • .Level – Die hierarchische Ebene der Headline: Also 1 für H1, 2 für H2 usw.
  • .Text – Das ist der Text der Headline
  • .Anchor – Der Anchor-Link der Headline selbst

Rendern der Überschrift #

Um eine Headline also zu rendern, genügt dieses Snippet:

<h{{ .Level }}>
    {{ .Text | safeHTML }}
</h{{ .Level }}>

Wir wollen allerdings nicht nur den Überschriften-Text hinschreiben, sondern auch automatisch einen Hashtag an das Ende der Headline anzeigen. Dafür erweitern wir das Snippet so:

<h{{ .Level }}>
    <div class="lowlight"></div>
    {{ .Text | safeHTML }} #            
    </div>
</h {{ .Level }}>

Nach dem Überschriften-Text schreiben wir ein Rautesymbol. Zusätzlich legen wir ein div mit der Klasse lowlight um den Überschriftentext. Damit ist jetzt noch nicht viel passiert. Deswegen erweitern wir das Snippet um einen Link:

<h{{ .Level }}>
  <div class="lowlight"></div>
  {{ .Text | safeHTML }}
    <a class="heading-anchor" href="#{{.Anchor}}" aria-label="#" alt="#">
        {{ "#" }}            
    </a>
  </div>
</h {{ .Level }}>

So weit. So gut. Das #-Symbol ist jetzt klickbar. Dem Link-Element haben wir die Klasse heading-anchor mitgegeben. Das hat den Grund, damit wir per Javascript alle Anchor-Elemente einfach selektieren können.

Outro #

Mit diesen Snippets solltet ihr es schaffen, einen klickbaren Anchor-Link hinter euren Überschriften anzuzeigen. Headlines kann man dann klicken. Damit sie kicken, seid ihr dann selbst verantwortlich.