feature: Wiki — verlinktes Werkstattwissen mit Gruppen-Navigation
Neue Hugo-Sektion /wiki als 'effektives Wiki' im KISS-Sinn: - Zweispaltiges Layout: gruppierte Seitenleiste (nach Frontmatter 'group') mit Live-Filter + Inhalt mit TOC und 'zuletzt bearbeitet'/bearbeiten-Link - Übersichtsseite gruppiert alle Einträge; WIKI im Hauptmenü - Seiten ohne group landen unter 'Allgemein' (robust) - Start-Inhalte: Meta-Seite (wie es funktioniert), Typus (→ Bibliothek), Dateiablage/Benennung; Archetype setzt group/summary - Bewusst dateibasiert: jede Seite verlinkt zur Bearbeitung ins Repo Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
{{- /* Wiki-Seitenleiste: alle Wiki-Seiten nach `group` gruppiert, mit Filter.
|
||||
Seiten ohne `group` landen unter „Allgemein“. */ -}}
|
||||
{{- $cur := .RelPermalink -}}
|
||||
{{- $pages := where site.RegularPages "Section" "wiki" -}}
|
||||
{{- $groups := dict -}}
|
||||
{{- range $pages -}}
|
||||
{{- $g := .Params.group | default "Allgemein" -}}
|
||||
{{- $existing := index $groups $g | default slice -}}
|
||||
{{- $groups = merge $groups (dict $g ($existing | append .)) -}}
|
||||
{{- end -}}
|
||||
<nav class="wiki-nav" aria-label="Wiki-Navigation">
|
||||
<a class="wiki-nav-home{{ if .IsSection }} is-current{{ end }}" href="/wiki/">Übersicht</a>
|
||||
<input class="wiki-filter" type="search" placeholder="filtern…" aria-label="Wiki filtern" autocomplete="off" />
|
||||
{{- range $g, $ps := $groups }}
|
||||
<div class="wiki-nav-group">
|
||||
<div class="wiki-nav-title">{{ $g }}</div>
|
||||
<ul>
|
||||
{{- range sort $ps "Title" }}
|
||||
<li><a href="{{ .RelPermalink }}"{{ if eq .RelPermalink $cur }} class="is-current" aria-current="page"{{ end }}>{{ .LinkTitle }}</a></li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
</div>
|
||||
{{- end }}
|
||||
</nav>
|
||||
<script>
|
||||
(function () {
|
||||
if (window.__wikiFilter) return; window.__wikiFilter = 1;
|
||||
var inp = document.querySelector('.wiki-filter'); if (!inp) return;
|
||||
inp.addEventListener('input', function () {
|
||||
var q = inp.value.trim().toLowerCase();
|
||||
document.querySelectorAll('.wiki-nav-group').forEach(function (g) {
|
||||
var any = false;
|
||||
g.querySelectorAll('li').forEach(function (li) {
|
||||
var hit = li.textContent.toLowerCase().indexOf(q) > -1;
|
||||
li.style.display = hit ? '' : 'none'; if (hit) any = true;
|
||||
});
|
||||
g.style.display = any ? '' : 'none';
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
@@ -0,0 +1,42 @@
|
||||
{{ define "main" }}
|
||||
<div class="wiki">
|
||||
<aside class="wiki-side">{{ partial "wiki-nav.html" . }}</aside>
|
||||
|
||||
<article class="wiki-page">
|
||||
<header class="wiki-head">
|
||||
<p class="wiki-rubric">Wiki</p>
|
||||
<h1>{{ .Title }}</h1>
|
||||
</header>
|
||||
|
||||
<div class="single-content">{{ .Content }}</div>
|
||||
|
||||
{{ $pages := where site.RegularPages "Section" "wiki" }}
|
||||
{{ $groups := dict }}
|
||||
{{ range $pages }}
|
||||
{{ $g := .Params.group | default "Allgemein" }}
|
||||
{{ $existing := index $groups $g | default slice }}
|
||||
{{ $groups = merge $groups (dict $g ($existing | append .)) }}
|
||||
{{ end }}
|
||||
|
||||
{{ if $pages }}
|
||||
<div class="wiki-index">
|
||||
{{ range $g, $ps := $groups }}
|
||||
<section class="wiki-group">
|
||||
<h2>{{ $g }}</h2>
|
||||
<ul>
|
||||
{{ range sort $ps "Title" }}
|
||||
<li>
|
||||
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||
{{ with .Params.summary }}<span class="text-muted"> — {{ . }}</span>{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</section>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ else }}
|
||||
<p class="text-muted"><em>Noch keine Einträge — der erste entsteht im Redaktions-Editor.</em></p>
|
||||
{{ end }}
|
||||
</article>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,33 @@
|
||||
{{ define "main" }}
|
||||
<div class="wiki">
|
||||
<aside class="wiki-side">{{ partial "wiki-nav.html" . }}</aside>
|
||||
|
||||
<article class="wiki-page">
|
||||
<header class="wiki-head">
|
||||
<p class="wiki-rubric">Wiki{{ with .Params.group }} · {{ . }}{{ end }}</p>
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ with .Params.summary }}<p class="single-summary">{{ . }}</p>{{ end }}
|
||||
</header>
|
||||
|
||||
{{ $hasToC := .Params.toc | default false }}
|
||||
{{ $headers := findRE "<h[2-6]" .Content }}
|
||||
{{ if and $hasToC (ge (len $headers) 2) }}
|
||||
<nav class="toc">
|
||||
<strong>Inhalt</strong>
|
||||
<div class="toc-content">{{ .TableOfContents }}</div>
|
||||
</nav>
|
||||
{{ end }}
|
||||
|
||||
<div class="single-content wiki-content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
<footer class="wiki-foot">
|
||||
{{ 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 }}
|
||||
</footer>
|
||||
</article>
|
||||
</div>
|
||||
{{ end }}
|
||||
Reference in New Issue
Block a user