feature(library): Wiki-Links, Backlinks, Suche + A-Z-Index
single.html: [[Begriff]]-Auflösung zu internen Links (.wikilink), fehlende Seiten als .wikilink-missing, „Siehe auch" (Gruppe+Tags) und „Erwähnt in" (Backlinks), Eintrags-Fuss mit Gruppe + bearbeiten. list.html: Suchfeld + A-Z-Index mit JS-Filter (Umlaute normalisiert), data-title auf <li> für clientseitiges Filtern. custom.css: .wikilink, .wikilink-missing, .entry-links, .entry-links-label, .lib-filter, .lib-search, .lib-az — alle via --section-color (ichigo/rose). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+56
-13
@@ -1,5 +1,5 @@
|
||||
{{ define "main" }}
|
||||
<article class="single">
|
||||
<article class="single library-entry" style="--section-color: var(--palette-ichigo)">
|
||||
<header class="single-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ with .Params.summary }}<p class="single-summary">{{ . }}</p>{{ end }}
|
||||
@@ -14,20 +14,63 @@
|
||||
</nav>
|
||||
{{ end }}
|
||||
|
||||
<div class="single-content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
{{/* Wiki-Links [[Titel]] / [[slug]] → Link auf die passende Library-Seite. */}}
|
||||
{{ $html := .Content }}
|
||||
{{ range (where site.RegularPages "Section" "library") }}
|
||||
{{ $a := printf `<a href="%s" class="wikilink">%s</a>` .RelPermalink .LinkTitle }}
|
||||
{{ $html = replace $html (printf "[[%s]]" .LinkTitle) $a }}
|
||||
{{ $html = replace $html (printf "[[%s]]" .File.ContentBaseName) $a }}
|
||||
{{ end }}
|
||||
{{/* Übrige (noch nicht angelegte) Verweise: ohne Klammern, dezent markiert. */}}
|
||||
{{ $html = replaceRE `\[\[([^\]]+)\]\]` `<span class="wikilink-missing" title="Seite existiert noch nicht">$1</span>` $html }}
|
||||
<div class="single-content">{{ $html | safeHTML }}</div>
|
||||
|
||||
{{/* Fuss: Gruppe + weitere Einträge derselben Gruppe + bearbeiten. */}}
|
||||
{{ $g := .Params.group | default "Allgemein" }}
|
||||
{{ $siblings := where (where site.RegularPages "Section" "library") "Params.group" (.Params.group) }}
|
||||
{{/* ── Siehe auch: gleiche Gruppe + geteilte Tags ── */}}
|
||||
{{ $cur := . }}
|
||||
{{ $related := slice }}
|
||||
{{ range where (where site.RegularPages "Section" "library") "Params.group" .Params.group }}
|
||||
{{ if ne .RelPermalink $cur.RelPermalink }}{{ $related = $related | append . }}{{ end }}
|
||||
{{ end }}
|
||||
{{ with .Params.tags }}
|
||||
{{ range $t := . }}
|
||||
{{ range (where site.RegularPages "Section" "library") }}
|
||||
{{ if and (ne .RelPermalink $cur.RelPermalink) (in (.Params.tags | default slice) $t) }}
|
||||
{{ $related = $related | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $related = $related | uniq }}
|
||||
{{ with $related }}
|
||||
<nav class="entry-links" aria-label="Siehe auch">
|
||||
<span class="entry-links-label">Siehe auch</span>
|
||||
<ul>{{ range . }}<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>{{ end }}</ul>
|
||||
</nav>
|
||||
{{ end }}
|
||||
|
||||
{{/* ── Erwähnt in (Backlinks): Seiten, die per Link oder [[…]] hierher zeigen ── */}}
|
||||
{{ $back := slice }}
|
||||
{{ $url := .RelPermalink }}
|
||||
{{ $tok1 := printf "[[%s]]" .Title }}
|
||||
{{ $tok2 := printf "[[%s]]" .File.ContentBaseName }}
|
||||
{{ range site.RegularPages }}
|
||||
{{ if ne .RelPermalink $url }}
|
||||
{{ $raw := .RawContent }}
|
||||
{{ if or (in $raw $url) (in $raw $tok1) (in $raw $tok2) }}
|
||||
{{ $back = $back | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ with $back }}
|
||||
<nav class="entry-links" aria-label="Erwähnt in">
|
||||
<span class="entry-links-label">Erwähnt in</span>
|
||||
<ul>{{ range . }}<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>{{ end }}</ul>
|
||||
</nav>
|
||||
{{ end }}
|
||||
|
||||
{{/* Fuss: Gruppe + zuletzt bearbeitet + bearbeiten. */}}
|
||||
<div class="entry-foot">
|
||||
<span class="entry-more">
|
||||
<strong>{{ $g }}</strong>
|
||||
{{ $others := slice }}
|
||||
{{ range $siblings }}{{ if ne .RelPermalink $.RelPermalink }}{{ $others = $others | append . }}{{ end }}{{ end }}
|
||||
{{ with $others }} · {{ range $i, $p := . }}{{ if $i }} · {{ end }}<a href="{{ $p.RelPermalink }}">{{ $p.LinkTitle }}</a>{{ end }}{{ end }}
|
||||
</span>
|
||||
<span class="entry-more"><strong>{{ .Params.group | default "Allgemein" }}</strong></span>
|
||||
{{ if .Lastmod }}<span>Zuletzt bearbeitet am {{ .Lastmod.Format "02.01.2006" }}</span>{{ end }}
|
||||
{{ with .File }}<a href="{{ site.Params.repoURL }}/_edit/branch/main/content/{{ .Path }}" rel="nofollow">bearbeiten ↗</a>{{ end }}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user