Hugo Konfiguration

In deiner hugo.yaml muss der Parameter ShowShareButtons unter params: auf true gesetzt sein:

params:
  ...
  ShowShareButtons: true
  ...

Template vorbereiten

  1. Kopiere die Datei themes/PaperMod/layouts/partials/share_icons.html
  2. in dein Projektverzeichnis: layouts/partials/share_icons.html.

So überschreibst du die Theme-Datei, ohne sie direkt zu verändern.

Copy Button

Dieser Button kopiert einen Post in den Zwischenspeicher, der so aussieht:

# Die Populismusfalle: Warum Logik gegen Populismus versagt

https://hyperblog.de/hoergen/posts/2026/2026-08-09-die-populismusfalle/ 
#demhoergen #hyperblog #Linux #hugo #Fedivers #blog #Friendica #Mastodon

Die Bestätigung eines Populisten zu suchen, ist die höchste Form der Dummheit. Ansätze wie man mit Populisten umgehen kann.

Im Kopf der Definition können noch eigene Hashtags hinzugefügt werden. Dort wo hier im Beispiel “#demhoergen #hyperblog” steht.

Der Code muss genau so am Anfang positioniert werden.

<li>
{{- if (cond ($custom) (in $ShareButtons "copy") (true)) }}
{{- $hashtags := "#demhoergen #hyperblog" -}}
{{- with .Params.tags -}}
    {{- range $index, $tag := . -}}
        {{- $hashtags = printf "%s #%s" $hashtags $tag -}}
    {{- end -}}
{{- end -}}

<button onclick="copyToClipboard()"
        aria-label="Link kopieren"
        style="background:none;border:none;cursor:pointer;">
    <svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor">
        <path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/>
    </svg>
</button>

<script>
function copyToClipboard() {
    const title = "{{ $title | plainify }}";
    const url = "{{ $pageurl | absURL }}";
    const description = "{{ .Params.description | plainify }}";
    const tags = "{{ $hashtags }}";

    const text = `\# ${title}\n\n${url} \n${tags}\n\n${description}`;

    navigator.clipboard.writeText(text).then(() => {
        alert('Artikel-Infos in die Zwischenablage kopiert!');
    }).catch(err => {
        console.error('Fehler beim Kopieren: ', err);
    });
}
</script>
{{- end }}
</li>